2010-06-28 9 views
9

Varsayılan bir git diff biçiminden başka bir dosyada bir yama dosyası oluşturmam gereken bir Git repo'um var. Benim kullanım durumumda, yama uygulamak zorunda kaldığım bir eski eski OSF/1 makinesi var ve /bin/patch programı orada birleşik diffs anlamıyor.Git-diff bir "içerik" biçimi farklılığı nasıl oluşturulur?

Ben o zaman bir bağlam biçimi diff istemek için GIT_DIFF_OPTS=-c kullanabilirsiniz umarak GIT_EXTERNAL_DIFF=diff kullanırsanız, o zaman benim (modern) diff programın kendi komut satırında yaklaşık ekstra argümanlar yakınır:

diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282' 
diff: Try `diff --help' for more information. 
external diff died, stopping at [filename]. 

GIT_EXTERNAL_DIFF=echo gösterileri Ayar o Bu ekstra argümanlar istemiyor diff karıştırır

$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode> 

: Git ile dış fark programı çalıştırmak gibi görünüyor. git diff'a eski stil "içerik" biçimi farklılığı yaratmanın kolay bir yolu var mı?

(Benim şu anki planı sadece $1 $2 gerçek diff çağıran bir tek satırlık kabuk senaryo yazmaya, ama daha az garip bir yolu vardır umut ediyorum.)

cevap

5

yapılandır bir difftool ne yapacağını sen istiyorum: bir özel difftool yapılandırmak için gerek yoktur

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

biz eski işlemek ve yeni taahhüt dışarı gerekiyor 2 kaydedilmesini ise araya bağlam formatında diff almak gerekiyorsa, git difftool -y -t ctxdiff oldCommitHash newCommitHash' –

8

, sadece -x seçeneğini kullanın:

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

Ya için bir takma ad yapılandırmak Basit bir "git cdiff" komutu çıktı üretmesi bir bağlam tarzı diff olun:

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

Bana iki taahhütten oluşan bağlam farkını nasıl alacağımı açıklayabilir misiniz? İlgili taahhüt sağlama işlerinin 'b299g2' ve' f242g3' olduğunu mu söyleyelim? –

+0

neden "diff -c" yi bir seçenek olarak ekliyoruz? –