git - 使用 vimdiff 查看所有 `git diffs`

标签 git vim diff vimdiff

我将 git diff 设置为包装到 vimdiff 中,使用“Git Diff with Vimdiff”作为指南,它按预期工作,除非有许多文件发生变化。

当有多个文件发生变化并且我运行 git diff 时,它会打开第一个文件,并且在退出 vimdiff 的第一个实例后,我会看到以下消息:

external diff died, stopping at filename

这与我习惯的行为完全不同。我过去使用 SVN 进行过类似的设置,当对多个文件进行比较时,我会检查第一个文件,然后使用 :wq 编写并退出,然后打开下一个有差异的文件。

Git 不是这种情况。我尝试了 :n[ext],但这样做并没有用原始文件填充左侧窗口,因此它可以与修改后的版本进行比较。

最佳答案

git config --global diff.tool vimdiff
git config --global difftool.prompt false

键入 git difftool 会产生预期的行为。

导航命令,

  • :qa 在 vi​​m 中循环到变更集中的下一个文件而不保存任何内容。

别名(示例)

git config --global alias.d difftool

.. 会让你输入 git d 来调用 vimdiff。

高级用例,

  • 默认情况下,git 使用 -R 选项调用 vimdiff。你可以用 git config --global difftool.vimdiff.cmd 'vimdiff "$LOCAL""$REMOTE"' 覆盖它。这将以可写模式打开 vimdiff,允许在 diff 时进行编辑。
  • :wq 在 vi​​m 中循环到更改集中的下一个文件,更改已保存。

关于git - 使用 vimdiff 查看所有 `git diffs`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713765/

相关文章:

git - 如何使用 git filter-repo 修改远程历史记录?

vim - 如何告诉 Vim 在保存前自动缩进

.net - 检测两个png图像是否不同

php - PHP 中的字符字符串差异

c - 有没有办法对 C 代码进行句法/语义差异?

git - 从 GitHub 公共(public)仓库安装 NPM 时“无法从远程仓库读取”

git - 从 "fixup!"中删除 `git commit --fixup HEAD` 消息

git:以编程方式测试索引是否脏

vim - 在 80 个字符处换行

vim - 防止在 NERDTree 窗口中模糊查找器加载文件