如何将GitHub fork仓库同步到指定commit或GitHub release版本
前置操作:配置上游远程仓库
先检查本地仓库已绑定的远程地址:git remote -v
如果输出中没有名为upstream的上游仓库记录,执行添加操作:git remote add upstream <上游原项目的Git地址>
添加后再次执行git remote -v,确认能看到upstream对应的fetch、push两条记录即可。
场景1:同步到上游指定Release版本
GitHub Release一般对应上游仓库的特定标签(tag),操作步骤如下:
- 拉取上游所有标签信息:
git fetch upstream --tags - 切换到你需要更新的本地分支:
git checkout <待更新的本地分支名> - 硬重置本地分支到目标Release对应的标签,使本地分支内容完全对齐该Release版本:
git reset --hard upstream/<目标Release对应的标签名>
注意:硬重置会丢弃当前本地分支上所有未提交改动,以及和上游该版本不一致的提交,如果有自行修改的内容需要保留,建议提前将改动提交备份到其他分支,或切换新分支执行同步操作 - 将对齐后的分支推送到你自己的fork远程仓库:
git push origin <待更新的本地分支名> --force
场景2:同步到上游指定Commit
如果需要对齐到某一个特定的提交节点,操作逻辑和同步标签类似:
- 先拉取上游所有提交记录:
git fetch upstream - 切换到需要更新的本地分支:
git checkout <待更新的本地分支名> - 硬重置到目标Commit:
git reset --hard <目标Commit的哈希值> - 推送到自己的fork远程仓库:
git push origin <待更新的本地分支名> --force
补充:需要保留自有修改的场景
如果你在fork的分支上有自己的提交改动,不想被硬重置丢弃,可以用rebase操作将你的改动迁移到上游指定版本的基础上:
- 拉取上游对应版本信息后执行:
git rebase upstream/<目标标签名/目标Commit哈希> - 按照终端提示解决完所有冲突后,执行推送即可。如果本地分支和远程fork分支有提交差异,需要加
--force参数完成强制推送。
内容的提问来源于stack exchange,提问作者David I
相关产品推荐
相关产品推荐

