在git

时间:2015-11-11 09:37:41

标签: git git-filter-branch

首先,我看一下这个question,这与我在这里解决的完全相同。但问题是问题中给出solution,对我不起作用。

给出的解决方案是:

  

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

移动文件&在xx/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/javatest/java方面存在一些问题,而且我没有任何线索可以阻止它这样做。

实际上,我希望src/main/java/a.txt文件与历史记录一起移动到src/test/java

虽然这个解决方案似乎对许多人有用,但在我的情况下看起来似乎出了问题。

你能帮我解释一下我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

mv main/java/ /test/java/似乎很奇怪。它应该是

mv main/java/ test/java/

test,而非/test

除此之外,请确保在某些编辑器或Windows资源管理器中未打开a.txt