git rebase 和git commit --amend 合并多个commit提交异同

本文介绍如何使用Git的rebase-i命令合并多个commit,包括修改提交历史、解决冲突及删除临时文件的方法。同时,讲解如何利用commit--amend合并未push的多次commit,简化提交记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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保存退出就 可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值