You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git pull --rebase工作原理及推送后远程提交历史咨询

问题

我参与一个项目,克隆了仓库my_repo,其提交历史为A->B->C。

  • 第1天:本地提交了D但未推送;
  • 第2天:有人提交E并推送到远程,远程提交历史变为A->B->C->E;
  • 第3天:执行git pull --rebase后,本地提交历史变为A->B->C->E->D,但预期是按时间顺序的A->B->C->D->E。

请问:若推送本地变更,远程提交历史会如何?


解答

推送后的远程历史

推送完成后,远程仓库的提交历史会和你当前本地的历史完全一致,即:A->B->C->E->D。

关键原因

git pull --rebase的核心逻辑不是按提交时间排序,而是将你本地未推送的提交(D),以远程最新分支(A->B->C->E)为基准,重新生成提交并追加到该分支的顶端。这个过程相当于把D的修改内容"移植"到E之后,所以本地历史变成A->B->C->E->D,推送后远程会同步这个状态。

额外提示

如果在你推送前,没有其他开发者向远程推送新的提交,这次推送可以顺利完成;但如果远程已经产生了新的提交,你需要再次执行git pull --rebase处理可能的冲突后,才能完成推送。

内容的提问来源于stack exchange,提问作者tue2017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:10:12