Git checkout -- 恢复丢失的文件
Git checkout -- recover lost files
我不小心删除了 git 存储库中的本地文件更改。他们没有承诺,甚至没有被推动。
我做了什么:
git状态
(然后显示未暂存提交的文件,我不小心删除了这个命令称为 "smdr" 的整个文件夹):
git结帐--smdr
然后文件更改消失了。
我怎样才能恢复这些文件(在 git 签出 -- smdr 命令之前恢复所有文件)?
您可以使用任何给定的选项:
Git 引用日志
键入 git reflog
并签出您需要的提交,它会将您的存储库“还原”为“已删除”的提交。
Git 还原
另一种选择是使用 git revert SHA-1
这将还原您的提交。它只会撤消您的更改
Git 重置
Git 重置将检查给定 sha-1 的内容。它会将您的分支设置为与 SHA-1
相同的状态
你不能 Git。这些文件未提交,因此它们不在历史记录中。您刚刚在索引中获得了 git checkout
.
的(不存在的)版本
你唯一的希望就是你的备份系统。
除了已接受的答案外,我还发现了我们可以遵循的良好做法,以防止 checkout
事故再次发生。
这对我来说最突出 from this answer.
"Here's another crazy idea: don't run 'git checkout ...' on a dirty work tree. Problem solved."
自从使用 git checkout .
丢弃任何 unstaged/uncommitted 更改后,我就停止了。我现在使用更适合这个的命令:git reset
.
git reset
和 git reset --hard
当您完全确定要永久放弃更改时。 git stash
也是你的朋友,就在你放弃这些更改之前,在你删除之前把它藏起来不会有什么坏处。养成这两个习惯并使用 git checkout
仅用于在分支之间切换(大部分)对我来说非常有效。
我不小心删除了 git 存储库中的本地文件更改。他们没有承诺,甚至没有被推动。
我做了什么: git状态 (然后显示未暂存提交的文件,我不小心删除了这个命令称为 "smdr" 的整个文件夹): git结帐--smdr
然后文件更改消失了。
我怎样才能恢复这些文件(在 git 签出 -- smdr 命令之前恢复所有文件)?
您可以使用任何给定的选项:
Git 引用日志
键入 git reflog
并签出您需要的提交,它会将您的存储库“还原”为“已删除”的提交。
Git 还原
另一种选择是使用 git revert SHA-1
这将还原您的提交。它只会撤消您的更改
Git 重置
Git 重置将检查给定 sha-1 的内容。它会将您的分支设置为与 SHA-1
相同的状态你不能 Git。这些文件未提交,因此它们不在历史记录中。您刚刚在索引中获得了 git checkout
.
你唯一的希望就是你的备份系统。
除了已接受的答案外,我还发现了我们可以遵循的良好做法,以防止 checkout
事故再次发生。
这对我来说最突出 from this answer.
"Here's another crazy idea: don't run 'git checkout ...' on a dirty work tree. Problem solved."
自从使用 git checkout .
丢弃任何 unstaged/uncommitted 更改后,我就停止了。我现在使用更适合这个的命令:git reset
.
git reset
和 git reset --hard
当您完全确定要永久放弃更改时。 git stash
也是你的朋友,就在你放弃这些更改之前,在你删除之前把它藏起来不会有什么坏处。养成这两个习惯并使用 git checkout
仅用于在分支之间切换(大部分)对我来说非常有效。