合并多个commit

在分支上工作多次commit之后,需要合并到master,但是太多的分支commit合并会造成master查看困难,也没有必要。所以此时需要sqash分支的多个commit 到一个commit,然后再合并到master。

  • checkout出远程分支

git clone git@gitlab.huatai.me:ex-app/castle.git
  • 查看所有远程分支

git branch -a
  • 将某个远程分支取出

git checkout -b feature-gray origin/feature-gray
  • 检查日志

git log

显示可以看到最后有7个commit是我添加的,需要合并起来:

commit 9c000576b406ab0f132abd48e93e5f80dc0f096b (HEAD -> feature-gray, origin/feature-gray)
Author: 华泰 <huatai@huatai.me>
Date:   Fri Mar 8 11:49:16 2019 +0800

    修正7

commit 1617c8618018d5fb20dca0354fa12823267d575f
Author: 华泰 <huatai@huatai.me>
Date:   Fri Mar 8 10:35:17 2019 +0800

    修正6

,...
  • 合并的方法是:

git rebase -i HEAD~7

此时会显示

pick 4c7aecf 修正7
pick 9aa319a 修正6
pick cfc67ce 修正5
pick 05e43d7 修正4
pick 7e42e75 修正3
pick 1617c86 修正2
pick 9c00057 修正1

....

修改第二行开始的第一个命令 pink ,修改成 squash 类似如下:

pick 4c7aecf 修正7
squash 9aa319a 修正6
squash cfc67ce 修正5
squash 05e43d7 修正4
squash 7e42e75 修正3
squash 1617c86 修正2
squash 9c00057 修正1

....

然后保存退出,最后会显示:

 Author: 华泰 <huatai@huatai.me>
 Date: Thu Feb 28 17:28:51 2019 +0800
 13 files changed, 538 insertions(+)
 create mode 100644 biz/feature-gray/XXXXX
 ...
 Successfully rebased and updated refs/heads/feature-gray.
  • 最后再次提交

git push origin feature-gray --force

参考

Last updated