首先,我看一下这个question,这与我在这里解决的完全相同。但问题是问题中给出solution,对我不起作用。
给出的解决方案是:
git filter-branch --tree-filter "cd x; mkdir -p p/q; mv [files & sub-dirs] p/q" HEAD
移动文件&在x
到x/p/q
下的子目录。
这正是我想要的。但是当我尝试时这不起作用。
我的目录结构是:
mdwtest |-src | |-main | | |-java | | | |-a.txt | |-test | | |-java
我在cmd.exe
目录中的mdwtest
尝试了此命令,这是我的git本地存储库。我以管理员身份运行cmd.exe
。
git filter-branch --tree-filter "cd D:/gittraining/mdwtest/src; mv main/java/ /test/java/" HEAD
但它在cmd.exe
控制台中提供了以下输出:
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
我可以解决的问题是,它在移动main/java
到test/java
方面存在一些问题,而且我没有任何线索可以阻止它这样做。
实际上,我希望src/main/java/a.txt
文件与历史记录一起移动到src/test/java
。
虽然这个解决方案似乎对许多人有用,但在我的情况下看起来似乎出了问题。
你能帮我解释一下我在这里缺少什么吗?
答案 0 :(得分:1)
mv main/java/ /test/java/
似乎很奇怪。它应该是
mv main/java/ test/java/
(test
,而非/test
)
除此之外,请确保在某些编辑器或Windows资源管理器中未打开a.txt
。