如何让git diff创建一个;上下文“;格式差异?
我有一个Git repo,需要从中创建一个非默认格式的补丁文件。我的用例是我有一台笨重的旧OSF/1机器,我需要在上面应用补丁,而那里的如何让git diff创建一个;上下文“;格式差异?,git,diff,Git,Diff,我有一个Git repo,需要从中创建一个非默认格式的补丁文件。我的用例是我有一台笨重的旧OSF/1机器,我需要在上面应用补丁,而那里的/bin/patch程序不理解统一的差异 如果我使用GIT\u EXTERNAL\u DIFF=DIFF,希望随后可以使用GIT\u DIFF\u OPTS=-c请求上下文格式DIFF,那么我的(现代)DIFF程序会抱怨其命令行上的额外参数: diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed428
/bin/patch
程序不理解统一的差异
如果我使用GIT\u EXTERNAL\u DIFF=DIFF
,希望随后可以使用GIT\u DIFF\u OPTS=-c
请求上下文格式DIFF,那么我的(现代)DIFF
程序会抱怨其命令行上的额外参数:
diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282'
diff: Try `diff --help' for more information.
external diff died, stopping at [filename].
设置GIT\u EXTERNAL\u DIFF=echo
显示GIT似乎在运行外部DIFF程序时使用了:
$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>
$GIT\u外部\u差异
这会混淆不需要额外参数的diff
。有没有一种简单的方法告诉git diff
创建一个旧式的“上下文”格式diff
(我目前的计划是编写一个单行shell脚本,只需
$1$2
,即可调用真正的diff
,但我希望有一种不那么尴尬的方式。)配置一个difftool来执行您想要的操作:
$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE'
$ git difftool -y -t ctxdiff HEAD~4..HEAD
无需配置自定义difftool,只需使用-x选项:
$ git difftool -y -x "diff -c" | less
或者配置别名,使简单的“git cdiff”命令输出上下文样式差异:
$ git config --global alias.cdiff 'difftool -y -x "diff -c"'
$ git cdiff | less
你能解释一下如何获得两次提交的上下文差异吗。假设相关的提交散列是
b299g2
和f242g3
?为什么我们插入“diff-c”作为一个选项?如果我们需要在两次提交之间以上下文格式获得差异,我们需要在哪里去掉旧提交和新提交,git difftool-y-t ctxdiff oldCommitHash newCommitHash