为什么要用git merge --squash来合并分支?

2020-11-19 15:09:00
禾刀十一口
转贴:
掘金
609
摘要:不同分支的commit在merge到develop之后会,犬牙交错在一起。由于某些原因,我们常常需要回滚已经合并到develop的代码。由于各个feature branch的代码过于水乳交融,有好几次我们发现根本无法准确回退某些代码。


我的上一家公司用Github管理代码。每个人在实现一个新功能的时候都会开一个feature branch,做完就提交pull request,代码审核完之后就merge到develop分支。这是一组标准动作。但是在实际工作中,我们总是遇到这样一个问题。


不同分支的commit在merge到develop之后会,犬牙交错在一起。由于某些原因,我们常常需要回滚已经合并到develop的代码。由于各个feature branch的代码过于水乳交融,有好几次我们发现根本无法准确回退某些代码。


如果有些功能是急需发布的,但是由于混进去了有bug的代码又回退不了,这时候是相当急人的。

这个问题当时困扰了我们很久,最后解决这个问题的是一个小小的Git功能:Squash Merge。

Squash Merge其实很简单,它就是在merge分支的时候把分支上的所有commit合并为一个commit后再merge到目标分支。

用命令行的话就是git merge --squash

Github里是可以配置pull request只允许使用squash merge的, 在repo的settings -> Merge Button里设置。

用上了squash merge后,每个被合并的分支在develop上就只有一个commit,不管要回退哪一个都很方便。

简单总结是,合并pull request用squash merge,可以让每个合并都只有一个commit,这样各个pull request间就互不干扰了。



作者:禾刀十一口
链接:https://juejin.im/post/6896397865926295565
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
发表评论
评论通过审核后显示。