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

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

首先,如果磁盘上的内容与缓冲区中的内容相同,我想找一个方法让emacs完全不问这个问题。

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

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

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

编辑:

那么,我已经find了这个revbuffs包,它几乎是我所需要的。 当然足以阻止我想尝试写新的东西。 (我把revbuffs映射到Cmd-R,这很好用,类似于其他Mac应用中的Cmd-R)。

全球自动还原模式将是一个完美的解决scheme,我希望我可以select两个答案。 我宁愿只是因为想要控制发生的事情,可能是非理性的感觉。

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

EDIT2:

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

尝试使用revbufs包 :

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

也许你会喜欢全局自动还原模式。 尝试运行global-auto-revert-mode ,如果你喜欢它,你可以添加(global-auto-revert-mode)到你的〜/ .emacs文件。

Magit软件包会自动执行此操作,当您激活magit-ionotify-mode (inotify需要Linux上的emacs 24.4)。 它的描述你可以在这里find。