之前一直使用的Gitflow来管理项目代码,最近开始用Gitlib自带的merge request来处理代码合并,
但是每一次的合并请求要求只能有一个commit,而经常在创建MR之后还会有许多的修改和commit,
如何确保最后只有一个commit呢?
1. 通过`git reset commitid`(直接reset到第一个commit的ID) 将从第一个commit到当前时间的所有修改检出到本地(也可以使用reset --soft,省去Git add步骤),具体原理可以参考:git reset 详解-通俗易懂
2. 将当前的所有修改,执行一次`git commit -am xxx`, 这时Git log会看到有两次commit;
3. `git rebase -i HEAD~2`将两个commit合并为一个,保留其中一个commit,将另一个sqush进前一个commit,也可以修改commit message;
4. `git push -f` 将修改推送远程,覆盖已有的commit记录,MR中就只会有一个commit了。