切换 git 分支时如何处理 vim 缓冲区?

How do I deal with vim buffers when switching git branches?

因此,我在 vim 缓冲区中打开了大量文件,并且我正在使用 git 开发功能分支。突然,我意识到我需要恢复到我的 master 分支来快速修复。

提交后,我让 vim 会话保持打开状态并切换回主分支。但是,当我尝试从缓冲区加载我需要的文件时,我现在收到消息

Warning: File "<filename>" has changed since editing started

这对我来说是完整的。缓冲区中的文件来自我的功能分支,现在我已经切换回主分支,可以理解有一些增量需要处理。

我的问题是,这种情况在专业层面是如何处理的?

想到解决方案,我可以关闭所有缓冲区并重新打开文件。但是,我希望有一种 "smart" 方法可以做到这一点。有没有办法用所需分支中的对应文件替换当前 vim 缓冲区中的文件?有没有办法维护多个缓冲区,每个 git 分支一个?

最终,我希望能够在 git 分支之间切换,并让打开的 vim 会话只是 "know" 当前应该驻留在缓冲区中的文件版本。

部分原因是我仍在学习 vim 缓冲区的工作原理,并且刚刚开始广泛使用它们。因此,如果我做出了任何不成立的假设,请在适当的地方纠正我。

您可以执行 :bufdo e 强制 vim 从文件系统重新读取所有打开的缓冲区。

bufdo 是一种将命令应用于多个缓冲区的方法。 (同样,如果您使用制表符,则有一个 tabdo

所以它会用新分支的版本替换旧分支的版本。

(那里有类似的问题和答案:Git branching while files are opened

我会在你的 ~/.vimrc:

中推荐你 :set autoread

When a file has been detected to have been changed outside of Vim and it has not been changed inside of Vim, automatically read it again.