Merge pull request
提供了 3 种 merge
方法:
Create a merge commit
:GitHub
的底层操作是git merge --no-ff
。feature
分支上所有的commit
都会加到master
分支上,并且会生成一个merge commit
。这种方式可以让我们清晰地知道是谁做了提交,做了哪些提交,回溯历史的时候也会更加方便。Squash and merge
:GitHub
的底层操作是git merge --squash
。Squash and merge
会使该pull request
上的所有commit
都合并成一个commit
,然后加到master
分支上,但原来的commit
历史会丢失。如果开发人员在feature
分支上提交的commit
非常随意,没有规范,那么我们可以选择这种方法来丢弃无意义的commit
。但是在大型项目中,每个开发人员都应该是遵循commit
规范的,因此我不建议你在团队开发中使用Squash and merge
。Rebase and merge
:GitHub
的底层操作是git rebase
。这种方式会将pull request
上的所有提交历史按照原有顺序依次添加到master
分支的头部(HEAD
)。因为git rebase
有风险,在你不完全熟悉Git
工作流时,我不建议merge
时选择这个。