在git中恢复丢失的提交

时间:2012-02-13 11:23:46

标签: git

我有一个本地存储库,我们称之为A

A我有很多LOST_FOUND,我想要恢复。 恢复上述提交的最佳(也是最不危险)方法是什么?

(我真的不能说为什么他们会迷路,老实说我以为我做了一个简单的“提交,回家过去”-kinda操作,但显然它变成了别的东西。

编辑:执行git branch foundit LOST_FOUND_N结果

error: Object #SHA1 is a blob, not a commit
fatal: Not a valid branch point: `LOST_FOUND_N`.

(其中#SHA1为a,SHA1NLOST_FOUND的数量

编辑2:在LOST_FOUND_文件上执行git show表明它们主要映射到我丢失的文件(但并非所有文件都属于同一文件提交(据我所知,我不记得我每次提交的确切内容),甚至是同一个分支。)

2 个答案:

答案 0 :(得分:4)

我的.bashrc中有以下别名:

alias gitkall='git fsck --lost-found | awk "{ print \$3 ; }" | xargs gitk --all'

它创建了一个命令gitkall,它显示了存储库中的每个修订版,包括那些从历史编辑中遗留下来的修订版等。

通过gitk gui,可以轻松直观地标记有趣的丢失修订,制作新的分支等。

答案 1 :(得分:0)

我会继续自己回答:

请注意,这个答案特定于这个问题,而不是一个普遍的解决方法:

  1. 检查文件
    git show FILE
  2. 当您识别该文件时,将其管道如下:
    git show FILE > FILENAME
  3. 请注意,这只会为您提供您找到的文件的内容,而不是目录的结构。