2015-11-11 1 views
2

Tout d'abord, j'ai jeté un coup d'oeil à ce question qui est exactement le même que ce que j'adresse ici. Mais le problème est le solution donné dans la question, ne fonctionne pas pour moi.Déplacer un fichier dans un dossier différent avec l'historique dans git

La solution donnée est la suivante:

git filter-branch --tree-filter "cd x; mkdir -p p/q; mv [files & sub-dirs] p/q" HEAD

pour déplacer des fichiers & subdirs sous x à x/p/q.

C'est exactement ce que je veux. Mais cela ne fonctionne pas quand j'ai essayé.

Ma structure de répertoire est:

mdwtest 

    |-src 
    | |-main 
    | | |-java 
    | | | |-a.txt 
    | |-test 
    | | |-java 

J'ai essayé cette commande à partir cmd.exe dans le répertoire mdwtest qui est mon git dépôt local. J'ai couru cmd.exe en tant qu'administrateur.

git filter-branch --tree-filter "cd D:/gittraining/mdwtest/src; mv main/java/ /test/java/" HEAD 

Mais il a donné la sortie ci-dessous cmd.exe console:

D:\gittraining\mdwtest>git filter-branch --tree-filter "cd 

D:/gittraining/mdwtest/src; mv main/java/ /test/java/" HEAD Rewrite 
09a1198eeb1bf26a1245ea00cae38f22e91fd708 (1/15)mv: cannot move 
`main/java/' to `/test/java' tree filter failed: cd 

D:/gittraining/mdwtest/src; mv main/java/ /test/java/ rm: cannot 
remove `/d/gittraining/mdwtest/.git-rewrite/revs': Permission denied 
rm: cannot remove directory `/d/gittraining/mdwtest/.git-rewrite': 
Directory not empty 

Ce que je peux sortir de c'est qu'il a un problème sur le déplacement main/java à test/java et je n » Je n'ai aucune idée de ce qui aurait pu l'empêcher de le faire.

En fait, je m'attendais à ce que le fichier src/main/java/a.txt soit déplacé vers src/test/java avec l'historique.

Alors que la solution semble avoir fonctionné pour beaucoup de gens, il semble que quelque chose ne va pas dans mon cas.

Pourriez-vous m'aider à expliquer ce qui me manque ici?

Répondre

1

mv main/java/ /test/java/ semble étrange. Il devrait être

mv main/java/ test/java/ 

(test, non /test)

Autre que cela, assurez-vous a.txt est pas ouvert dans un éditeur ou Windows Explorer.