git - 将小变化 merge 到分支

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

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

在使用“changes”分支时,我发现了一个错误,我也想在 master 分支上修复它。

我通过更改 master 上的一行代码来修复它。

现在,我想将此修补程序也添加到“更改”分支中。

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

不过,当在“更改”分支上应用 git rebase master 时,git 似乎考虑了其中一个 冲突文件 与以前完全不同的文件。使用 mergetools --tool diffuse,我得到以下诊断信息:

如您所见,第一个文件中有一个更改,第二个文件中有大量更改,显然任何内容之间都没有重叠。

我的问题是:有没有一种方法可以将一个小改动 merge 到一个改动很大的分支中,而不必花费大量精力来解决冲突?如果不是,处理这种情况的最佳方法是什么?

最佳答案

您可以使用 user3387542 建议的 cherry-pick 方法,这是一个很好的方法,但不是唯一的方法。另一个是,由于该错误也存在于 master 分支上,因此两者的最新 merge 基础也存在。

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 很容易找出哪些分支包含修复,但并不容易也不一定要寻找等效的提交,而是寻找更清晰的历史记录。

关于git - 将小变化 merge 到分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461813/

相关文章:

git LFS : Where are the files stored before they are pushed?

git - 如何在终端右侧显示 git 状态信息?

git - 如何重命名带有子模块的 git 存储库?

svn - github中的私有(private)文件夹

SVN分支比较

混帐 : Merge multiple commits from one branch into another

git - merge 与我自己的冲突

git - 如何将文件重置或还原为特定修订版?

git - 哪个版本控制允许文件级别的访问权限?

git:将子树从一个分支 merge 到另一个分支