Git request-pull 和 Github pull request

目录

简短的介绍

request-pullPull Request的名称如此相似,但是他们的功能是完全不同的。

request-pull是git的命令,它用于生成发送到邮件列表的待处理的更改的摘要。默认情况下,GitHub没有集成这个功能。

Pull Request是GitHub特有的一项功能(简称PR)。它用于向Github托管的某一项目中的某一分支提出合并请求。项目管理者则可以在github的web界面上合并来自不同分支的代码,解决合并冲突,做代码审查或对代码进行评论。

Git request-pull

使用目的

Generates a summary of pending changes

生成待处理的更改的摘要

使用方法

1
git request-pull [-p] <start> <url> [<end>]

一个例子

新增修改是基于从远端pull下来的master分支上的,为此建立了一个分支叫add-android-cours, 首先把自己的分支push到自己的仓库里

1
git push https://github.com/JinhaiZ/TB-F2B-205.git

运行git request-pull命令

1
git request-pull master https://github.com/JinhaiZ/TB-F2B-205.git add-android-cours

它会根据远端master分支和刚刚push到仓库里的add-android-cours分支的不同做一个摘要。你可以选择把这份摘要email给远端仓库的管理者,这样,管理者可以从这份摘要中快速看出你想对master分支做出什么更改

生成摘要如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
The following changes since commit 5a992617e38665e73ca5ec5e5c10b78373c88938:

deleted TD andorid (2017-12-10 22:31:55 +0100)

are available in the git repository at:

https://github.com/JinhaiZ/TB-F2B-205.git add-android-cours

for you to fetch changes up to 658e472da4b7f08378a5452b72c244039c621dac:

add andorid cours (2018-01-04 11:36:15 +0100)

----------------------------------------------------------------
JinhaiZ (1):
add andorid cours

android/cours.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 android/cours.md

Github Pull Request

使用目的

“Pull Request 是一种通知机制。你修改了他人的代码,将你的修改通知原来的作者,希望他合并你的修改,这就是 Pull Request。”

使用方法

使用Github web界面

以下借用阮一峰老师的讲解

  1. 第一步,你需要把别人在Github上的项目,fork到你自己的仓库
  2. 第二步,在你仓库的修改后的分支上,按下"New pull request"按钮。
    这时,会进入一个新页面,有Base 和 Head 两个选项。Base 是你希望提交变更的目标,Head 是目前包含你的变更的那个分支或仓库。
  3. 第三步,填写说明,帮助别人理解你的提交,然后按下"create pull request"按钮即可。PR 创建后,管理者就要决定是否接受该 PR。

使用Command line

首先安装Hub,以下步骤参考Hub官方指南

  1. 第一步,把别人在Github上的项目克隆到本地

    1
    `hub clone https://github.com/SOME_ONE/xxx.git` 
  2. 第二步,创建分支,并在分支上进行修改

    1
    2
    git checkout -b my-feature-branch
    git commit -m "add new feature X"
  3. 第三步,把本地项目fork到Github上

    1
    2
    3
    hub fork
    → (forking repo on GitHub...)
    → git remote add YOUR_USER git://github.com/YOUR_USER/xxx.git
  4. 第四步,把分支push到新远端(自己fork的远端)

    1
    git push YOUR_USER feature
  5. 第五步,为自己的分支创建一个PR

    1
    2
    git pull-request
    → (opens a text editor for your pull request message)

参考

  1. git docs: git-request-pull
  2. Pull Request 的命令行管理
  3. git request-pull: how to create a (github) pull request on the command line?