代码之家  ›  专栏  ›  技术社区  ›  Greg Hewgill

如何使git diff创建“context”格式diff?

  •  9
  • Greg Hewgill  · 技术社区  · 15 年前

    我有一个Git回购,我需要创建一个补丁文件以外的东西默认 git diff 格式。我的用例是我有一台笨重的旧OSF/1机器,我需要在上面应用补丁,并且 /bin/patch 程序不理解统一的差异。

    如果我使用 GIT_EXTERNAL_DIFF=diff 希望我能用 GIT_DIFF_OPTS=-c 要请求上下文格式差异,那么我的(现代) diff 程序抱怨命令行上的额外参数:

    diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282'
    diff: Try `diff --help' for more information.
    external diff died, stopping at [filename].
    

    设置 GIT_EXTERNAL_DIFF=echo 显示Git似乎使用以下命令运行外部diff程序:

    $GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>
    

    这混淆了 微分 它不需要额外的参数。有没有一种简单的说法 差异比较 创建旧的“上下文”格式差异?

    (我现在的计划是编写一个称为真的单行shell脚本。 微分 用公正 $1 $2 但我希望有一个不那么尴尬的方式。

    2 回复  |  直到 10 年前
        1
  •  5
  •   artagnon    15 年前

    配置difftool以执行所需操作:

    $ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE'
    $ git difftool -y -t ctxdiff HEAD~4..HEAD
    
        2
  •  9
  •   Deven T. Corzine    12 年前

    不需要配置自定义的Debug工具,只需使用-X选项:

    $ git difftool -y -x "diff -c" | less
    

    或者配置一个别名,使一个简单的“git cdif”命令输出一个上下文样式差异:

    $ git config --global alias.cdiff 'difftool -y -x "diff -c"'
    $ git cdiff | less