有没有办法阻止 git 完全删除文件的内容?

时间:2021-01-05 12:01:10

标签: git undo

我不知道主要原因,但偶尔 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

1 个答案:

答案 0 :(得分:4)

检查您的文件是否会被 git clean -ndx 删除(-n 很重要:它会预览将要删除的内容,而不是实际删除任何文件)

还要检查该文件是否被忽略:

git check-ignore -v -- the/temp/file

(它可以被 global core.exclude file 忽略)

在这两种情况下,这都表明重复出现的 git clean 可能是文件删除的原因。

由于 check-ignore 没有返回任何内容,这指向了 Git 外部的根本原因,更多地与 Emacs 相关,正如 OP 指出的 in the comments