在git中切换分支时,如何让Emacs恢复所有未更改的缓冲区?

通常,当我在git中切换分支时,如果文件在emacs中打开,那么emacs会询问我是否要还原它们(因为它们认为它们已在磁盘上更改),即使内容相同。

首先,我想找到一种方法让emacs根本不问我有关磁盘上的内容是否与缓冲区中的内容相同的问题。

其次,我想要一个命令来还原(没有查询)所有未保存更改的打开缓冲区,并向我询问那些确实存在未保存更改的缓冲区。

另外,我愿意接受其他解决方案,工作方式等的建议。 如果人们可以给我关于从哪里开始的指示,我很高兴写emacs-lisp。

PS如果有问题,我在OSX上使用Aquamacs。

编辑:

好吧,我发现revbuffs软件包几乎是我所需要的。 确实足以阻止我想要尝试自己编写任何新东西。 (我将revbuffs映射到Cmd-R,效果很好。有点类似于其他Mac应用程序中的Cmd-R)。

全局自动还原模式将是一个很好的解决方案,我希望我可以选择两个答案。 我之所以喜欢振作精神,仅仅是因为一种想要控制一切的感觉,这可能是不合理的。

我有点猜测,如果我从emacs中访问git,那么它可能会更容易处理,但是我目前更喜欢通过命令行访问git。 (我使用emacs的时间还不够长,无法使其成为我的操作系统)。 我将对马吉特进行更彻底的调查。

编辑2:

我已经使用magit一年了,可以强烈推荐它在emacs中处理git。 但是,每当我在emacs之外进行重新基准设置时,我仍然会使用revbuffs。

Singletoned asked 2020-01-13T13:34:34Z
3个解决方案
41 votes

也许您想要全局自动恢复模式。 尝试运行global-auto-revert-mode,如果喜欢,可以将(global-auto-revert-mode)添加到您的〜/ .emacs文件中。

Pat Notz answered 2020-01-13T13:35:24Z
18 votes

试试revbufs软件包:

revbufs.el是一个很小的Emacs软件包,当您在Emacs中或通过外部工具(例如,代码生成器,如Jomtool)进行文件编辑时,可以安全地还原缓冲区。

scottfrazer answered 2020-01-13T13:35:04Z
11 votes

当您激活magit-ionotify-mode(在Linux上,需要emacs 24.4)时,Magit软件包会自动执行此操作。 您可以在此处找到其说明。

Alex Ott answered 2020-01-13T13:35:45Z
translate from https://stackoverflow.com:/questions/665600/how-can-i-get-emacs-to-revert-all-unchanged-buffers-when-switching-branches-in-g