Git fork仓库始终显示领先上游提交 如何同步重置fork及本地仓库
操作方案
你之前操作失效的核心原因:git reset --hard origin/master里的origin指向你自己的fork仓库B,当时B的master本身就带那2个多余提交,重置到这个状态再强推自然不会改变仓库状态;另外git checkout original报错是正常的,original是远程仓库标识,不是可直接检出的分支名,不需要执行这步。
以下操作会完全清空本地所有未保存修改、清除fork仓库B上多余的2个提交,最终让B和原始仓库A、本地仓库和B完全对齐:
- 进入本地B仓库的目录,先检查已配置的远程仓库列表
如果列表里没有指向原始仓库A的远程条目(通常命名为git remote -voriginal或upstream),执行以下命令添加,把命令里的A仓库git地址替换成原始仓库A的实际克隆地址:
如果之前配置过错误的original地址,先删除旧配置再重新添加:git remote add original A仓库git地址git remote remove original git remote add original A仓库git地址 - 拉取原始仓库A的最新分支和提交数据
git fetch original - 切换到本地主分支,硬重置到原始仓库A的主分支状态
如果你的主分支是master就执行:
如果你的主分支是main就把上面命令里的git checkout master git reset --hard original/mastermaster替换为main。这步执行后本地仓库的代码、提交记录会和原始仓库A完全一致,所有本地修改、多余提交都会被清除。 - 强制推送本地状态到fork仓库B,覆盖B上的旧提交记录
主分支为master时执行:
主分支为main时替换对应分支名即可。git push --force origin master
验证结果
操作完成后刷新fork仓库B的页面,之前显示的This branch is 2 commits ahead of A/master提示会消失,此时远程B和原始A、本地仓库和远程B的状态完全一致,新建pull request时不会再自动附带那2个多余提交。
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

