type
status
date
slug
summary
tags
category
icon
password
comment
很多时候,我们在 GitHub 上 fork 了别人的项目,之后自己的仓库就和上游仓库(原始仓库)脱节了。如果上游有了更新,我们需要把这些更新合并到自己的仓库中,同时还要保持自己开发的分支是最新的。下面是完整的操作流程。
一、确认远程仓库
进入本地项目目录,查看当前远程:
通常你会看到:
origin
→ 你的 fork 仓库
- 还没有
upstream
→ 上游原始仓库
如果没有
upstream
,需要手动添加:再次检查:
应该能看到
origin
和 upstream
两个远程。二、更新主分支 (main/master)
- 切换到本地主分支:
- 获取上游更新:
- 合并上游更新到主分支:
如果你希望提交历史干净,可以选择 rebase:
- 推送到你自己的 fork 仓库:
此时,你的主分支已经和上游同步。
三、同步功能分支 (your-feature-branch)
如果你有一个开发分支(例如
feature-1
),需要让它基于最新的主分支。- 切换到功能分支:
- 把主分支的更新合并进来:
这样会生成一个 merge commit,保留主分支的更新和分支的历史。
如果希望线性历史(没有 merge commit),可以用 rebase:
- 推送分支到你的 fork:
⚠️ 如果用了 rebase,需要强制推送:
四、merge 和 rebase 的区别
- merge:保留所有分支历史,产生一个合并提交,历史可能比较「乱」,但信息完整。
- rebase:把你的提交「平移」到最新主分支之后,历史干净,但会修改提交 ID。
通常:
- 团队协作推荐 merge(安全)。
- 个人分支推荐 rebase(历史清爽)。
五、常用命令汇总
第一次配置:
每次上游更新后:
同步到自己的功能分支:
六、流程图(文字版)
✅ 总结:
- 添加
upstream
远程 → 用于获取上游更新
- 主分支先和上游同步
- 再让功能分支基于最新主分支
- 根据需要选择 merge 或 rebase
- 作者:王博霖
- 链接:https://www.wbolyn.com//article/255a91b5-8f66-81d9-91d8-e6783a55c330
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。