关于git rebase 合并多个(以3个commit为例)commit提交

1.git rebase -i HEAD~3 进入vim编辑窗口,将要合并的commit的pick改为squash或者s
2.保存当前窗口并退出(在当前窗口按下Esc键然后:wq保存退出)
3.退出后Git会陆续压缩提交历史(commit),如果有冲突需要修改,选择保留最新的提交历史
4. git add . 将修改添加到暂存区
5. git rebase --continue
6.刪除本地merge临时文件

rm .git/MERGE_MSG

如果中间执行了git rebase --abort 或者直接关闭了IDE 会产生COMMIT_EDITMSG临时文件

  1. 删除不正常结束的commit临时文件

使用rebase进行合并commit提交的时候出现了不正常退出导致.git文件夹下存在了临时文件从而无法执行git rebase --continue,解决办法就是删除此临时文件重新合并提交

Found a swap file by the name "D:/web/vue2/.git/.COMMIT_EDITMSG.swp"
          owned by: YTF   dated: Mon Aug 12 20:02:12 2019
         file name: /d/web/vue2/.git/COMMIT_EDITMSG
          modified: no
         user name: YTF   host name: blissyang
        process ID: 20396 (still running)
While opening file "D:/web/vue2/.git/COMMIT_EDITMSG"
             dated: Mon Aug 12 20:03:43 2019
      NEWER than swap file!
      
      Swap file "D:/web/vue2/.git/.COMMIT_EDITMSG.swp" already exists!
rm .git/COMMIT_EDITMSG
rm .git/.COMMIT_EDITMSG.sw*

关于git commit --amend合并多次未push的commit信息

git rebase -i HEAD~4 可以合并已经push过的commit提交历史,而 在push之前如果存在多次commit想要合并,就可以使用git commit --amend 可以合并当前commit和临近的上一次commit的信息,也可以修改信息,然后再铺上,就不会有很多提交信息了,当然执行该条命令后,依然遵循vim规则:修改或者增加完提交信息后 在当前窗口按下Esc键然后:wq保存退出就 可以了