当我们有多个commit或者从开源处拿到多个commit时,想合成一个commit,并保留每个commit的message时,大家都知道用"git rebase -i"可以解决,但这种方式需要手动进行操作,假如我们要处理的比较多,就想要自动化来处理,下面介绍下怎么自动化处理。
git rebase逻辑
当我们"git rebase -i"后,git在当前.git/rebase-merge目录下生成git-rebase-todo文件,然后调用git editor来让用户编辑git-rebase-todo文件进行处理,如果实现自动化就需要:
- 修改git editor来使用我们提供的;
- 脚本来处理进行git-rebase-todo文件的处理。
git editor的修改
git提供config命令来查看配置和修改配置,同样editor也可以这样进行设置。
git config core.editor #查看当前使用editor
git config --local --replace-all core.editor NEW_EDITOR # 修改当前的仓库的editor为NEW_EDITOR
处理git-rebase-todo文件
pick 62e0071 first commit
pick 3bd641a second commit
pick 92c03c7 third commit
# 变基 7073047..92c03c7 到 7073047(3 个提交)
#
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但修改提交说明
# e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
# s, squash <提交>