fork后提交代码流程详解
在参与开源项目时,经常会遇到需要先 fork 项目再提交代码的情况。比如你想给某个 GitHub 上的热门项目修个 bug 或者加个小功能,但你没有直接提交权限,这时候 fork 就成了第一步。
fork 其实就是把自己的 GitHub 账号下复制一份别人的仓库。这个副本完全归你控制,你可以随意修改,而不会影响原项目。
1. 先 fork 项目
进入你想参与的 GitHub 项目页面,右上角有个“Fork”按钮,点一下,稍等几秒,GitHub 就会在你的账号下生成一个同名仓库。比如原仓库是 someone/project,你的就会变成 yourname/project。
2. 把 fork 下来的仓库克隆到本地
打开终端,执行:
git clone https://github.com/yourname/project.git接着进入项目目录:
cd project3. 配置上游仓库(upstream)
这一步很多人会跳过,但其实很重要。你的 fork 是独立的,如果原项目更新了,你这边不会自动同步。为了避免冲突,建议把原始仓库设为 upstream:
git remote add upstream https://github.com/someone/project.git之后可以用下面命令拉取最新代码:
git fetch upstream4. 创建新分支
别直接在 main 分支上改。新建一个专门的分支,比如修登录 bug 可以叫 fix-login-bug:
git checkout -b fix-login-bug改完代码后,保存文件,用 git add 和 git commit 提交:
git add .
git commit -m "修复登录页按钮错位"5. 推送到自己的 fork
现在把本地分支推到你 fork 的仓库:
git push origin fix-login-bug推完之后,去你 GitHub 上的仓库页面,会发现多了一个 fix-login-bug 分支。
6. 发起 Pull Request
GitHub 会提示你“Compare & pull request”,点进去。填写标题和描述,说明你改了啥、为啥要改。比如:
标题:修复登录按钮在小屏幕上错位
描述:调整了 CSS 样式,使按钮在移动端正确居中,测试了 iOS 和 Android 主流浏览器。
确认无误后,点“Create pull request”。这就提交成功了,等着原作者 review 就行。
7. 后续可能的操作
如果作者提了修改意见,你直接在本地对应分支改,再 commit 并 push,PR 会自动更新。
万一原项目已经合并了别人代码,导致冲突,可以这样同步:
git fetch upstream
git rebase upstream/main解决完冲突后,强制推送到自己的分支:
git push origin fix-login-bug --force-with-lease整个流程走下来,其实就跟借别人家的菜谱抄一份,自己试着做一遍,改得更好吃了,再告诉原主“我优化了做法,要不要试试?”一样自然。