我有一个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].
Run Code Online (Sandbox Code Playgroud)
设置GIT_EXTERNAL_DIFF=echo显示Git似乎运行外部差异程序:
$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>
Run Code Online (Sandbox Code Playgroud)
这种混淆diff不需要额外的参数.是否有一种简单的方法来git diff创建一个旧式的"上下文"格式diff?
(我目前的计划是编写一个单线程的shell脚本,diff只是调用真实的$1 $2,但我希望有一种不那么尴尬的方式.)
无需配置自定义difftool,只需使用-x选项:
$ git difftool -y -x "diff -c" | less
Run Code Online (Sandbox Code Playgroud)
或者配置别名以使简单的"git cdiff"命令输出上下文样式的diff:
$ git config --global alias.cdiff 'difftool -y -x "diff -c"'
$ git cdiff | less
Run Code Online (Sandbox Code Playgroud)
配置difftool以执行您想要的操作:
$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE'
$ git difftool -y -t ctxdiff HEAD~4..HEAD
Run Code Online (Sandbox Code Playgroud)