通常,当我在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。
答案 0 :(得分:41)
也许你想要全局自动恢复模式。尝试运行global-auto-revert-mode
,如果您愿意,可以将(global-auto-revert-mode)
添加到〜/ .emacs文件中。
答案 1 :(得分:18)
revbufs.el
是一个很小的Emacs软件包,可以在Emacs中编辑文件时通过外部工具(例如Jomtool等代码生成器)安全地还原缓冲区...
答案 2 :(得分:11)
Magit包会在您激活magit-ionotify-mode
时自动执行此操作(inotify需要在Linux上使用emacs 24.4)。你可以找到它的描述here。