背景:
我有一个功能分支A,它比我的开发分支领先一个提交:
3 (develop, origin/develop)
| 2 (A, origin/A) some feature branch commit
|/
1 some commit
然后我将A分支变基到develop分支 (git checkout A
, git rebase develop
),这样我就得到了:
2' (A) some feature branch commit
|
3 (develop, origin/develop)
| 2 (origin/A) some feature branch commit
|/
1 some commit
现在我不能再将A
推送到origin
,因为Git将拒绝非快进提交。它告诉我首先拉取远程更改。
当我这样做然后推送时,我最终会得到以下历史记录:
4 (A, origin/A) merged origin/A into A
|\
2'| some feature branch commit
| |
3 | (develop, origin/develop)
| 2 (origin/A) some feature branch commit
|/
1 some commit
最终我得到了一个包含2
次提交的历史记录--尽管它们执行的是相同的操作。
问题
- 我如何防止这种情况发生?我如何在远程仓库上镜像我的本地变基操作?
- 我该如何解决这种情况?最优雅的方式是什么,以清理历史记录并仅显示一个提交?