Git rebase skip误操作后,找回提交的commit(误删未push本地分支同理)

3,203 阅读1分钟

问题描述:

将一个开发好的feature branch merge到master branch的时候,发现代码有一些旧了,就做了一次rebase。结果冲突很多项目太多,将默认可以skip的commit都skip了(图形化git工具)。解决一堆冲突以后,发现自己提交的部分commit不见了。

解决方案:

  1. 在命令行输入git reflog,会出现丢失的commit信息列
  2. 找到自己需要的commit行, git checkout -b recovery q1dw23d
  3. git checkout master git merge recovery 切回主分支

反思:

  1. 慎用 git rebase -skip
  2. commit的时候认真记录。 一个feature branch 在测试的以后发现问题,或者加强的时候,每次提交都fix bug, enhance balabala... 导致在寻找commit的时候花了好半天
  3. git 上提交过的东西一般都会留下痕迹,发生误操作淡定!
  4. 这个操作也适合找回误删了本地commit过但是未push到远程的branch

解决问题的时候参考了简书的文章,感谢。