【发布时间】:2021-04-11 04:17:26
【问题描述】:
我不知道主要原因,但偶尔git 会在提交未成功完成时完全删除我正在处理的缓冲区/文件中的内容。
文件的内容被清理后,文件的undo-tree 也无法使用emacs 获取最新的更改,而是它的树完全是空的。我无法找到我拥有的最新更改,并且它们没有显示在 stash 中。
在后台:zsh 的git auto-fetch 正在运行,我不确定这会产生什么影响。
=> 有没有办法阻止git 完全删除文件的内容?
-
文件 (
scripts/lib.py) 不在.gitignore或~/.gitignore_global中。 -
git check-ignore -v -- scripts/lib.py返回空 -
请注意,文件保持原样,只有 0 个字节
❯ ls -lA -tr -h | grep lib.py
-rw-r--r-- 1 alper alper 0 2021-01-04 22:09 lib.py
【问题讨论】:
-
如果您想要一个具体的答案,您可能应该告诉我们文件的名称,它是否与您的
.gitignore中的任何模式匹配,以及clean和check-ignore命令的输出在现有答案中描述。此外,您的undo-tree是否正在使用持久的撤消历史文件,调用的 that 以及 it 是否受这些命令的影响。 -
"文件不在 .gitignore 或 ~/.gitignore_global 中":只有 git check-ignore 可以确认:你尝试过 git check-ignore 吗?
-
好的,你能用更多细节来编辑你的问题吗,正如 Userless 的有用评论所示?操作系统版本,git版本,还有其他文件受影响吗?
-
所以你正在使用 Git 插件、Emacs 插件,并且在你做某事时一些文件被随机清除(而不是删除)。你能画出更完整的设置图吗? “如果提交未成功完成” 是什么意思,您究竟采取了哪些措施来结束这种情况?我不会怀疑 Git 会清理随机文件的内容,而是你的编辑器或与文件系统交互的任何其他工具。
-
但是
git diff显示一个空文件并不意味着 Git 清除了该文件。它可能在很久以前就发生了,通过其他一些过程。如果您无法解释正在发生的一切,我们将无能为力。我不会怀疑 Git。