# 16. 我是如何在 GitHub 上提交 PR 的
GitHub 大家都知道,很多公司的开源项目都会放在这个地方。
看到那些大牛的代码,你是否也想过?
- 我能不能学习他们
- 我能不能提交一些自己的代码
- 我的代码能不能满足要求
- 我能不能得到他们的认可
本篇将分享这段时间自己提交 PR 的一些经验,也是记录自己踩过的坑。
默许阅读人群了解 GitHub ,了解基本 git 命令。
这里以 ant-design (opens new window) 为例。
# 1. 准备
# 1.1 Fork 项目
点击 Fork 后,会自动生成以自己名称命名的项目,如图: 因为我这个是很早之前的,所以可以看到我项目的 master 已经拉下原项目的 master 152个 commits 了。不用担心,后面会教你怎么处理。
# 1.2 Clone 到本地
# 在你想存放项目的文件夹下执行
git clone https://github.com/xrkffgg/ant-design.git
cd ant-design
# 1.3 设置 remote
如果你这是一次性,并且很快就提交了,可以忽略此步,但不建议。
- 添加
git remote add ant https://github.com/ant-design/ant-design.git
- 查看
如果操作正确,执行 git remote -v
,你将看到
ant https://github.com/ant-design/ant-design.git (fetch)
ant https://github.com/ant-design/ant-design.git (push)
origin https://github.com/xrkffgg/ant-design.git (fetch)
origin https://github.com/xrkffgg/ant-design.git (push)
# 1.4 安装依赖
yarn
# or
npm i
# 1.5 启动项目
有的项目命令不一定是 start
,具体可以去 package.json
中查看。
yarn start
# or
npm run start
# 2. 开发
这里就是尽情的来 Coding。
很多项目都有一些开发规范,建议开发前可以去阅读以下,更规范的代码有助于 PR 的通过。
同时在开发完成后,建议运行 项目中的 test 来检查是否满足要求(避免 PR 中 test 失败)
# 2.1 提交
这里列出几个自己的风格。
- 先新建远程,再直接提交
GitHub 新建分支的操作为:在某个分支下,点击 Branch,输入你想新建的名称,比如 test,之后会自动以你所在分支为基准新建分支。
本地分支直接使用 test 分支开发,这样避免 master 被污染。
- 本地开发完成,推送到远端其他分支
git add xx
git commit ""
git push origin master:test
这样会导致自己的本地 master 多了 commit 。
add commit 的操作建议使用工具(IDE 集成或插件)来执行,这样可以检查一下提交的代码。
# 2.2 提交规范
commit 信息一定要写的规范。可参考 commit 规范 (opens new window)
# 3. PR
# 3.1 新建
当你提交到远程时,点开你的 项目主页,会自动显示出一个 Pull Request 的按钮。
如果由于网络原因没刷新出来,可自己直接点击 分支旁的 New pull request
,或去源项目新建 PR。
# 3.2 填写
每个项目都会对自己的 PR,有一定的要求,请仔细阅读规范填写。
# 3.3 后续
当你做完这些操作后,就可以等着项目维护人员来进行代码审核和 PR 操作啦。
如果 PR merge 后,会给出一个 删除你项目中分支的操作,可直接点击。
# 4. 情景
这里列出一些我遇到的情景和解决办法。
# 4.1 clone 指定分支
git clone - b v1.0 http://xxx.git
# 4.2 更新 fork 工程
# 1. 添加源分支
git remote add xxx git@github.com:author/repos.git
git remote -v 查看
# 2. fetch 源仓库代码的最新版本到本地
git fetch xxx
# 3. 合并两个版本的代码
git merge xxx/master
# or
git rebase xxx/master
# 4. 更新到GitHub的fork上
git push origin master
# 4.3 恢复远端 commit
# 1. 查看 commit 历史
git reflog
# 2. 恢复到指定 commit
git reset --soft HEAD~1
# 3. commit 处理
# 4. push 远端
git push origin master --force
# 4.4 PR rebase
# 1. master 更新到最新
# 2. rebase
git rebase master
# 3. push
git push --force
# 4.5 远程新建分支如何开发
git fetch
git checkout -t origin/xxx
# 5 后 记
感谢支持。
若不足之处,欢迎大家指出,共勉。
如果觉得不错,记得 点赞,谢谢大家 ʚ💖ɞ
欢迎关注。
# 5.1 原文地址
https://xrkffgg.github.io/Knotes/blog/16.html (opens new window)