Git操作:多个commit合并,并修改提交信息

写在前边

写这篇文章主要是记录下,很久之前读《重构-改善既有代码的设计》时,看到过作者讲过Git可以实现多个细碎操作commit合并为一个有意义的提交,当时查过一些中文信息,写得不是很清晰。正巧有一个Git管理的脚本仓库需要大量修改,尝试践行下书中的内容:完成一小部分功能就作一次本地commit,直到完成修改后,合并成一个有意义的提交。

这样做是有意义的,每一次小小的commit保证了工作进度不会因频繁的检查而效率低下(每一次提交之前仔细检查,提交后就无需再重复检查了,也有助于提升重构者的信心)。

实验准备

试验仓库中本地提交了5次,领先远端仓库。我们的目的是将这5次提交合并成一个commit,并且修改最终的提交信息。

git log --pretty

合并多个commit

Git 命令:

git rebase -i HEAD~5
  • 上边的数字5即合并的版本,之前看到提交信息 构建调整1~5 这五个提交。
  • Git 没有一个改变历史工具,但是可以使用变基来变基一系列提交,本文的合并请求就是用变基实现的。

下图中是已经修改后的,之前这5次提交的前边都是pick,构建调整1 信息我修改成了一个有意义的提交,为了验证是否能同时合并commit与修改合并后的提交信息。

按照默认顺序,可以将除第一个提交外,都使用 fixupsquash 进行标记,最终你将得到这些commit向上合并,最终变成一个,提交信息是 pick 标记的信息。

这里只关注 picksquashfixup 这三个命令:

  • pick:使用此提交不做操作
  • squash:将指定的提交合并到上边的pick请求中,保留提交信息
  • fixup:与 squash 类似,但不保留提交信息

保留提交信息是指将最终合并的提交信息包含所合并提交信息,我做了尝试如图:

使用 :wq 保存修改后

使用 git log --pretty 查看提交日志,可以看到commit已合并成了一个新的请示,但提交信息是 pick 标记的 commit 提交信息,说明pick标记的提交信息无法修改。

合并多个请求的目标已经完成,接下来修改提交说明。

修改最后一次提交说明

Git 命令:

git commit --amend

执行命令,修改提交信息后,:wq 保存退出。

git log --pretty 查看提交日志

提交信息已经更新,上一步骤的合并多请求也已完成,推送到远端仓库就可以了。

结尾

通过本文的描述实践了合并多个commit并修改提交信息,感觉这个功能很好用,作为有一定代码洁癖的我,对提交日志也有一定洁癖,毕竟后续日子提交日志可以帮我们快速定位过去的修改。

另外 git rebase 命令给了 editreword 本身也是调用了 git commit --amend 修改的提交信息。为了表示 pick 标记的提交信息不会修改,才做的验证。

参考

-END-
本文同步于本人CSDN

posted @ 2021-02-18 09:53  东北小狐狸  阅读(2630)  评论(0编辑  收藏  举报