从命令行创建/更新Git拉取请求?

4

我需要在命令行中创建一个git pull-request,而不需要安装任何包装器或其他软件。在git中有没有这样做的方法?我似乎找不到任何官方的git文档支持这一点。


2
你是指GitHub的pull request吗?Git本身并没有真正的“pull requests”,只有pulls。 - Borealid
是的,我指的是一个 GitHub pull-request。 - SIDDHARTH MEHTA
@Borealid:git确实有git request-pull命令:https://dev59.com/vWw05IYBdhLWcg3wYw1s - eckes
相关:https://dev59.com/vWw05IYBdhLWcg3wYw1s - eckes
5个回答

5

令人惊讶的是(对很多人来说),拉取请求在Git世界中是一等公民,而不是GitHub发明的东西。

使用git request-pull创建一封邮件文本,您可以将其发送给应该从服务器获取某些修订版本的人。

这个服务器可能是一些非常基本的东西,比如只读文件共享或其他。

该主题在Git Book中进行了深入讨论:https://git-scm.com/book/ch5-2.html

例如:您fork了一个repo,在origin/master分支上引入了一个补丁,并将其发布到名为//myserver/myrepo.git的文件共享上。然后您会输入:

git request-pull origin/master //myserver/myrepo.git

然后将命令的输出复制到电子邮件中,即可创建拉取请求。

3

Bash脚本

请查看以下文章,它将帮助您从命令行创建PR。

使用hub软件包

  • Install hub package on your machine. Follow this link.
  • Checkout to a new branch:
    git checkout -b your-branch-name
    
  • Commit your changes or create an empty commit:
    git commit --allow-empty -m "Your commit message"
    
  • Push the changes:
    git push --set-upstream origin your-branch-name
    
  • Run the following command to create Pull Request:
    hub pull-request
    

1

编辑:

看起来你需要GitHub的拉取请求,而不是Git的拉取请求。 要了解差异,这个答案有一个很好的解释:

https://dev59.com/7W025IYBdhLWcg3wEhjr#6235394

在Git本身中没有“pull request”这样的东西。GitHub或Atlassian Stash等使用Git的平台引入了“pull request”的概念。
由于它不是“原生”的Git概念,您没有任何内置的Git来从命令行打开GitHub pull request。
有一个https://github.com/github/hub工具,可以帮助您从命令行自动化常见的GitHub流程。
话虽如此,当涉及到打开GitHub pull request或Atlassian Stash pull request时,我编写了一些命令行工具,您可以将它们放在PATH中来完成该工作。它们是为我的特定用例编写的,可以随意修改它们以满足您的需求并使用它们。
对于GitHub: 对于Atlassian Stash:

为了让它们工作,您必须正确配置存储库中的originupstream分支。它们以粗略的方式工作,通过解析git remote命令的输出来构建适当的GitHub/Stash拉取请求URL,然后在浏览器中打开它们。

这些shell脚本还检查其他一些内容,例如确保您从正确的分支打开拉取请求等。

对于GitHub,请还要查看

在您推送之前,它可以猜测下一个拉取请求的编号并将其放入提交消息中。

https://dev59.com/vWw05IYBdhLWcg3wYw1s 显示git确实有pull-request的概念... - eckes
@eckes 感谢您纠正我的无知。git request-pull 是最近添加的还是一直存在?老实说,我在过去的三年中从未使用过它。 - jakub.g
请查看此帖子:http://vmiklos.hu/blog/using-git-request-pull.html。它的日期可以追溯到2007年,所以我不会称其为新功能 :-) - eckes

0

2020年5月:您可以使用GitHub CLI "gh"

请参阅“GitHub CLI 允许您关闭、重新打开并添加元数据到问题和拉取请求中”。

GitHub CLI 0.8 让您更轻松地在终端上处理拉取请求和问题。此版本包括两个主要功能:
  • 现在,您无需立即在浏览器中打开问题或拉取请求以添加元数据。
    现在,您可以在创建拉取请求和问题时添加评审人、标签、受让人、项目和里程碑(如适用)。
  • 使用 gh pr closegh pr reopengh issue closegh issue reopen 直接从 CLI 中关闭和重新打开拉取请求和问题。

请参阅我们的 README 了解如何升级!


不适用于企业版 :| - Johnson Samuel
@JohnSamuel 是的,README中提到:“在 GitHub CLI 正式版发布后(可能在 2020 年底左右),我们计划支持 GitHub Enterprise Server。” 在 OP 的问题背景下,github.com 就足够了。 - VonC
哦,是的。我也看过那个 :). 但是有没有其他的方法可以通过命令行创建拉取请求呢? - Johnson Samuel
@JohnSamuel,这项工作中已经有初步的支持:https://github.com/cli/cli/pull/823 - VonC
很高兴看到它成形了 :) - Johnson Samuel
@JohnSamuel 这将取决于您的 GHES 版本:https://github.com/cli/cli/issues/273#issuecomment-610007084 - VonC

-1

1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。仅有链接的答案如果链接页面发生更改可能会变得无效。 - greg-449
@greg-449 你说得对,那并不能解决你的问题。我更新了我的回答。 - Eugene Nezhuta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接