2010-06-28 257 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