我的公司使用 SVN 存储库,但我想使用 Git。目前我正在使用 git-svn,但是当我在 Git 中移动或重命名包含多个文件的目录并“git svn dcommit”这样的更改时,在 SVN 存储库中,这会导致单个文件移动:
Changed paths:
D /directory/file1
D /directory/file2
D /directory/file3
D /directory/file4
...
A /renamedDirectory
A /renamedDirectory/file1 (from /directory/file1:67918)
A /renamedDirectory/file2 (from /directory/file2:67918)
A /renamedDirectory/file3 (from /directory/file3:67918)
A /renamedDirectory/file4 (from /directory/file4:67918)
....
相反,我希望看到类似的东西:
Changed paths:
D /directory
A /renamedDirectory (from /directory:67918)
即完整目录重命名。有什么办法可以解决这个问题吗?
最佳答案
在 git 中重命名(移动)目录时,git 仅移动文件,而不是目录。
如果我将名为 pdfs
的文件夹重命名为 pdfs2
$ git mv pdfs pdfs2
$ git status
renamed: pdfs/filea -> pdfs2/filea
renamed: pdfs/fileb -> pdfs2/fileb
所以我认为 git 是这样工作的,所以 git-svn 也是这样工作的。
git 没有办法说“我 100% 确定这是一个完整的目录移动操作”,因此无法将其转换为 SVN 作为目录移动。 Git 只知道/关心文件。
另外:你会注意到,如果你尝试提交一个空目录,git 会提示:
$ mkdir afolder
$ git add afolder && git commit -m "Added afolder"
On branch master
nothing to commit, working tree clean
这又是因为 git 不关心目录,只关心文件。
关于git - 使用 git-svn 移动/重命名目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313692/