【问题标题】:Is it possible to create merge requests in pure Git from the command line?是否可以从命令行在纯 Git 中创建合并请求?
【发布时间】:2011-09-01 16:34:59
【问题描述】:

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

我可以进入 Web 应用程序并从克隆创建一个拉取请求,并定位到从中克隆它的主存储库。

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

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

【问题讨论】:

    标签: git gitorious pull-request


    【解决方案1】:

    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 来应用补丁。

    【讨论】:

    • 你似乎错过了实际的问题,只回答了标题......它清楚地说明了拉取请求需要在 Gitorious 上进行,它有自己的 自己的 拉取请求机制.
    • 这并没有改变 git 本身没有“合并请求”概念的事实。
    • @Idan:OP 要求使用 命令行 方式来打开合并请求。这正是我所描述的。
    • @eckes 这不会在 Web 界面下创建合并请求。相反,它会为电子邮件拉取请求生成补丁和描述,例如 LKML。这不是一个令人讨厌的合并请求。
    • 请注意,“合并请求”是“拉取请求”的不同名称stackoverflow.com/a/29951658/2650732
    【解决方案2】:

    Gitlab 从 v11.10 开始添加此功能。提交最终更改后,只需使用:

    而不是 push
    git push -o merge_request.create
    

    创建一个合并请求。 push docsmerge request docs 中的更多详细信息。

    【讨论】:

      【解决方案3】:

      您可以使用这个命令行工具: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'
      

      【讨论】:

        【解决方案4】:

        git 本身没有“合并请求”之类的东西。所以,如果这是可能的,它需要一些特定于你的 git 主机的东西。

        【讨论】:

        • 随着 git 的更新,这个选择的答案不再有效。请参阅下面的答案。
        • @AliZarezade AFAICT,这仍然取决于您要推动的地方,这不是 git 本身理解的东西。但这绝对比 eckes 的答案更接近,所以我赞成你的答案。
        猜你喜欢
        • 2019-04-12
        • 2015-10-17
        • 2019-12-08
        • 2010-11-06
        • 1970-01-01
        • 2016-09-21
        • 2019-08-19
        • 1970-01-01
        • 2020-07-22
        相关资源
        最近更新 更多