找回git svn rebase中因冲突而丢失的文件
今天碰到了一个关于Git的问题,Git Community Book 中文版的译者liuhui998帮忙解决了,感谢!记录如下:
Q:
我发现丢失了一个重要的文件,执行步骤如下:
- 把mvc/view/Fight.as移动到了mvc/Fight.as,做了大量的修改,做了一次提交;
- 使用git svn rebase,此时git提示mvc/view/Fight.as冲突;
- 执行git rm mvc/view/Fight.as移除了这个文件;
- 执行git rebase --continue,rebase成功;
- 执行git svn dcommit提交到svn。
但我随后发现mvc/Fight.as不见了,在历史记录中,也只能找到mvc/view/Fight.as的内容。
请问:还能找回我修改过的mvc/Fight.as么?
A:
试一下git fsck --lost-found,可以找到很多dangling commit。
再用git cat-file -p看一下每个commit里面有没有删掉的内容(只看commit即可)
如果有你要想的commit,再执行git rebase 'commit-name'。
- 文章ID:1286
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/1286/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。