【问题标题】:Merge branch, but with one modified commit合并分支,但有一个修改的提交
【发布时间】:2014-05-23 14:26:19
【问题描述】:
我有一个来自合作者的 git 分支,我想合并它。问题是早期提交中有一个错误(例如必须更改提交消息或必须修复某些 EOL 字符)。
如果我在本地分支中挑选提交然后进行交互式 rebase + 编辑,我需要 2 分钟来解决这个问题。
问题是,如果我这样做了,那么协作者的原始分支将不再被各种工具视为合并,首先是 GitHub。
是否有允许我将分支与修复合并并仍将原始分支视为合并的工作流?
【问题讨论】:
标签:
git
merge
branch
branching-and-merging
【解决方案1】:
如果您想保留合作者的原始分支,请先执行您的cherry-pick+rebase,然后在git merge -s ours badbranch 中添加“正确的错误空白”消息,然后如果您还没有在您的主分支上,请正常合并到该分支。
【解决方案2】:
这是我合并需要小修复的分支的工作流程,改编自 accepted solution。
我们要合并的分支是collaborator/fix-bug-10。
首先,我们建立一个本地分支,并挑选协作者分支中的所有提交。
git checkout master
git branch collaborator-fix-bug-10 # hyphen instead of slash
git checkout collaborator-fix-bug-10
git cherry-pick COMMIT1
git cherry-pick COMMIT2
git cherry-pick COMMIT2
然后我们解决问题。
git rebase -i master # show commits between HEAD and master
# fix problems
git rebase --continue
之后,我们将协作者的分支与我们的分支“合并”。这是公认解决方案的要点。
git merge --strategy ours collaborator/fix-bug-10
最后我们将本地分支合并到我们的主分支中。
git checkout master
git merge --ff-only collaborator-fix-bug-10
git branch --delete collaborator-fix-bug-10
【解决方案3】:
cherry-pick 是从哪里进入的呢?在原始分支上进行交互式 rebase,编辑提交消息,然后正常合并分支。