eme*_*ais 6 git version-control rebase branching-and-merging
我目前有一个稳定的主分支,以及在某些类上有很多重大变化的分支.
在使用"更改"分支时,我发现了一个我想在主分支上修复的错误.
我通过更改主机上的一行代码来修复它.
现在,我想将此修补程序添加到"更改"分支.
阅读一些答案,有人建议最好的选择是Rebase.
但是,在应用git rebase master"更改"分支时,git似乎认为其中一个冲突文件是一个完全不同的文件.使用mergetools --tool diffuse,我得到以下诊断:

正如您所看到的,第一个文件中有一个更改,第二个文件中有大量更改,并且显然没有任何重叠.
我的问题是:有没有办法将一个小的变化合并到一个重大改变的分支,而不必花费大量精力解决冲突?如果没有,处理这种情况的最佳方法是什么?
您可以使用 user3387542 建议的cherry-pick方法,这是一个很好的方法,但不是唯一的方法。另一个是,由于该错误也存在于主分支上,因此两者的最新合并基础也存在该错误。
git checkout $(git merge-base master changes)
# fix bug at the last branchpoint
git commit -m 'fix bug #27182'
git branch bugfix-27182
git checkout master
git merge bugfix-27182
git checkout changes
git merge bugfix-27182
# git branch -d bugfix-27182
Run Code Online (Sandbox Code Playgroud)
无论哪种方式都有缺点,您需要平衡提交图混乱与清晰的可追溯性(很容易说git branch --contains $somecommit找出哪些分支包含修复程序,但不那么容易也不太确定寻找等效的提交,但看起来更干净的历史记录。
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |