将小变化合并到分支机构中

时间:2014-12-13 17:46:55

标签: git version-control branching-and-merging rebase

我目前有一个稳定的主分支,以及在某些类上有很多重大变化的分支。

使用"更改"我发现了一个我想在主分支上修复的错误。

我通过更改主代码中的一行代码来修复它。

现在,我希望将此修补程序添加到"更改"分支。

Reading some answers,有人建议最好选择Rebase。

git rebase master应用于"更改"但是,git似乎考虑了其中之一 冲突文件是一个完全不同的文件。使用mergetools --tool diffuse,我得到以下诊断:

正如您所看到的,第一个文件中有一个更改,第二个文件中有大量更改,而且显然没有任何重叠。

我的问题是:有没有办法将小变更合并到一个重大改变的分支中,而不必花费大量精力解决冲突?如果没有,那么处理这种情况的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

你可以使用用户推荐的樱桃挑选方法,这是一个很好的方法,只是不是唯一的方法。另一个原因是,由于主分支上也存在错误,因此两者的最新合并基础也有。

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

无论哪种方式存在缺点,你都在平衡提交图杂乱与清晰的可追溯性(很容易说git branch --contains $somecommit找出哪些分支包含修复,不是那么容易也不确定寻找等效的提交但是一个更清洁的历史。

答案 1 :(得分:2)

看看命令git cherry-pick。这里有更多细节:

http://git-scm.com/docs/git-cherry-pick

我们经常使用它,将错误修正复制到包含不同版本的其他分支。这是一个很棒的功能。