Emacs 说
您想要修改一个缓冲区,该缓冲区的磁盘文件自上次读入或保存到该缓冲区后已发生更改。
如果您说
y
继续修改此缓冲区,则可能会破坏重写该文件的人的工作。如果您说r
要恢复,则缓冲区的内容将从磁盘上的文件刷新。如果您说n
,您开始进行的更改将被中止。通常,您应该键入
n
,然后键入M-x revert-buffer
, 以获取文件的最新版本,然后再次进行更改。
为什么推荐
通常,您应该输入
n
,然后输入M-x revert-buffer
, 来获取文件的最新版本,然后再次进行更改,
而不是
说
r
要恢复,缓冲区的内容是从磁盘上的文件刷新的吗?
两者真的不同吗?他们对我来说似乎是一样的?
答案1
您想要修改一个缓冲区,其磁盘文件已更改自您上次将其读入或保存到此缓冲区以来。
这意味着在您保存机会之前,某人在某处更改了您当前正在使用的文件,从图形上看,它会是这样的:
— Current file on Disk
/
File-orig —
\
— Your saved buffer (*)
两者可以不同。如果您选择它,r它将保护您的缓冲区供以后使用从磁盘重新加载。
— Current file on Disk —
/ \
File-orig — — Current buffer (*)
\
— Your saved buffer
因此,您可以查看自上次从磁盘读取文件以来对文件所做的更改。
现在,当您执行r然后 时M-x revert-buffer,会发生以下情况:
— File on Disk —
/ \
File-orig — — Buffer read from disk ——— (*) Applied your changes over the one on the disk
\ /
— Your saved buffer —————————————————————
瞧!在磁盘上所做的更改和您的更改现在位于同一个文件中,两者都已合并。如果你了解Git,上面的操作应该和合并分支类似。
如果您只选择,r您所做的更改将会丢失。如果您选择y其他人所做的更改将会丢失。这就是推荐这样做的原因。