Emacs不会在Git仓库中备份文件

4
emacs 不会为 git 仓库中的文件创建备份。我希望能够保存它们,因为我经常依靠它们来撤消提交到 git 仓库之前的一些更改。

我以前一直使用 xemacs,在第一次保存时它总是会创建通常的 *~ 文件。但是如果在 git 项目中工作,则 emacs 不会这样做:在项目外工作时会创建通常的备份文件,但不会在 git 仓库内部创建备份文件。

我尝试在我的 .emacs 文件中使用以下内容,但没有成功:

(setq make-backup-files t)
(setq backup-inhibited nil)

我已经查看了这里的文档:

https://www.gnu.org/software/emacs/manual/html_node/elisp/Making-Backups.html

在关于backup-inhibited的部分中,似乎emacs每次都会检查文件是否受控于版本控制系统,如果是,则不会创建备份文件。这个检查可能会阻止所需备份文件的创建。有没有一种方法可以改变这种行为?
1个回答

3

这里所述:

如果您的文件在版本控制下,则vc-checkinbackup-inhibited设置为t

它还提到了completion-ignored-extensions,但首先请检查您是否已经激活了该模块,就像此线程中所述一样:在lisp/vc.el中。
该模块包括以下内容

   ;; (unless vc-make-backup-files
   ;;   (make-local-variable 'backup-inhibited)
   ;;   (setq backup-inhibited t))

设置 vc-make-backup-files 可以帮助避免备份文件。

"备份文件" 章节中有解释:

对于被版本控制系统管理的文件(参见版本控制),变量 vc-make-backup-files 决定是否创建备份文件。
默认情况下,该变量为 nil,因为在版本控制系统中存储所有先前版本时,备份文件是多余的。


谢谢,那个可行。针对最后一段的问题,emacs ~ 文件仍然有一些用处,因为它们保留了日期,而从git检索的文件则没有。 - Peter B
@PeterB 有趣的观点。还有其他系统可以恢复由Git检出的文件时间戳:https://dev59.com/HXI95IYBdhLWcg3wvgh9#56266987,https://dev59.com/RWEi5IYBdhLWcg3wCYOY#55609950。 - VonC
再次感谢。这比简单地将文件从一个位置移动到另一个位置要复杂得多,而且我有一种根深蒂固(可能是不合理的)的厌恶感,不愿使用“touch”来回溯文件的日期;但知道这个信息还是很好的。 - Peter B

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