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?