如何同步更新 GitHub 上 fork 的仓库

同步 fork 仓库:git remote add upstream <原仓库地址> 一次配置,之后 git fetch upstream && git merge upstream/main(或 rebase)再 push 到自己 fork。GitHub 网页也有 Sync fork 按钮一键同步。

最佳实践
Git 分支协作与合并示意

命令行三板斧:① 添加原仓库为 upstream 远程(一次);② git fetch upstream;③ 合并 git merge upstream/main 并 push 到你的 fork。GitHub 网页端更简单:fork 仓库主页的 Sync fork 按钮点一下即可。

命令行方式

# 1. 添加上游远程(只做一次)
git remote add upstream https://github.com/原作者/仓库.git

# 2. 同步流程(之后每次)
git fetch upstream
git checkout main
git merge upstream/main        # 或 git rebase upstream/main
git push origin main           # 推到自己的 fork

网页方式

打开你的 fork 页面 → 右上 Sync fork → Update branch。自己的提交不一定阻止网页同步;若存在合并冲突,需按 GitHub 提示通过 pull request 或命令行解决。

保持功能分支同步

git checkout feature-x
git rebase upstream/main       # 个人未共享分支可 rebase;已发布分支需先协调历史改写

常见问题(FAQ)

Q:merge 报 "refusing to merge unrelated histories"?

先核对 upstream 是否指向正确仓库,并检查是否为缺少历史的浅克隆。普通 fork 分叉仍有共同祖先,不应直接使用 --allow-unrelated-histories。保留本地工作后再决定合并、rebase,或明确放弃改动并对齐上游。

Q:能自动保持同步吗?

可用 GitHub Actions 定时任务(schedule cron)跑 fetch+merge+push,但需配置写入权限、分支保护及冲突处理;定时触发可能延迟,不能保证严格准点。

Q:fork 的仓库改了默认分支名怎么办?

上游从 master 改 main 后,先 git fetch upstream,再用 git remote set-head upstream -a 刷新 upstream/HEAD;它不会重命名本地分支或修改其跟踪关系,需要另行调整。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台