1

我尝试合并两个分支,比如br2into br1(on br1 git merge br2)。1.txt是两个分支上都存在的文件。在br2这个文件被移动到另一个目录1.txt现在在sub/1.txt. 合并完成后,我1.txtbr1:1.txt和中有两个文件sub/1.txt,这很奇怪。

如果我应用提交,则将1.txt带有cherry-pick文件的移动文件正确移动到子目录。

为什么在合并期间不将其移动(而是复制)到子目录中?

$ git --version
git version 1.8.1.1
4

2 回答 2

2

我找到了答案。合并基础有问题。基本上从头到合并库的差异不包含文件删除,这就是为什么 git 使用cherry pick 删除文件而没有合并的原因。

于 2013-09-06T21:34:35.200 回答
1

也许您没有明确删除 br2 上的文件?

移动文件的常用方法是使用 git mv。那将是:

git checkout br2
git mv 1.txt sub # Moving 1.txt to sub/ using git mv command
git commit

git checkout br1 
git merge br2    # You should see now the file 1.txt only on sub/

如果你做了类似的事情,一种可能性是由于某种原因 1.txt 被 br1 而不是 br2 上的某个提交“引入”到顶部文件夹中,因此在这些分支之间进行合并将使它们同时保留。

如果您发布git log <hash-of-commit-where-you-moved-the-file> --stat --pretty=oneline --abbrev-commit和/或git log 1.txt在不应该在的分支上发布,也许我可以更好地理解。

于 2013-08-13T03:34:55.990 回答