是否可以从命令行在纯Git中创建合并请求?

时间:2011-09-01 16:34:59

标签: git gitorious pull-request

我正在使用Gitorious的防火墙后安装。

我可以进入Web应用程序并从克隆创建拉取请求并定位克隆它的主仓库。

我希望能够在命令行上执行此操作。更具体地说,我希望能够从命令行从一个分支到另一个分支(而不是从克隆到种子仓库)打开合并请求。

由于我没有使用Github,我无法使用Github specific tools or libraries。这可能吗?

4 个答案:

答案 0 :(得分:72)

answer given by svick不正确。 可能。

git request-pull这是Git套件的一部分。使用该命令行工具,您可以创建一个可以通过电子邮件发送的拉取请求。

例:
您的origin拥有分支master。现在,您创建一个本地错误修复分支fix,实施错误修复并将fix分支推送到origin

git push origin fix:fix

然后,您希望有人将fix分支中所做的更改合并到master。使用

创建拉取请求
git request-pull master origin

这将创建一个格式如下的文本:

The following changes since commit <SHA of master>:

  <commit message of SHA of mster>

are available in the git repository at:
  <repo location> fix

<User Name> (<Number of Commits>):
      <messages of the commits>
      ...

 <changed files>
 ...
 <file statistics>

如果合并请求发送给无法访问您推送更改的仓库的人,则始终有机会使用git format-patch执行此操作。

fix分支推送到origin后(您甚至不需要这样做),在fix分支上时,使用

创建补丁
git format-patch master..

这将为fix中的每个提交创建一个补丁文件,因为分支master。您可以将生成的.patch文件与

捆绑在一起
tar czf fix.tgz *.patch

然后发送给某人,例如通过电子邮件进行审核和申请。

为了完整起见:可以使用git am来完成修补程序。

答案 1 :(得分:5)

您可以使用此命令行工具:https://github.com/brauliobo/gitorious-merge-request

./gitorious-merge-request -e brauliobo@gmail.com -s 'test' -r '~brauliobo/noosfero/brauliobos-noosfero' -a easysafeinstall -b master -t 'noosfero/noosfero'

答案 2 :(得分:4)

git本身没有“合并请求”这样的东西。因此,如果可能的话,那将需要Gitorious特定的工具。纯粹的git是不可能的。

答案 3 :(得分:0)

Gitlab从v11.10开始添加此功能。提交最终更改后,只需使用以下命令即可代替push

git push -o merge_request.create

创建合并请求。在doc中有更多详细信息。