在我的存储库中,我有两个分支: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。
答案 0 :(得分:0)
这可能是更好的方法,但这是我最终做的事情。存储库托管在Bitbucket上,因为我不得不重写历史记录,这使得事情变得更具挑战性。
git filter-branch --parent-filter "sed 's/-p 12eed45e184246c0553e410734f83d226bf9bd4f//'" master
master
分支重命名为master_new
master_new
推送到Bitbucket master_new
master
origin/master
master_new
重命名为master
本地master
推送到Bitbucket master
master_new
在此之后,我能够正常完成合并。