GitHub Fork 协作完整流程

GitHub Fork 协作完整流程

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


一、Fork 是什么?

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

复制代码
原仓库(upstream) → 你的仓库(origin)

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


二、整体协作流程

css 复制代码
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 的仓库,例如:

    vbnet 复制代码
    https://github.com/vercel/next.js
  2. 点击右上角 Fork

  3. 选择你的 GitHub 账号

  4. 得到你的仓库:

    bash 复制代码
    https://github.com/你的用户名/next.js

四、Clone 到本地

bash 复制代码
git clone https://github.com/你的用户名/next.js.git
cd next.js

五、配置 upstream(非常重要)

查看当前远程仓库:

复制代码
git remote -v

你会看到:

bash 复制代码
origin https://github.com/你的用户名/next.js.git

添加原仓库:

csharp 复制代码
git remote add upstream https://github.com/vercel/next.js.git

再确认:

复制代码
git remote -v

应该是:

复制代码
origin   你自己的仓库
upstream 原项目仓库

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

css 复制代码
git checkout main
git fetch upstream
git merge upstream/main
git push origin main

含义:

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


七、开发你的功能

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

八、提交 Pull Request

  1. 打开你的 GitHub 仓库

  2. GitHub 会提示:

    vbnet 复制代码
    Compare & Pull Request
  3. 点击并填写说明

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


九、为什么必须使用 upstream?

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

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


十、fetch vs merge 的正确用法

rust 复制代码
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。


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

bash 复制代码
git merge upstream/main   # ❌ 如果你没先 fetch

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


十二、最佳实践总结

Fork 项目的生存法则

sql 复制代码
只向 origin 写代码  
只从 upstream 读更新  
fetch 在前,merge 在后
相关推荐
默_笙9 分钟前
💫 闭包是个背包:拆解小米前端面试题里的三道"闭包陷阱"
前端·javascript·面试
天若有情67317 分钟前
粒子星空背景单页HTML模板|炫酷动态星空特效网页(纯前端)
前端·html·css动画·网页特效·粒子星空·静态网页模版
工业涂料百问20 分钟前
【趋势前沿】系列(三)工业涂料国产替代的三个台阶:航空、海工、电子的突破路径与认证壁垒
前端
前端snow28 分钟前
ai agent --- agentic RAG
前端
gyratesky41 分钟前
记录一种很新的大屏开发方式
前端·数据可视化
寺中人1 小时前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
xy34532 小时前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
老王以为2 小时前
走进 AI Agent 第四篇(上):知识获取管道——RAG 基础
前端·人工智能·全栈
夏天要喝冰可乐2 小时前
一处写作,多平台分发:我给掘金做了一款开源 Chrome 插件
前端·chrome·vibecoding