如何解决Git提示‘分支比origin/master超前1次提交’的问题?
解决本地fork仓库同步原仓库后超前的问题
嘿,我来帮你理清楚这个问题!你现在遇到的情况是:拉取了原仓库(orig)的更新后,本地master分支比你自己fork的仓库(origin/master)多了1个commit——这个commit大概率是Git自动创建的合并commit,因为你用了默认的git pull(默认是merge模式)。
下面分两种场景给你解决方案:
场景1:本地没有需要保留的自定义修改,只想完全和原仓库同步
这种情况直接“硬重置”就行,一步到位:
- 先确保你当前在master分支:
git checkout master - 把本地master分支直接重置到原仓库master的最新状态(注意:这个操作会丢弃本地所有和原仓库不一致的内容,确认没有要保留的内容再执行!):
git reset --hard orig/master - 最后强制推送到你自己的fork仓库,覆盖掉fork上的旧内容(因为现在本地分支和fork的分支历史不一致,普通推送会失败):
git push origin master --force
场景2:本地有自己的修改需要保留,同时同步原仓库的更新
如果不想保留那个多余的合并commit,想用更干净的提交历史同步,试试rebase方式:
- 如果本地有未提交的修改,先暂存起来(之后可以恢复):
git stash - 切换到master分支:
git checkout master - 拉取原仓库的更新并将本地提交“重放”到原仓库最新提交的后面,这样不会产生合并commit:
git pull orig master --rebase - 如果之前暂存了修改,现在恢复:
git stash pop - 最后推送到你自己的fork仓库就可以了:
git push origin master
另外,以后同步原仓库的时候,建议直接用git pull orig master --rebase,这样能保持提交历史更整洁,避免频繁出现这种“超前1个commit”的提示~
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

