我是如何在 GitHub 上提交 PR 的

2,871 阅读3分钟

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 原文地址

xrkffgg.github.io/Knotes/blog…