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 在后
相关推荐
刘卓航众创芯云服务部3 小时前
Kimi K3复杂任务实测:我把团队最头疼的三个场景全跑了一遍
前端
cll_8692418913 小时前
一个好看的Wordpress博客文字css样式
前端·css·ui
糖果店的幽灵3 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
meilindehuzi_a3 小时前
Workflow 与 Agent 有什么区别:从 LangChain 流水线到智能体决策
前端·人工智能
三翼鸟数字化技术团队3 小时前
一种前端大屏适配方案
前端·css
Xu_youyaxianshen3 小时前
Git 零基础常用指令手册(Gitee / GitHub 通用 )
git·gitee·github
程序员黑豆4 小时前
鸿蒙应用开发:ForEach 循环渲染用法详解
前端·harmonyos
亿元程序员4 小时前
90%的Cocos开发者不知道,插件还能这么玩!
前端
布兰妮甜4 小时前
从 0 搭建企业级 Vue3/Vite 脚手架(规范、eslint、husky、打包、环境变量全流程)
typescript·vue3·vite·脚手架·前端工程化
John_ToDebug4 小时前
Git Stash 完全指南:临时保存工作区的艺术
人工智能·git·agent