GitHub fork 的项目怎么和原仓库同步
FreeGuideOnline
最新
2026-07-04
bash git clone https://github.com/你的用户名/仓库名.git cd 仓库名
### 2. 添加上游仓库(upstream)
只做一次,将原作者的仓库设置为远程上游源。
```bash
git remote add upstream https://github.com/原作者/仓库名.git
验证是否添加成功:
git remote -v
你应该看到类似输出:
origin https://github.com/你的用户名/仓库名.git (fetch)
origin https://github.com/你的用户名/仓库名.git (push)
upstream https://github.com/原作者/仓库名.git (fetch)
upstream https://github.com/原作者/仓库名.git (push)
3. 拉取上游仓库的最新提交
确保当前在你的主分支(假设为 main)上:
git checkout main
从上游仓库获取所有分支的更新:
git fetch upstream
4. 合并上游更新到本地分支
将上游的 main 分支合并到你当前的 main:
git merge upstream/main
如果一切顺利,Git 会显示合并成功。若出现冲突,请参考下文“处理合并冲突”小节。
5. 推送更新到你的远程 Fork
git push origin main
现在你的 GitHub Fork 仓库就已经与原仓库同步完成。
处理合并冲突
当你在 Fork 中修改了原仓库也同时改动的同一文件时,merge 命令会提示冲突。解决方法:
- 打开冲突文件,找到
<<<<<<<、=======、>>>>>>>标记,手动编辑保留想要的内容。 - 保存文件后,执行:
git add . git commit -m "解决合并冲突" git push origin main
如果你希望用上游版本完全覆盖你本地的修改,可以执行:
git reset --hard upstream/main
git push origin main --force
警告:
--force会丢失你在 Fork 上的所有提交,请确认后再使用。
最佳实践与常见问题
保持 Fork 干净的建议
- 尽量在单独的特性分支上进行修改,主分支只用来同步上游,可以大幅减少合并冲突。
- 定期同步(例如每周一次),避免代码差距过大。
- 同步前先在本地创建一个备份分支:
git branch backup-main,以便出错时恢复。
为什么网页端显示“Fetch upstream”灰色不可用?
- 常见原因:你的 Fork 已经是最新的,或者当前分支不是默认分支。
- 也可能上游仓库被删除或设为私有。
- 换用命令行同步即可解决大部分情况。
如何只同步某个分支?
使用命令行时,你可以指定任意分支:
git fetch upstream 分支名
git merge upstream/分支名
如果本地还没有该分支,可先创建并切换:
git checkout -b 分支名 upstream/分支名