处理git合并中添加和删除的文件

时间:2015-03-29 10:11:46

标签: git

在我的存储库中,我有两个分支:master和dev。 dev分支上有很多活动,我需要将它合并回master,但是我找不到正确的方法。

如果我做一个简单的git merge dev,那么它会在只在dev分支中更改的文件中产生冲突。更糟糕的是,如果我在合并工具中打开这些文件,那么“合并”版本将包含来自主分支的内容。

git merge dev -X theirs越来越接近,这些文件现在已正确合并。我遇到的其余问题是它没有正确处理已在分支中添加和删除的文件。对于已在分支中添加的文件,我遇到了这种冲突:

  

CONFLICT(修改/删除):在HEAD中删除my_added_file并进行修改   在开发中。 my_added_file的版本dev留在树中。

这不是一个真正的问题,因为我可以将其解析为'modify',它采用分支版本。问题是在分支中删除的文件未在合并中删除。我错过了什么?


更新:好的,我可以看出为什么git很困惑。不知何故,master中的随机提交已成为dev中完全不相关的提交的父级。我该如何解决这个问题?

蓝线是dev,紫线是master。

git log

1 个答案:

答案 0 :(得分:0)

这可能是更好的方法,但这是我最终做的事情。存储库托管在Bitbucket上,因为我不得不重写历史记录,这使得事情变得更具挑战性。

  1. 重写分支以删除有问题的父级:git filter-branch --parent-filter "sed 's/-p 12eed45e184246c0553e410734f83d226bf9bd4f//'" master
  2. master分支重命名为master_new
  3. master_new推送到Bitbucket
  4. 将Bitbucket上的主分支设置为master_new
  5. 删除Bitbucket上的master
  6. 在本地删除origin/master
  7. master_new重命名为master本地
  8. master推送到Bitbucket
  9. 将Bitbucket上的主分支设置为master
  10. 删除Bitbucket上的master_new
  11. 让其他人进行新的结帐
  12. 在此之后,我能够正常完成合并。