通过* NIX'rm'删除后恢复暂存文件的最佳方法是?

时间:2018-10-17 19:50:49

标签: git

在这种情况下,恢复文件的“最佳实践”推荐方法是什么:

用户在她的Linux工作区中修改文件。她运行一个“ git add”并分阶段进行。她没有承诺。时间流逝。她不小心使用'/ bin / rm'(不是'git rm')删除了所有修改后的文件。

现在,“ git状态”将其报告为“已删除”(正确)。建议为每个命令运行“ git reset HEAD 文件”和“ git checkout-文件”(不正确)。这导致每个版本的最新(HEAD)版本都保留在她的工作空间中,而不是包含已分阶段更改的版本。除了运行'git fsck'并尝试解析各种SHA引用外,用户现在应该怎么做才能恢复她最初进行的更改?

1 个答案:

答案 0 :(得分:1)

如果添加了文件但未提交,则它们最初位于索引/阶段。使用rm后,git checkout -- <file>给出的第二条建议(即git status)是正确的,因为它会将文件从索引中检出并进入工作目录。

我假设您已按以下顺序运行列出的两个命令:

git reset HEAD <file>
git checkout -- <file>

不幸的是,这导致reset命令首先从索引中删除已暂存的文件,将其恢复为较早的提交版本,并放弃了这些更改。然后检出该文件到目录中。

您可以轻松地对此进行测试:

git init
echo "my content" > somefile.txt
git add somefile.txt
git commit -am "commit"
echo "more content" >> somefile.txt
git add somefile.txt
rm somefile.txt
git status
git checkout -- somefile.txt

现在git-recover是一个选择,但我从未使用过。