假设我有两个分支:dev
和feature
。我已经在feature
上工作了一段时间,并将dev
多次合并到它。完成工作后,我将最新的dev
合并到feature
,并使用git rebase -i my_first_commit_in_feature_branch
启动了交互式rebase。我完成了rebase,然后我将我的分支的新版本推送到远程仓库,它说我的分支远远落后于dev
。我做错了什么,我怎么能优雅地压制我分支中的所有提交?
答案 0 :(得分:0)
在改变之前,你似乎有如下历史:
dev
↓
A - - B - - - C
\ \ \
D - E - F - G
↑
feature
在重新定位到D
之后,您最终在feature
分支上重写了一段历史记录,与A
之后所做的更改无关并合并:
dev
↓
A - B - C
\
D - H
↑
feature
您需要的是将D
和H
(或合并后的压缩提交)置于dev
所做更改的顶部:
$ git rebase dev
这应该导致树如下:
dev
↓
A - B - C
\
D - H
↑
feature
现在feature
分支超前于dev
而不是落后。
或者,您可以结帐并返回G
并在dev
上执行全新的互动式rebase,在那里您可以压缩提交内容:
$ git checkout -b temp G
$ git rebase -i dev
pick D
squash F
这样你最终会得到:
dev
↓
A - B - C
\
I
↑
temp