git commit –amend误操作,解决

8月18日一个git commit –amend误操作,一时半会儿居然没想到怎么处理,特总结如下


git add,commit了内容,还未git push到远程
接着再修改内容
git (5) -- git commit --amend问题

git (5) -- git commit --amend问题

继续修改,git add 然后git commit –amend 可以看到log消息就是上面的
git (5) -- git commit --amend问题

可以修改或不修改log文件,然后就可以git push了

这里我修改了,然后git push,github远程查看自己的提交(没有任何问题)
git (5) -- git commit --amend问题

git (5) -- git commit --amend问题


继续修改那个文件(删除了一行),git add,git commit –amend
(之前并未git commit,因为上一次的git commit已经git push了)

git (5) -- git commit --amend问题

这次git commit –amend 我没有修改log

git (5) -- git commit --amend问题

再接着git push 就会遇到如下的问题(想想,一定会有问题)
git (5) -- git commit --amend问题

接着直接 git pull,提示文件遇到conflict
git (5) -- git commit --amend问题

vim 查看文件,看到如下的内容,确实冲突了
git (5) -- git commit --amend问题

接着git status
git (5) -- git commit --amend问题


此时想git checkout文件 遇到如下情况

git (5) -- git commit --amend问题

删掉后 在 git checkout也是一样的效果,此时文件都被删除了

git (5) -- git commit --amend问题

git stash 可用来暂存当前正在进行的工作, 这里直接git stash也无法解决问题
git (5) -- git commit --amend问题


先备份自己的文件,然后git reset 回退到上一个最新版本
git (5) -- git commit --amend问题

查看文件内容,是自己修改后的
git (5) -- git commit --amend问题

此时若再git pull,就会回到上面经历的冲突状态,并得不到解决

git (5) -- git commit --amend问题


解决办法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操作了
    git (5) -- git commit --amend问题

** 解决办法3

已经git pull了,也就是文件显示有冲突了,如下图
git (5) -- git commit --amend问题

解决方法同 解决办法1
(注意备份文件总是不会错的,养成好习惯)

相关文章: