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

来源:互联网 发布:澳柯玛集团数据 编辑:程序博客网 时间:2024/06/05 15:49

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
(注意备份文件总是不会错的,养成好习惯)

原创粉丝点击