Pull请求是通过fork一个新的代码库用来独立开发,并将变更贡献回原始代码库。当某一个模块的开发工作完成后,可以发送一个pull请求给代码库所有者,来合并我们的代码更改。Pull请求本身可以引起合作者之间的评论,包括代码质量,功能,甚至总体战略等。
注意,一次代码提交不要包含太多内容,代码行数控制在50行以内。太长的代码行不利于审核。
建议大家在Linux环境下做开发工作,毕竟这些系统线上运行时Linux是首选的环境。 GitHub使用需要先安装Git客户端,如果你已经安装了,可以忽略这一步。 请访问 https://git-scm.com/downloads 来下载合适的版本。 这里以windows环境下的操作为例来说明如何工作。
GitHub有两种Pull请求方式:
进入GitHub的 Jigsaw代码库 https://github.com/jigsaw-projects/jigsaw-payment ,单击“Fork”按钮来创建自己的Github帐户上的代码库克隆:
访问这将在自己的帐户上创建一个该代码库的复制:
选择 SSH URL,那样它会自动使用你自己的SSH密钥,而不用每次在git pull或者push时询问你的用户名和密码。下一步,我们将克隆一份代码库到本地计算机。 首先注意在自己的github空间下,进入jigsaw-payment的分支。选择SSH方式,点击右侧按钮复制地址:
在本地建立一个工作文件夹,比如d:\workspace,用来做开发工作。在windows下,用Git Bash,对应的地址是/d/workspace
- admin@admin - PC MINGW64 / d $ cd workspace /
- admin@admin - PC MINGW64 / d / workspace $ git clone git@github.com: shamphone / jigsaw - payment.git Cloning into 'jigsaw-payment'...remote: Counting objects: 1353,
- done.remote: Compressing objects: 100 % (171 / 171),
- done.remote: Total 1353(delta 117),
- reused 208(delta 63),
- pack - reused 1063 Receiving objects: 100 % (1353 / 1353),
- 3.49 MiB | 54.00 KiB / s,
- done.Resolving deltas: 100 % (429 / 429),
- done.Checking out files: 100 % (233 / 233),
- done.
一般情况下,每一个新的功能,我们将创建一个新的Git分支。这是一个很好的做法,因为在未来,如果经过一番讨论后我们需要进一步更新分支,Pull请求将被自动更新。
以下以修改Readme文件为例,介绍如何建立分支来完成这个任务。
```bash admin@admin-PC MINGW64 /d/workspace $ cd jigsaw-payment/
admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (master) $ git checkout -b update-readme Switched to a new branch ‘update-readme’ ···
注意,必须确保是在jigsaw-payment这个工作目录下,之后在路径后会显示当前的分支。 /d/workspace/jigsaw-payment (master)
在为这个新功能增加文件后,我们只需要将修改提交到这个新分支上,然后切换回master分支:
···bash admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (update-readme) $ git add .
admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (update-readme) $ git commit -m ‘update readme file’ [update-readme 4035813] update readme file 1 file changed, 1 insertion(+)
admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (update-readme) $ git checkout master Switched to branch ‘master’ Your branch is up-to-date with ‘origin/master’. ···
在这里,我们需要将新分支推送到远程代码仓库里。首先,我们需要检查这个新功能的分支名称以及其在远程仓库的别名,然后我们用git push [git-remote-alias] [branch-name]推送这个变更。
···bash admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (master) $ git branch
admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (master) $ git remote -v origin git@github.com:shamphone/jigsaw-payment.git (fetch) origin git@github.com:shamphone/jigsaw-payment.git (push)
admin@admin-PC MINGW64 /d/workspace/jigsaw-payment (master) $ git push origin update-readme Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 331 bytes | 331.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To github.com:shamphone/jigsaw-payment.git
进入我们fork的代码库的GitHub页面,选择为这个新功能建立的分支,然后点击Pull Request按钮:
提交Pull请求后,页面将直接跳转到原始库的Pull请求页面,我们将看到我们提交的Pull请求,作为一个新的问题,以及作为一个新的pull请求。
在经过讨论后,fork的代码库的作者可能想为这个新功能增加一些新的改动。在这种场景下,我们需要在本地计算机上checkout这个同样的分支,修改,提交,并推送回GitHub。当我们再次访问原代码库的pull请求页面的时候,会发现上次提交的Pull请求已经自动更新了。
有审核权限的用户进入系统后,可以执行代码审核。
如果你是代码审核人员,你将有两种方式来合并收到的Pull请求。
直接在GitHub上合并:如果我们想直接在GitHub上进行合并,必须确保没有冲突。原始库的所有者可以通过简单地点击Merge Pull Request按钮来进行合并:
在本地计算机上进行合并:另外一种情况,合并的时候可能会遇到冲突,点击上部的Info图标,GitHub有非常清晰的指导,怎么从贡献者的分支上下拉代码变更到本地,合并并解决冲突。
如上,如有问题,请大家及时在微信群里沟通。
感谢您对本文的关注,如需要及时收到凤凰牌老熊的最新作品,或者有相关问题探讨,请扫码关注“凤凰牌老熊”的微信公众号,在公众号里留言或者回复,可以尽快处理,谢谢。
来源: http://www.tuicool.com/articles/JRB3Yr6