【问题标题】:git merge: is there a way to force --squash?git merge:有没有办法强制--squash?
【发布时间】:2012-05-16 15:59:00
【问题描述】:

因此,我们项目的开发工作流程是这样的:我们创建一个任务/错误票证,然后我们将 master 分支出来处理任务/错误,并最终将其合并回 master。我们希望 master 上的提交有很好的消息。在任务分支上提交的人可能没有好的提交消息,这没关系,但是如果要合并分支,这些带有不干净消息的提交会进入 master。

解决此问题的一种方法是始终使用--squash 合并到master。这样,您就有机会提供良好的提交消息并将整个提交范围视为一个。我想知道是否有办法强制执行?意思是,如果我们可以让 git 服务器拒绝未压缩的合并?

【问题讨论】:

  • 如果你的服务器上有坏分支,你可以在post-receive检查它有来自坏分支的任何东西。
  • squash 如何强制执行“好的”提交消息?
  • 不,它没有,但它让你有机会写出干净的信息。正如我所说,在功能/任务分支上,人们可以根据需要进行临时提交,但是当他们合并时,我希望有好的消息,而普通合并不会这样做。

标签: git merge squash


【解决方案1】:

虽然不是直接强制,但您可以将--squash 设置为master 分支的默认合并选项:

git config branch.master.mergeoptions  "--squash"

这将始终压缩被合并到 master 中的提交,而无需指定 --squash 选项。

【讨论】:

  • 您将如何撤消此更改?
  • @KamranKhan 只要您不主动删除合并的分支,它仍然存在于您的存储库中。使用git revert 还原合并的提交,然后继续进行。
【解决方案2】:

您需要一个服务器端挂钩,以确保推送的内容是您所需要的。您将拒绝任何会引入多个非合并提交的参考更改。您可以在那里进行其他检查,例如查看评论是否包含票号等。

【讨论】:

    【解决方案3】:

    您可以在您的分支上使用rebase -i,这将允许您基本上将分支上的所有提交压缩为 1 个提交,然后将该分支(1 个提交)合并到 master。

    【讨论】:

    • 确实如此,但听起来您更关心主分支的外观而不是功能分支的外观。在我看来,一些用户教育是有序的:“在你推送到服务器之前,rebase -i 并写一个不错的提交消息。” :-)
    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2016-01-30
    • 1970-01-01
    • 2014-04-17
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多