Lazy loaded image
如何在 Fork 仓库后同步上游更新
字数 717阅读时长 2 分钟
2025-8-20
2025-8-20
type
status
date
slug
summary
tags
category
icon
password
comment
很多时候,我们在 GitHub 上 fork 了别人的项目,之后自己的仓库就和上游仓库(原始仓库)脱节了。如果上游有了更新,我们需要把这些更新合并到自己的仓库中,同时还要保持自己开发的分支是最新的。下面是完整的操作流程。

一、确认远程仓库

进入本地项目目录,查看当前远程:
通常你会看到:
  • origin → 你的 fork 仓库
  • 还没有 upstream → 上游原始仓库
如果没有 upstream,需要手动添加:
再次检查:
应该能看到 originupstream 两个远程。

二、更新主分支 (main/master)

  1. 切换到本地主分支:
  1. 获取上游更新:
  1. 合并上游更新到主分支:
如果你希望提交历史干净,可以选择 rebase
  1. 推送到你自己的 fork 仓库:
此时,你的主分支已经和上游同步。

三、同步功能分支 (your-feature-branch)

如果你有一个开发分支(例如 feature-1),需要让它基于最新的主分支。
  1. 切换到功能分支:
  1. 把主分支的更新合并进来:
这样会生成一个 merge commit,保留主分支的更新和分支的历史。
如果希望线性历史(没有 merge commit),可以用 rebase
  1. 推送分支到你的 fork:
⚠️ 如果用了 rebase,需要强制推送:

四、merge 和 rebase 的区别

  • merge:保留所有分支历史,产生一个合并提交,历史可能比较「乱」,但信息完整。
  • rebase:把你的提交「平移」到最新主分支之后,历史干净,但会修改提交 ID。
通常:
  • 团队协作推荐 merge(安全)。
  • 个人分支推荐 rebase(历史清爽)。

五、常用命令汇总

第一次配置:
每次上游更新后:
同步到自己的功能分支:

六、流程图(文字版)


✅ 总结:
  • 添加 upstream 远程 → 用于获取上游更新
  • 主分支先和上游同步
  • 再让功能分支基于最新主分支
  • 根据需要选择 merge 或 rebase

评论
Loading...