2010-06-28 244 views
9

我有一个Git仓库,我需要用默认的git diff格式创建一个补丁文件。我的用例是我有一个笨重的旧OSF/1机器,我需要应用该补丁,并且那里的程序不理解统一差异。如何让git-diff创建一个“context”格式的diff?

如果我使用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> 

这混淆diff不希望额外的参数。有没有简单的方法来告诉git diff创建一个旧式的“上下文”格式比较?

(我目前的计划是写调用真正diff只有$1 $2一行代码的shell脚本,但我希望有一个不太尴尬的方式。)

回答

5

配置一个difftool做你想:

$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE' 
$ git difftool -y -t ctxdiff HEAD~4..HEAD 
+0

如果我们需要得到上下文格式差异其间2个提交,我们在哪里需要淘汰旧提交新犯, 'git difftool -y -t ctxdiff oldCommitHash newCommitHash' – 2016-12-07 06:11:36

8

无需配置自定义difftool,只需使用-x选项:

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

或配置一个别名做一个简单的“混帐电容Cdiff”命令输出上下文风格的差异:

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

你能解释我如何得到他的两个提交的上下文比较。让我们说相关的提交哈希是'b299g2'和'f242g3'? – 2016-11-30 04:58:38

+0

为什么我们插入''diff -c“'作为选项 – 2017-01-18 05:23:03

相关问题