git合并:有没有一种强制--squash的方法?

3
所以,我们项目的开发工作流程如下:我们创建任务/错误票据,并从主分支分支出来处理任务/错误,并最终合并回主分支。我们希望主分支上的提交具有良好的消息。在任务分支上提交的人可能没有好的提交消息,这是可以接受的,但如果要合并分支,则这些带有不干净消息的提交将进入主分支。
解决这个问题的一种方法是始终使用--squash合并到主分支。这样,您就有机会提供良好的提交消息并将整个提交范围视为一个。我想知道是否有一种方法可以强制执行这一点?也就是说,如果我们可以让git服务器拒绝未压缩的合并吗?

如果您的服务器上有错误分支,您可以在post-receive中检查它是否有来自错误分支的任何内容。 - J-16 SDiZ
1
Squash是如何强制执行“好”的提交消息的? - Lee
不,它并没有,但它给了你一个写清晰信息的机会。正如我所说,在特性/任务分支上,人们可以随意进行中间提交,但当他们合并时,我希望有好的信息,而普通的合并并不能做到这一点。 - EnToutCas
3个回答

9

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

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

这将始终压缩合并到主分支的提交,无需指定--squash选项。

你会如何撤销这个更改? - Kamran Khan
只要您不主动删除已合并的分支,它仍然存在于您的代码库中。使用 git revert 撤销已合并的提交,然后按照您的意愿进行操作即可。 - eckes

1
你需要的是一个服务器端钩子来确保推送的内容是你所需的。你会拒绝任何引用更改,如果它引入了超过一个非合并提交。你还可以在那里进行其他检查,比如检查注释是否包含票号等。

0
你可以在你的分支上使用 rebase -i 命令,这将允许你将分支上的所有提交压缩成一个提交,然后将该分支(1个提交)合并到主分支。

确实如此,但这听起来你更关心主分支的样子,而不是特性分支的样子。我觉得需要对用户进行一些教育:“在推送到服务器之前,使用rebase -i并编写一个好的提交信息。” :-) - Mark Granoff

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