所以我有一个主人和一个bugfix分支的情况继续它。我尝试在master上压缩一些提交,然后在它上面修改bugfix但是我遇到了合并冲突。这样做的正确方法是什么?我在当地工作,没有遥控器。
看起来像这样:
A - B - C - D - E - F [master]
\
G - H - I - J - K [bugfix]
我想压制A - B - C - D - E - F并且仍然有错误修复继续被压扁的主分支。
答案 0 :(得分:4)
Jubob关于共享历史的观点是一个非常重要的观点,因为强烈反对重新定位或压缩共享提交。
我将假设您正在使用本地提交。
假设您从这开始:
[master] A---B---C---D
\
[bugfix] 1---2---3
您决定将B
,C
和D
压入新的提交D'
[master] A---D'
\
[bugfix] B---C---D---1---2---3
请注意,提交B
,C
和D
仍保留在bugfix
分支中。如果您只是将bugfix
重新绑定到master
,Git会尝试这样做:
[master] A---D'
\
[bugfix] B---C---D---1---2---3
但B
,C
和D
引入的更改已包含在D'
中。你真正想要的是:
[master] A---D'
\
[bugfix] 1---2---3
您可以使用rebase
的--onto
选项完成此操作:
git rebase --onto master D bugfix
D
应该是bugfix
中的最新提交,在重新定位时 不应包含在内。