几周前我创建了一个功能分支,我正在开发中。有几个提交和一些新文件。我可以从master分支改为我的开发分支,反之亦然,一切都很好。
今天我尝试将我的分支合并回主分支。因此我改为掌握并致电
git merge mydevbranch
导致了几次合并冲突。我用
解决了这些冲突git mergetool
但是现在,我意识到,我必须提交的结果中缺少一些文件。 所以有两个问题:合并后我的硬盘上不应该存在所有合并的项目吗?如何继续获取真正的合并结果(master +我的功能分支)。
答案 0 :(得分:4)
经过一番调查后,我发现了以下情况。在创建分支之前,我在master上添加了该文件(这就是为什么它在我的dev-branch中)。但现在是疯狂的事情:该文件后来被同事删除,但没有任何状态信息。状态日志仅显示文件的创建。所以合并是正确的,但由于缺少状态信息,我无法理解。
答案 1 :(得分:1)
检查藏匿物中是否有任何内容
git stash pop
对于新文件,请确保先添加它们(git status应列出它们)
git add
关于Git的最佳文档,包括分支:http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging
答案 2 :(得分:1)
关于你的第一个问题:合并后不应该在我的硬盘上存在所有合并的项目吗?
我在自己的环境中做了一个实验。它具有与您相同的效果。因此,我的结论是,如果您合并具有相同文件的develop分支,则在主分支中删除的文件将不会返回到主分支中。
我认为这是有道理的。假设您已删除主分支中的大量不需要的文件并提交这些删除。然后合并包含所有这些不需要的文件的develop分支。如果“增加了”所有那些不需要的文件到主分支再次,你可能会不高兴看到这种情况发生,因为你必须花时间去再次删除它们。
答案 3 :(得分:0)
不可能以这种方式丢失文件。
你可以试试这个替代方案:
git checkout mydevbranch
# following command to find the previous state easier if you are not familiar with reflog
git branch tmp-checkpoint
git rebase master
然后解决冲突。如果文件仍然缺失,您可以使用git bisect(参见手册页)查找它们消失的位置