菜单
git fork后同步上游源项目的更新

这个属于参与开源项目必备技能了🌟

开源项目贡献流程

graph LR
  A[官方仓库 upstream] --> |fork| B[你的仓库 origin]
  A --> |更新上游 (本篇文章) | C[本地仓库]
  B --> |拉取 clone/pull| C
  C --> |推送 git push origin| B
  B --> |向 upstream 提 PR| A

一、确认upstream

首先保证本地仓库的upstream是源项目的URL,若没有则添加

git branch -vv #查看分支状态
git remote add upstream https://github.com/user/repo.git #设置原始上游项目仓库

二、更新

然后利用fetchmerge合并upstreammain分支

git fetch upstream
git merge upstream/main

此时本地的main分支就更新至upstreammain版本。然后利用push命令将本地分支覆盖到 git 远程分支上

git push origin main:main

说明

有些人可能对远程的操作命令有点迷糊,这里简单解释一下。

originupstream 的区别

1、核心用途不同

  • origin\ 指向你自己的远程仓库(通常是 fork 或直接创建的仓库)。\ 这是你推送代码的主仓库,用于:

    • 推送本地提交 git push origin main
    • 拉取自己的最新代码 git pull origin main
      
      # 示例:关联个人仓库
      git remote add origin https://github.com/yourname/repo.git

upstream\ 指向原始项目仓库(如开源项目官方仓库)。\ 这是你同步官方更新的仓库,用于:

  • 获取官方最新代码 git fetch upstream
  • 合并官方更新到本地分支
# 示例:关联官方仓库
git remote add upstream https://github.com/official/repo.git

2、权限与操作差异

特性 origin (个人仓库) upstream (官方仓库)
推送权限 ✅ 可直接推送代码 ❌ 通常无推送权限(只读)
拉取来源 你的个人远程仓库 原始项目仓库
典型操作 push/pull 日常开发 fetch 同步官方更新