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废弃掉
更多推荐
所有评论(0)