likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 13

我的上一家公司用Github管理代码。

每个人在实现一个新功能的时候都会开一个feature branch,做完就提交pull request,代码审核完之后就merge到develop分支。

这是一组标准动作。但是在实际工作中,我们总是遇到这样一个问题。

不同分支的commit在merge到develop之后会,犬牙交错在一起。

由于某些原因,我们常常需要回滚已经合并到develop的代码。

由于各个feature branch的代码过于水乳交融,有好几次我们发现根本无法准确回退某些代码。

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

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

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

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

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

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

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

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

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

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

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

转载自:https://juejin.cn/post/6896397865926295565
评论
请登录