进阶配置

scmpuff

scmpuff 是一个 git 拓展,支持数字快捷键的操作,如图所示:

尤其是当文件路径较长时,我们可以用数字来代替文件,同时也支持 1-3 这种写法,表示多个文件。

icdiff

git 默认的对比是上下对比,但个人认为不够直观。尤其是在大屏显示器上,浪费了大量空间。

icdiff 是一个左右水平显示的 diff 工具,在 git 中也可以使用:

function gdt() {
    params="$@"
    if brew ls --versions scmpuff > /dev/null; then
        params=`scmpuff expand "$@" 2>/dev/null`
    fi

    if [ $# -eq 0 ]; then
        git difftool --no-prompt --extcmd "icdiff --line-numbers --no-bold" | less
    elif [ ${#params} -eq 0 ]; then
        git difftool --no-prompt --extcmd "icdiff --line-numbers --no-bold" "$@" | less
    else
        git difftool --no-prompt --extcmd "icdiff --line-numbers --no-bold" "$params" | less
    fi
}

然后用 gdt 来代替 git diff 即可,效果如图所示:

尤其是当两行只有少数变化时,默认的 git diff 会展示太多无用的干扰信息,而 icdiff 的输出就非常简洁直观了。

非文本文件 Diff

默认情况下,对于图片或者二进制文件,git 不会显示它们的具体变化。但如果我们自己配置了 diff 工具,就可以显示特定类型文件的变动。如果使用我的配置,默认自带了图片和 plist 文件的 diff 的功能。

也可以手动开启,首先编辑 ~/.gitconfig 文件:

[core]
    attributesfile = ~/.gitattributes
[diff "exif"]
    textconv = exiftool
[diff "plist"]
    textconv = plutil -convert xml1 -o -

然后编辑 ~/gitattributes 文件:

*.png diff=exif
*.jpg diff=exif
*.plist diff=plist

最后再安装一下依赖:

brew install exiftool

最终 plist 文件的 diff 效果如图所示:

results matching ""

    No results matching ""