Git |在提交时还原未添加的文件

时间:2019-03-11 12:48:51

标签: git

TL; DR:我没有添加文件,没有推送更新,现在在以前的提交中看不到文件-我想还原它们。

发生了什么: 一次提交时,我忘记将它们添加到索引中,然后又恢复为先前的提交。

是否可以通过diff或其他方式还原这些文件?当git在存储库中有未添加文件的情​​况下尝试提交时,这些文件会发生什么? Git会在任何地方保存有关它们的信息吗?它可以在任何地方保存他们吗?它会完全删除它们吗?

我正在研究Visual Studio代码,并准备了GitLens,以防它们可能有用。

更新:我认为我发现那些未跟踪的文件被保存为悬垂的斑点或无法访问的对象。我目前正在检查这个方向。

1 个答案:

答案 0 :(得分:0)

找到了解决方案:

*注意:这不会恢复文件名。

  1. 使用git fsck --unreachable获取所有unreachable对象的列表,该列表为每个对象显示其SHA-1 ID。
  2. 对于每个对象:使用git show <SHA-1 ID>读取每个对象的内容。
  3. 对于每个对象:将所需对象的内容保存到文件中。 可选:尝试根据文件的内容猜测文件的名称。