当我做“git diff”的时候,我怎么能得到一个并排的差异化呢?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

当我键入“git diff”时,我希望看到一个并排的diff,比如“diff-y”,或者在交互式diff工具中显示diff,比如“kDiff3”。这是如何做到的呢?

提问于
用户回答回答于

虽然Git有一个diff的内部实现,但是可以设置一个外部工具。

有两种不同的方法来指定外部diff工具:

  1. 设置GIT_EXTERNAL_DIFFGIT_DIFF_OPTS环境变量
  2. 通过git config

另见:

当做一个git diff,Git检查上述环境变量的设置及其.gitconfig档案。

默认情况下,Git向diff程序传递以下七个参数:

path  old-file  old-hex old-mode  new-file  new-hex new-mode

通常只需要旧文件和新文件参数。当然,大多数diff工具只使用两个文件名作为参数。这意味着需要编写一个小的包装器-脚本,它将Git提供给脚本的参数,并将它们交给您选择的外部Git程序。

假设你把你的包装脚本放在下面~/scripts/my_diff.sh:

#!/bin/bash
# un-comment one diff tool you'd like to use

# side-by-side diff with custom options:
# /usr/bin/sdiff -w200 -l "$2" "$5" 

# using kdiff3 as the side-by-side diff:
# /usr/bin/kdiff3 "$2" "$5"

# using Meld 
/usr/bin/meld "$2" "$5"

# using VIM
# /usr/bin/vim -d "$2" "$5"

然后,需要使该脚本可执行:

chmod a+x ~/scripts/my_diff.sh

然后,需要告诉Git如何在何处找到自定义diff包装脚本。

用户回答回答于

扫码关注云+社区