【问题标题】:How to squash commit when approve merge request, gitlab批准合并请求时如何压缩提交,gitlab
【发布时间】:2016-12-22 13:39:03
【问题描述】:

我在 gitlab 有两个分支 masterrelease

在发布分支,我希望它只有提交消息,如:v0.1.0,v0.1.1。

说在我完成 v0.1.0 开发后,我在 master 中有几个功能和错误修复提交说

c1. bugfix1
c2. feature1 
c3. feature2

我将在 gitlab 中创建从masterrelease 的合并请求,但我希望将这三个提交合并为一个v0.1.0,并挤压c1 c2 c3。

现在,在我现有的设置中,我将有 4 条提交消息:

Merge breanch 'master' into release
c1
c2
c3

当我在 gitlab 上批准时,有没有办法将其压缩,以便将消息压缩到:

 v0.1.0

请注意这两个分支都是受保护的分支,如果可能的话我希望releasemaster分支上会有NO git命令,并且只有gitlab操作

【问题讨论】:

    标签: git gitlab


    【解决方案1】:
    git checkout release
    git merge --squash master
    git commit -m "Suitable Message of your choice"
    

    这将从master 分支获取所有提交,将它们压缩为1 个提交,然后将其与您的release 分支合并。

    【讨论】:

      【解决方案2】:

      合并提交只有一次提交,但你似乎陷入了“快进”陷阱。也就是说,在您的合并中,git 已决定 masterrelease 的直系祖先的一部分,然后在 release 之上“快速转发”您的更改。那么,这看起来就像你描述的那样。

      要解决此问题,请在合并中添加 --no-ff 选项:

      git checkout release
      git merge --no-ff master
      

      然后,您将在您的 release 分支上准确提交一次;您可以编辑提交消息以包含您的发布版本。

      【讨论】:

        【解决方案3】:

        您可以使用 git rebase 压缩提交。

        在你的情况下,它应该是 git rebase -i HEAD~3。

        http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

        【讨论】:

          【解决方案4】:

          如果您在 GitLab 图形界面上看到此消息,如下所示:

          只需按照您的 MR 链接中的这些步骤操作:

          编辑 > 合并选项:取消选中“合并请求时压缩提交 接受”选项。

          之后,合并应该在 Gitlab 上进行。

          【讨论】:

            猜你喜欢
            • 2019-03-13
            • 1970-01-01
            • 2016-01-15
            • 2022-11-04
            • 2021-03-26
            • 2018-06-01
            • 2016-05-22
            • 2021-08-12
            • 1970-01-01
            相关资源
            最近更新 更多