问题描述:
将一个开发好的feature branch merge到master branch的时候,发现代码有一些旧了,就做了一次rebase。结果冲突很多项目太多,将默认可以skip的commit都skip了(图形化git工具)。解决一堆冲突以后,发现自己提交的部分commit不见了。
解决方案:
- 在命令行输入
git reflog
,会出现丢失的commit信息列 - 找到自己需要的commit行,
git checkout -b recovery ae63e8d
-
git checkout master
git merge recovery
切回主分支
反思:
- 慎用
git rebase -skip
- commit的时候认真记录。 一个feature branch 在测试的以后发现问题,或者加强的时候,每次提交都fix bug, enhance balabala... 导致在寻找commit的时候花了好半天
- git 上提交过的东西一般都会留下痕迹,发生误操作淡定!
- 这个操作也适合找回误删了本地commit过但是未push到远程的branch