在什么情况下,git会删除未被跟踪的文件?

3

我希望确保在使用git存储库时不会意外删除一些未跟踪的文件。

我知道可以删除未跟踪文件的命令有:

  • git clean,显然,它的目的是删除未跟踪的文件。
  • git stash -u,文件将从工作目录中删除,但保留在stash中。

是否存在其他情况下git会删除未跟踪的文件?


1
我曾经对 git worktree remove 存有疑问,但是我刚刚查了一下,它没有删除未跟踪文件的选项。供参考。 - Romain Valeri
更好的想法可能是跟踪文件,或将它们保持在工作目录之外。 - chepner
2个回答

3

Torek的例子就是我要给出的例子。当你执行像git checkout <filename>这样的危险命令时,Git会毫不犹豫地让你覆盖掉你的版本。基本上,每当你指定一个具体的文件名时,Git都会允许你这样做。

当然,git reset --hard也可能会造成各种混乱。


2
虽然这并不是技术上的“删除”未跟踪文件,但如果一个未跟踪的文件被标记为.gitignore,并且您检出了包含该名称文件的提交,Git 有时会自由地用跟踪的文件覆盖该文件。具体示例请参见 Stop git from silently clobbering ignorefiles (bug in git?)?
将被忽略的文件变成从所选提交中提取的跟踪文件后,返回到某个不存在该文件的其他提交将会删除来自所选提交的(已跟踪的)文件。因此,现在该文件真正消失了,尽管需要两个git checkoutgit switch操作才能到达这里。

谢谢,我不知道忽略文件会产生这种影响! - Erik

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