如何保护未被追踪的.gitignored文件免受git删除?

4
我之所以问这个问题,是因为git stash -u开始删除我的.gitignored Eclipse配置设置,并没有将它们保存到stash中。我完全失去了我的项目配置。(如果这不是正确或预期的行为,请告诉我)

还有哪些命令会删除未跟踪的忽略文件?

有哪些有效的预防措施可以确保未跟踪的本地文件不被删除?


编辑-补充信息:

git-stash

如果要保留.gitignored文件,请使用--all代替-u。

[-u | --include-untracked]

如果使用--include-untracked选项,则所有未跟踪的文件也会被存储,并使用git clean进行清理,使工作目录处于非常干净的状态。如果改用--all选项,则忽略的文件将被一并存储和清理。


git stash -u应该会储藏未被追踪的文件(除了已被追踪的工作目录中的更改)。如果您恢复储藏,您的未被追踪的文件应该会再次出现。如果没有,那么可能有问题。 - pattivacek
@patrickvacek еҲҡеҲҡеҸҲиҜ•дәҶдёҖж¬ЎгҖӮgit stashзҡ„иЎҢдёәжҳҜеҗҲйҖӮзҡ„гҖӮgit stash -uе°ҶдјҡеҜ№еҪ“еүҚeclipseжӯЈеңЁдҪҝз”Ёдё”еңЁ.gitignoreдёӯзҡ„ж–Ү件жҠӣеҮә"unlink of file"й”ҷиҜҜгҖӮе…ій—ӯeclipse并е…Ғи®ёеҲ йҷӨж–Ү件е°ұдјҡйҷ·е…Ҙйә»зғҰгҖӮ - 00500005
一个快速的本地测试表明未跟踪的文件不应受影响(我正在使用git v.1.8.1.2)。我不知道你的情况出了什么问题。 - LeGEC
@LeGEC 使用 git 版本 1.8.3.msysgit.0(来自 win git bash 安装程序)。 - 00500005
这里是1.8.1.msysgit.1,同样的问题,“git stash -u”清理了被忽略的文件,但没有将它们藏起来。 - Oktalist
只有一些被忽略的文件受到了影响:具体来说,受影响的文件似乎是那些在工作树或索引中列在.gitignore中但在HEAD中未列出的文件。 - Oktalist
1个回答

5
有什么有效的预防措施可以确保未被跟踪的本地文件不会被删除?
不要使用删除文件的命令 :-).
认真地说:git没有专门保护未被跟踪文件的机制,但是通常情况下,git会尽最大努力不丢失任何数据,除非您明确告诉它要丢弃。
即使是最危险的命令(如 git reset --hard,git checkout -- file)也不会触及未被跟踪的文件。唯一危险的命令是(据我所知):
- git stash -u(就像你发现的那样) - git clean
此外,我发现最好从不在未被跟踪的文件中存储重要数据。如果这很重要,就需要进行检查操作。只有一次性数据和已生成的文件应该被.gitignored。
至于Eclipse配置:最好有一些工具来自动生成它(或者让Eclipse通过自动发现自动生成)。然后你可以安全地将其.gitignored,如果丢失了可以重新创建。

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