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

标签 git emacs elisp aquamacs

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

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

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

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

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

编辑:

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

全局自动恢复模式是一个完美的解决方案,我希望我可以选择两个答案。我更喜欢 revbuffs 只是因为想要控制发生的事情的感觉,这可能是非理性的。

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

编辑2:

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

最佳答案

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

关于git - 在 git 中切换分支时,如何让 Emacs 恢复所有未更改的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665600/

相关文章:

git - 奇怪的git merge 问题

node.js - 如何远程更新实时 Node.js Heroku 应用程序?

git - 如何 merge 两个不同的 Git 存储库?

eclipse - Eclipse Git(EGit)远程:无效的数据包行 header

shell - 从 shell 启动时在 shell 中启动 Emacs

打开新文件时 Emacs 运行默认 Logo 窗口

emacs - 为什么我在 Emacs 24.1 下不能使用旧的主题样式文件?

emacs - 如何在 Emacs Lisp 中将函数的词法绑定(bind)传递给 'eval'?

emacs - 调整 D 中 UCFS 链的对齐规则

elisp - Emacs Lisp 的形式语法