git 合并提交 error: cannot ‘squash‘ without a previous commit

在这里插入图片描述
我想合并将3/3 3/2 2/26 2/26的四次提交合并为一次 如何进行呢
1.执行git log 查看历史提交 找到想要合并的所有提交之前的那一次commit id
注意这里的历史记录越往下越旧
在这里插入图片描述
2.执行rebase -i <合并提交的上一次提交的commit id>
之后会弹出类似的vim界面(注意这里的提交越往下越新)
在这里插入图片描述
我们需要将23900e0 3a3586f e8cee87合并到b01cae6
3.在vim界面作如下修改
在这里插入图片描述
p r e s f x d等的意思git都给出解释了
然后就报错了。。。

hjcai@LT-hjcai MINGW64 /d/test Darren/learn_darren_eassy_joke (main|REBASE-i)
$ git rebase --edit-todo
error: cannot 'squash' without a previous commit
error: unusable todo list: '.git/rebase-merge/git-rebase-todo'

4.执行git rebase --edit-todo 再次进入vim界面进行编辑
其实上面已经有提示了 squash的s是红色的 暗示我们这里有问题 我们需要将它改为pick 将其他都改成squash
如下
在这里插入图片描述
:wq保存退出
5.执行git rebase --continue
6.进入下一个界面我们可以更新提交comment 这是一个可以不改的步骤
在这里插入图片描述
:wq保存退出
7.执行git log
在这里插入图片描述
可以看到本地已经合并成功
8.将本地合并的操作提交到远端 执行git push -f
(提示:如果这里执行git push,git会提示要执行git pull 才能push 其实不能执行git pull,否则会出现已经合并的commit出现两次的情况,必须执行git push -f)
在这里插入图片描述
Android studio也显示正常
在这里插入图片描述
注意 执行git rebase -i的时候谨慎执行git pull 否则会出现合并的这些提交出现两次的情况
当然万一出现也可以解决 就是再次执行git rebase -i 在编辑界面使用drop将不必要的commit废弃掉

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值