git commit –amend误操作,解决
8月18日一个git commit –amend误操作,一时半会儿居然没想到怎么处理,特总结如下
git add,commit了内容,还未git push到远程
接着再修改内容
继续修改,git add 然后git commit –amend 可以看到log消息就是上面的
可以修改或不修改log文件,然后就可以git push了
这里我修改了,然后git push,github远程查看自己的提交(没有任何问题)
继续修改那个文件(删除了一行),git add,git commit –amend
(之前并未git commit,因为上一次的git commit已经git push了)
这次git commit –amend 我没有修改log
再接着git push 就会遇到如下的问题(想想,一定会有问题)
接着直接 git pull,提示文件遇到conflict
vim 查看文件,看到如下的内容,确实冲突了
接着git status
此时想git checkout文件 遇到如下情况
删掉后 在 git checkout也是一样的效果,此时文件都被删除了
git stash 可用来暂存当前正在进行的工作, 这里直接git stash也无法解决问题
先备份自己的文件,然后git reset 回退到上一个最新版本
查看文件内容,是自己修改后的
此时若再git pull,就会回到上面经历的冲突状态,并得不到解决
解决办法1
git commit –amend后没有git pull,git stash等操作
- 步骤1: 先备份自己的文件
- 步骤2:git reset 回退到上一个版本的上一个版本就是(最新的那条log的上一个log)
- 步骤3: 步骤2后,然后重新git pull,这样就跟远程最新的一样的,再把自己备份的文件复制过来(重新git add/rm, git commit,注意不要在gitcommit –amend了)
- 步骤四: 步骤三相当于重新新的的commit,产生新的log,git push 就ok了,完成自己最初想要的提交。
** 解决办法2
git commit –amend后没有git pull,git stash等操作
- 步骤1: git commit –amend后,直接先git merge(相当于当前分支合并成最新的,原来的的git commit都清楚一样的)
- 步骤2: 步骤1后,git log查看会多一条merge log日志,然后再重新git commit(不要再git commit –amend了)
- 步骤3: 步骤2后,接着就是正常的git push操作了
** 解决办法3
已经git pull了,也就是文件显示有冲突了,如下图
解决方法同 解决办法1
(注意备份文件总是不会错的,养成好习惯)