在git中恢复丢失的提交

在git中恢复丢失的提交,git,Git,我有一个本地存储库,我们称之为a 在A中,我有很多失物招领处需要修复。 恢复上述承诺的最佳(也是最不危险的)方式是什么 (我真的说不出他们为什么迷路了,我真的以为我在做一个简单的“承诺,回家过一天”——类似于一个手术,但显然它变成了别的东西 编辑:执行一个git分支发现它丢失了\u找到了\u N结果是 error: Object #SHA1 is a blob, not a commit fatal: Not a valid branch point: `LOST_FOUND_N`. (其中,

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

A
中,我有很多失物招领处需要修复。 恢复上述承诺的最佳(也是最不危险的)方式是什么

(我真的说不出他们为什么迷路了,我真的以为我在做一个简单的“承诺,回家过一天”——类似于一个手术,但显然它变成了别的东西

编辑:执行一个
git分支发现它丢失了\u找到了\u N
结果是

error: Object #SHA1 is a blob, not a commit
fatal: Not a valid branch point: `LOST_FOUND_N`.
(其中,
#SHA1
是a,那么,
SHA1
,而
N
是找到的
丢失的编号


编辑2:对丢失的文件进行
git show
显示它们大部分映射到我丢失的文件(但并非所有文件都属于同一个提交(据我所知,我记不清每次提交的内容),甚至是同一个分支).

我自己来回答这个问题:

请注意,这个答案是针对这个问题的,而不是magick的通用解决方案:

  • 使用以下命令检查文件:
    git显示文件
  • 识别文件时,按如下方式对其进行管道处理:
    git show FILE>FILENAME

  • 请注意,这只提供您找到的文件的内容,而不是目录的结构。

    我将自己回答这个问题:

    请注意,这个答案是针对这个问题的,而不是magick的通用解决方案:

  • 使用以下命令检查文件:
    git显示文件
  • 识别文件时,按如下方式对其进行管道处理:
    git show FILE>FILENAME

  • 请注意,这只提供您找到的文件的内容,而不是目录的结构。

    我的.bashrc中有以下别名:

    alias gitkall='git fsck --lost-found | awk "{ print \$3 ; }" | xargs gitk --all'
    
    它生成一个命令gitkall,它显示存储库中的每个修订,包括历史编辑等遗留下来的修订


    在gitk gui中,标记有趣的丢失修订、创建新分支等操作非常简单直观。

    我的.bashrc中有以下别名:

    alias gitkall='git fsck --lost-found | awk "{ print \$3 ; }" | xargs gitk --all'
    
    它生成一个命令gitkall,它显示存储库中的每个修订,包括历史编辑等遗留下来的修订


    从gitk gui,标记有趣的丢失的修订、创建新的分支等非常简单直观。

    我认为您应该分享更多详细信息以获得有用的响应。您是如何丢失这些提交的?您是在本地存储库还是远程存储库中丢失的?啊,感谢您的响应,我不完全确定要包含什么。repo是一个本地一号,除了生产代码外,我很少推送任何东西。至于我是如何丢失它们的,这是一个很大的谜,因为它是几天前发生的。但基本上,我以为我在做一个简单的“提交,回家一天”,但显然我做了其他事情。如果你确定你提交了这些更改(几乎不可能恢复未承诺的内容)您可以查看
    git reflog
    。它显示了存储库的扩展历史。您最感兴趣的应该是写着“提交…”的条目。如果幸运的话,您可以通过它们的消息在reflog中找到提交。然后我们可以考虑进一步的步骤。我知道,更改已经提交。问题是
    git reflog
    没有显示提交。我认为您应该分享更多详细信息以获得有用的响应。您是如何丢失这些提交的?您是在本地存储库还是在远程存储库中丢失的?啊,感谢您的响应,我不完全确定要包含什么。回购是本地的,我很少推送生产代码以外的任何内容。至于如何我把它们弄丢了,这是一个很大的谜,因为它是在几天前发生的。但基本上,我以为我在做一个简单的“提交,回家过一天”,但显然我做了其他事情。如果你确定你做了这些更改(几乎不可能恢复未提交的内容)您可以查看
    git reflog
    。它显示了存储库的扩展历史。您最感兴趣的应该是写着“提交…”的条目。如果幸运的话,您可以通过它们的消息在reflog中找到提交。然后我们可以考虑进一步的步骤。我知道,更改已经提交。问题是
    git reflog
    不显示提交。