我有一个Git repo,我需要用默认的git diff
格式创建补丁文件。我的用例是我有一台笨重的旧OSF / 1机器我需要应用补丁,/bin/patch
程序不能理解统一差异。
如果我使用GIT_EXTERNAL_DIFF=diff
,希望我可以使用GIT_DIFF_OPTS=-c
请求上下文格式diff,那么我的(现代)diff
程序会在其命令行上抱怨额外的参数:
diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282'
diff: Try `diff --help' for more information.
external diff died, stopping at [filename].
设置GIT_EXTERNAL_DIFF=echo
表明Git似乎运行外部差异程序:
$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>
这会让diff
感到困惑,因为它不需要额外的参数。有没有一种简单的方法可以告诉git diff
创建一种旧式的“上下文”格式diff?
(我目前的计划是编写一个单线程shell脚本,只用diff
调用真实的$1 $2
,但我希望有一种不那么尴尬的方式。)
答案 0 :(得分:9)
无需配置自定义difftool,只需使用-x选项:
$ git difftool -y -x "diff -c" | less
或者配置别名以使简单的“git cdiff”命令输出上下文式的差异:
$ git config --global alias.cdiff 'difftool -y -x "diff -c"'
$ git cdiff | less
答案 1 :(得分:5)
配置difftool以执行您想要的操作:
$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE'
$ git difftool -y -t ctxdiff HEAD~4..HEAD