假设我有以下情况
1->2->3 (continued-work)
/
X->Y (feature-branch)
/
A->B->C->D (master)
我在继续工作和功能分支之间来回跳跃,因为我在处理代码审查反馈和建立在该工作之间交替。在功能分支的工作签署后,我想将它们压缩到一个提交(" Z"),关闭master并合并,所以master看起来像
A->B->C->D->Z (master)
然而这样做会让我继续在一个糟糕的地方工作,因为我已经与它的祖先搞混了,并且与它进行任何类型的合并或重组都会导致各种各样的合并冲突。有没有"权利"方式从我的开始场景到
1->2->3 (continued-work)
/
A->B->C->D->Z (master)
答案 0 :(得分:1)
git rebase --onto是你的答案。
当你压缩你的提交时,请在另一个分支中进行。
git checkout feature-branch
git checkout -b squashed-feat
git rebase <sha A> -i
然后在主人
之上重新定位git rebase master
这将使你成为上面定义的第二步:
A->B->C->D->Z (master)
然后我会用以下内容重新提交最后一次提交:
git rebase --onto master feature-branch continued-work
我们在另一个分支中执行第一个压缩的rebase,仍然具有对feature-branch
的良好分支引用。否则,我们仍然可以这样做但只引用功能分支所在的sha-id而不是分支名称feature-branch