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

时间:2009-03-20 10:24:24

标签: git emacs elisp aquamacs

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

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

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

或者,我会接受有关其他解决方案,工作方式等的建议,我可以尝试。如果人们可以给我指点从哪里开始,我很高兴写emacs-lisp。

PS如果重要的话,我在OSX上使用Aquamacs。

编辑:

好吧,我发现revbuffs包几乎是我需要的。当然足以阻止我想尝试自己写任何新东西。 (我将revbuff映射到Cmd-R,效果非常好。类似于其他Mac应用程序中的Cmd-R)。

Global-auto-revert模式本来是一个非常好的解决方案,我希望我能选择两个答案。我更喜欢revbuffs,仅仅是因为想要控制所发生的事情,可能是非理性的感觉。

我有点猜测,如果我从emacs中访问git,那么它可能会更容易处理,但我目前更喜欢通过命令行访问git。 (我还没有使用emacs足够长的时间来使它成为我的操作系统)。我会更彻底地调查magit。

EDIT2:

我已经使用magit一年了,并且强烈推荐它来处理emacs中的git。但是,每当我在emacs之外进行rebase时,我仍然会使用revbuff。

3 个答案:

答案 0 :(得分:41)

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

答案 1 :(得分:18)

试试revbufs package

  

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

答案 2 :(得分:11)

Magit包会在您激活magit-ionotify-mode时自动执行此操作(inotify需要在Linux上使用emacs 24.4)。你可以找到它的描述here