git clean -f -d 从本地目录中删除了文件

6

git clean -f -d从我的本地目录中删除了文件,我该如何检索它们? 我使用它来删除未跟踪的目录和文件,发现它也从我的本地文件系统中删除了它们。这是可能的吗?我做错了什么,是否有一种方法可以检索它们?


1
“我做错了什么?”这取决于您的预期结果。听起来像是 git clean -f -d 的行为符合文档:它从您的工作副本中删除了未跟踪的文件和目录。根据定义,如果它们未被跟踪,则不在存储库中,因此它们被删除的地方也只能是这里了。 - David
3个回答

4
如先前答案所述,如果你正在使用Linux操作系统,那么你无法恢复它们。这就是“git clean”的目的。除非你正在使用能够进行快照的文件系统,但那样的话,你可能知道如何将它们恢复。
如果你的目标是想要在“git status”中避免看到它们,你有两个选择: A)
git status -uno

不会打印未被追踪的文件和目录。

B) 如果有一组固定的文件(或文件名模式)永远不想在“git status”中看到,也不想将它们纳入版本控制,你可以“忽略”它们。只需要将它们的名称或模式放在名为“.gitignore”的文件中,放在存储库的根目录下。

这通常用于生成的文件。

以下示例忽略以“.html”结尾的文件和名为“out/myFile.txt”的文件:

*.html
out/myFile.txt

请查看

git help ignore

更多信息请参考。


是的,在Linux上工作正常。所以我猜它已经消失了 :-( 这就是在git中作为新手付出的代价。 - tan
2
他们说有两种人:一种是因为错误的git命令而丢失工作的人,另一种是还没有丢失工作的人,但这只是时间问题 :) - deubeuliou
请注意,并非总是一切都已经无法挽回:如果文件在编辑器中打开,且该编辑器没有自动重新加载它们,您可以再次保存它们。 - deubeuliou

1
git clean删除的文件是未被跟踪的,这意味着git没有保留它们的备份。如果你需要找回它们,最好的方法是立刻将文件系统重新挂载为只读,并运行适合你的操作系统的已删除文件恢复工具。

1
这取决于您如何删除它们。在Windows中,这些文件应该只是进入了回收站。在Linux中,我相信git使用rm命令,因此您应该快速搜索如何恢复意外删除的rm文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接