# 16. 我是如何在 GitHub 上提交 PR 的

GitHub 大家都知道,很多公司的开源项目都会放在这个地方。

看到那些大牛的代码,你是否也想过?

  • 我能不能学习他们
  • 我能不能提交一些自己的代码
  • 我的代码能不能满足要求
  • 我能不能得到他们的认可

本篇将分享这段时间自己提交 PR 的一些经验,也是记录自己踩过的坑。

默许阅读人群了解 GitHub ,了解基本 git 命令。

这里以 ant-design 为例。

# 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 规范

# 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

上次更新: 3/26/2020, 11:21:07 AM