您可以从GitHub上的命令行发出请求请求吗?


298

似乎您必须与github.com交互才能发起请求请求。是这样吗


2
我在他们的API中看不到任何用于执行拉取请求的内容:develop.github.com
Adam Vandenberg,2010年


1
您打算在哪个操作系统上执行此操作?
IgorGanapolsky '16

在Windows 8或10中如何做到这一点?
Mathivanan KP

如果有人感兴趣,我为此创建了一个bash脚本
mvr

Answers:


114

更新hub命令现在是官方的github项目,还支持创建请求请求

原文

似乎添加到中心命令特别有用:http : //github.com/defunkt/hub或github gem:http : //github.com/defunkt/github-gem

我建议向那些要求它的项目提出问题。github家伙反应灵敏。


8
github-gem包括一个用于创建年龄请求请求的工具gh pull-request [user] [branch]
Holger

6
如果没有Github首先分叉存储库,即从源存储库的直接克隆,它是否可以工作?
哈里·卡拉姆·辛格

1
@Holger Just和其他任何人:这只会创建请求请求的文本,并且不会绕过对Github分叉的需求。我还没有找到解决方法。我打算尽快尝试下面发布的“ pullr”实用程序。请参阅此处,了解人们从github-gem请求全面的请求请求支持的问题。
mateor 2013年

1
快速命令使用hubhub pull-request -m "message pull request" -b master -h your_branch
古吉拉特邦桑塔纳

不知道为什么上面的文档中没有提到它,但是对于快速的请求合并,请检出您的master分支hub merge https://github.com/repo/pull/1
holmberd

53

Git现在附带一个子命令 'git request-pull' [-p] <start> <url> [<end>]

您可以在这里查看文档

您可能会发现这很有用,但与GitHub的功能并不完全相同


7
@NathanBasanese它生成人类可读的文本,描述拉取请求。在git的文档GitHub的书中说,以电子邮件这项目管理员,有人用的共享回购写权限(可能的GitHub)。维护者查看您发送的请求请求文本(而不是使用github的在线请求请求过程)。他们可以执行git pull您的拉取请求中指示的url和分支,以将您的更改合并到其本地克隆并将这些更改推送到github。
滚刀

30

使用Hub命令行包装器,您可以将其链接到git,然后您可以执行 git pull-request

在中心的手册页中:

   git pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD]
          Opens a pull request on GitHub for the project that the "origin" remote points to. The default head of the pull request is the current branch. Both base and head of the pull request can be explicitly given in one  of  the  following  formats:  "branch",  "owner:branch",
          "owner/repo:branch". This command will abort operation if it detects that the current topic branch has local commits that are not yet pushed to its upstream branch on the remote. To skip this check, use -f.

          If TITLE is omitted, a text editor will open in which title and body of the pull request can be entered in the same manner as git commit message.

          If instead of normal TITLE an issue number is given with -i, the pull request will be attached to an existing GitHub issue. Alternatively, instead of title you can paste a full URL to an issue on GitHub.

2
不知道Hub,可以通过自制软件获得:brew install hub对于Mac用户,这似乎是正确的答案。
wfbarksdale 2012年

1
//,在网上可以找到其他人以获取有关Hub的更多信息吗?
弥敦道(Nathan Basanese)

19

一个人搜寻...

man git | grep pull | grep request

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

但是,尽管有这个名字,但这不是您想要的。根据文档:

生成一个请求,要求您的上游项目将更改放入其树中。打印到标准输出的请求从分支描述开始,总结更改并指出可以从哪里提取更改。

@HolgerJust提到了可以满足您需求的github gem:

sudo gem install gh 
gh pull-request [user] [branch]

其他人提到了hubgithub 的官方软件包:

sudo apt-get install hub

要么

brew install hub 

然后

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]

3
这将生成未决更改的摘要,与通过Github发布的拉取请求无关
Flov 2012年

1
@Flov通过“ This”,我假设您的意思是该git request-pull行。是的,这是有道理的,但令我惊讶的是,git没有像github一样通过电子邮件发送拉取请求的命令。毕竟,它git config user.email是可用的。特别是使用名为的命令pull-request
滚刀

2
对于Ubuntu,github-cliPrecise之后似乎不再可用...我已经提出一个问题,要求替代方案。
IsaacS 2014年

7

我最终做了自己的,发现其他解决方案更好用。

https://npmjs.org/package/pullr


6
尝试在克隆的存储库中执行pullr -n。在Windows 7上打开... / clonedRepo / undefined / .pullr-token-cache时给我一个错误。您可能想拥有更多文档-例如示例用法?
英国电信

5

我最近创建了一个可以完全满足您需求的工具:

https://github.com/jd/git-pull-request

它可以在一个命令中自动执行所有操作,分叉存储库,推送PR等。如果您需要编辑/修复PR,它还支持更新PR!



2

此外github/hub作为Git的代理,您现在(2020年2月)拥有cli/cli

请参阅“ 增强您的命令行体验:GitHub CLI现在处于beta版

创建请求请求

创建一个分支,进行几次提交以修复问题中描述的错误,然后使用gh创建一个拉取请求以共享您的贡献。

cli / cli pr创建-https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

通过使用GitHub CLI创建请求请求,它还可以在您尚未创建分支时自动创建分支,并推送分支并创建请求请求以合并更改。


并在2020年4月:“ GitHub CLI现在支持自动填充拉取请求和自定义配置

GitHub CLI 0.7已从我们的Beta用户提供的反馈中获得了一些最受要求的增强功能。
自上次发行0.6版以来,它具有三个主要功能:

  • 配置gh通过使用首选的编辑器gh config set editor [editor]
  • 使用配置gh默认为SSH gh config set git_protocol ssh
    默认的Git协议是HTTPS。
  • 使用来自动填充提交中的拉取请求的标题和正文gh pr create --fill

所以:

gh pr create --fill

1

我以前曾使用过此工具-尽管似乎首先需要打开一个问题,但它非常有用,并且如果您使用github问题跟踪,确实可以简化工作流程。git open-pull,然后从您所在或选择的任何分支提交拉取请求。 https://github.com/jehiah/git-open-pull

编辑:看起来您可以即时创建问题,所以此工具是一个很好的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.