GIT合并多次提交

当我们在本地仓库的分支上做开发时,对于一个功能进行了多次提交,在push到远程仓库之前我们希望把这几个相关的commit合并为一个,这样更加简洁,也方便review。

commit 51a874e7ed0efa13c97f1463a42275891f3377ce (HEAD -> master)
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 17:49:19 2019 +0800

    feature B third commit

commit d2f33ab57a8aecd97476913a26e61091c7787cce
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 17:48:51 2019 +0800

    feature B second commit

commit f286d47698a141d2e7f63d5b6b54dceb5275dd3d
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 17:48:04 2019 +0800

    feature B first commit

commit d1dff09fd56e49892d146199f31c1ce5a9270877
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 17:47:19 2019 +0800

    feature A complete.

如果想把 featureB 相关的三次提交合并为一个,可以执行如下命令

git reset --hard d1dff09fd56
git merge --squash HEAD@{1}
git commit -m "feature B complete"

此时使用 git log 查看日志

commit c657056879e22e076df4bea25345a839a9519129 (HEAD -> master)
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 18:01:24 2019 +0800

    feature B complete

commit d1dff09fd56e49892d146199f31c1ce5a9270877
Author: zhangjun3 <zhangjun3@xxx.com>
Date:   Fri Dec 6 17:47:19 2019 +0800

    feature A complete.

三次提交合并为了一次提交记录。

不推荐合并已经push到远程仓库的commit

原文地址:https://www.cnblogs.com/junejs/p/12686849.html