将多个commit合并成一个commit并提交
0 Preface/foreword
1 压缩多个commit方法
1.1 git merge --squash
主分支:main
开发分支:test
当前在test分支提交了8个commits,功能已经开发完成,需要将test分支合并到main分支,但是不想在合并时候,看到有8个commits,而是指显示一个commit记录,即将test分支下的8个commits压缩成一个。
方法:在main分支使用如下命令:
git merge --squash test
此时,在main分支下会将test中的差异内容加入(类似git add),
需要手动git commit添加comment,
最后使用git push将代码同步到远程repository。
缺点:直接在目标分支提交commit,而不是合并方式。
1.2 git reset
1.3 git rebase
可以使用以下命令:
git rebase -i HEAD~n
n:表示从当前commit开始计算,计算到第一次提交的commit时候的数字。
或者
git rebase -i lastCommitID
lastCommitID是n对应的commit ID上一个提交。(522c3)
将需要压缩的commit,最前面用squash或者s。
修改第一条commit的comment。
1.4 GitLab在Web上操作方法
GitLab Web界面,在Merge request时候,有一个check box用于选择是否需要squash(当且仅当有多个commit才会有squash选项)。
需要squash的原因如下:
What's the process about collaboration among different teams using GitHub.
- cannot push code into main before agreement by each team
- create merge request/ pull request. etc...
- review code, comment, reject...
- branch commits should be squashed when merging into main, which will be easy for maintain.