普通视图

发现新文章,点击刷新页面。
昨天 — 2026年1月9日首页

GitHub Fork 协作完整流程

2026年1月9日 16:17

GitHub Fork 协作完整流程

适用于:开源项目二次开发、插件扩展、给上游项目提交 PR(Pull Request)


一、Fork 是什么?

Fork 是把别人的 GitHub 仓库复制一份到你自己的账号下:

原仓库(upstream) → 你的仓库(origin)

你在自己的仓库里可以随意修改代码,而不会影响原项目。


二、整体协作流程

flowchart TD
    A[原项目 GitHub 仓库] -->|Fork| B[你自己的 GitHub 仓库]
    B -->|git clone| C[你的本地仓库]
    A -->|git fetch upstream| C
    C -->|git merge upstream/main| C
    C -->|git push origin| B
    B -->|Pull Request| A

三、Fork 项目(网页操作)

  1. 打开你要 Fork 的仓库,例如:

    https://github.com/vercel/next.js
    
  2. 点击右上角 Fork

  3. 选择你的 GitHub 账号

  4. 得到你的仓库:

    https://github.com/你的用户名/next.js
    

四、Clone 到本地

git clone https://github.com/你的用户名/next.js.git
cd next.js

五、配置 upstream(非常重要)

查看当前远程仓库:

git remote -v

你会看到:

origin https://github.com/你的用户名/next.js.git

添加原仓库:

git remote add upstream https://github.com/vercel/next.js.git

再确认:

git remote -v

应该是:

origin   你自己的仓库
upstream 原项目仓库

六、同步原项目最新代码(标准流程)

git checkout main
git fetch upstream
git merge upstream/main
git push origin main

含义:

用原作者的 main 更新你的 main,并推送到你自己的 GitHub


七、开发你的功能

git checkout -b my-feature
# 修改代码
git add .
git commit -m "Add my feature"
git push origin my-feature

八、提交 Pull Request

  1. 打开你的 GitHub 仓库

  2. GitHub 会提示:

    Compare & Pull Request
    
  3. 点击并填写说明

  4. 提交 → 原项目维护者审核


九、为什么必须使用 upstream?

远程名 作用
origin 你自己的 GitHub 仓库
upstream 原作者的 GitHub 仓库

你只向 origin push,但要从 upstream 获取最新版本。


十、fetch vs merge 的正确用法

sequenceDiagram
    participant U as GitHub upstream
    participant L as Local Repo
    participant O as GitHub origin

    U->>L: git fetch upstream
    L->>L: upstream/main 更新
    L->>L: git merge upstream/main
    L->>O: git push origin main
  • fetch = 下载真实世界
  • merge = 使用真实世界

永远不要跳过 fetch。


十一、错误示例(不要这样)

git merge upstream/main   # ❌ 如果你没先 fetch

你合并的可能是 几个月前缓存的 upstream,非常危险。


十二、最佳实践总结

Fork 项目的生存法则

只向 origin 写代码  
只从 upstream 读更新  
fetch 在前,merge 在后
❌
❌