找回git svn rebase中因冲突而丢失的文件

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:找回git svn rebase中因冲突而丢失的文件
  • 本文链接:http://zengrong.net/post/1286.htm


今天碰到了一个关于Git的问题,Git Community Book 中文版的译者liuhui998帮忙解决了,感谢!记录如下:

Q:

我发现丢失了一个重要的文件,执行步骤如下:

  1. mvc/view/Fight.as移动到了mvc/Fight.as,做了大量的修改,做了一次提交;
  2. 使用git svn rebase,此时git提示mvc/view/Fight.as冲突;
  3. 执行git rm mvc/view/Fight.as移除了这个文件;
  4. 执行git rebase –continue,rebase成功;
  5. 执行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’。