将文件连同 git 中的历史记录一起移动到不同的文件夹
Moving a file to different folder along with history in git
首先,我看了一下问题中给出的这个question which is exactly the same what I am addressing here. But the problem is the 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
我在 mdwtest
目录中的 cmd.exe
中尝试了此命令,该目录是我的 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
。
虽然该解决方案似乎对很多人都有效,但我的情况似乎出了问题。
你能帮我解释一下我在这里遗漏了什么吗?
mv main/java/ /test/java/
好像很奇怪。应该是
mv main/java/ test/java/
(test
, 不是 /test
)
除此之外,请确保 a.txt
未在某些编辑器或 Windows 资源管理器中打开。
首先,我看了一下问题中给出的这个question which is exactly the same what I am addressing here. But the problem is the 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
我在 mdwtest
目录中的 cmd.exe
中尝试了此命令,该目录是我的 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
。
虽然该解决方案似乎对很多人都有效,但我的情况似乎出了问题。
你能帮我解释一下我在这里遗漏了什么吗?
mv main/java/ /test/java/
好像很奇怪。应该是
mv main/java/ test/java/
(test
, 不是 /test
)
除此之外,请确保 a.txt
未在某些编辑器或 Windows 资源管理器中打开。