你能在GitHub上从命令行发出拉取请求吗?

时间:2010-10-27 21:38:04

标签: git github pull-request

好像你必须与github.com互动才能发起拉取请求。是这样吗?

10 个答案:

答案 0 :(得分:100)

更新hub命令现在是官方github项目,并且还支持创建pull requests

<强> ORIGINAL

似乎是一个特别有用的东西,可以添加到hub命令:http://github.com/defunkt/hub或github gem:http://github.com/defunkt/github-gem

我建议向那些要求它的项目提出问题。 github的人非常敏感。

答案 1 :(得分:45)

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

您可以看到文档here

您可能会觉得这很有用但it is not exactly the same as GitHub's feature

答案 2 :(得分:26)

使用Hub command-line wrapper,您可以将其链接到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.

答案 3 :(得分:16)

一个人搜索... ...

man git | grep pull | grep request

给出

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

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

  

生成请求,要求您的上游项目进行更改   他们的树。打印到标准输出的请求以   分支描述,总结变化并指出它们的位置   可以拉。

@HolgerJust提到了你想要的github gem:

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

其他人已经提到了github的官方hub包:

sudo apt-get install hub

brew install hub 

然后

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

答案 4 :(得分:7)

除了github/hubacts as a proxy to Git)之外,您现在(2020年2月)还拥有cli/cli

请参阅“ Supercharge your command line experience: GitHub CLI is now in beta

创建拉取请求

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

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

通过使用GitHub CLI创建请求请求,它还会在您没有分支时自动创建一个分支,并推送分支并创建请求请求以合并您的更改。


并且在2020年4月:“ GitHub CLI now supports autofilling pull requests and custom configuration

我们的Beta用户提供的反馈使GitHub CLI 0.7有了一些最迫切需要的增强功能。
自上次发行0.6版本以来,它具有三个主要功能:

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

所以:

gh pr create --fill

答案 5 :(得分:5)

我最终制作了自己的,我发现它可以更好地解决其他解决方案。

https://npmjs.org/package/pullr

答案 6 :(得分:3)

我最近创建了一个完全符合您要求的工具:

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

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

答案 7 :(得分:3)

我正在使用简单的别名来创建请求请求,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'

答案 8 :(得分:0)

之前我曾使用过这个工具 - 虽然看起来首先需要打开一个问题,但如果你使用github问题跟踪,它会非常有用并真正简化工作流程。 git open-pull然后从你所在的分支或选择提交拉取请求。 https://github.com/jehiah/git-open-pull

编辑:看起来你可以动态创建问题,所以这个工具是一个很好的解决方案。

答案 9 :(得分:0)

我个人喜欢在打开 PR 之前查看 GitHub 中的差异。另外,我更喜欢在 GitHub 上写 PR 描述。

出于这些原因,我创建了一个别名(或者技术上是一个没有参数的函数),它会在 GitHub 中打开当前分支和主分支之间的差异。如果您将此添加到您的 .zshrc.bashrc,您将能够简单地输入 open-pr 并在 GitHub 中查看您的更改。仅供参考,您需要推送更改。

function open-pr() {
  # Get the root of the github project, based on where you are configured to push to.  Ex: https://github.com/tensorflow/tensorflow
  base_uri=$(git remote -v | grep push | tr '\t' ' ' | cut -d ' ' -f 2 | rev | cut -d '.' -f 2- | rev)

  # Get your current branch name
  branch=$(git branch --show-current)

  # Create PR url and open in the default web browser
  url="${base_uri}/compare/${branch}/?expand=1"
  open $url
}