Yukarıdaki önceki "diff.external" yapılandırma yanıtımı tamamlamak için :
Jakub tarafından belirtildiği gibi , Git 1.6.6 , başlangıçta Eylül 2008'de önerilen git difftool'u tanıttı :
KULLANIM = '[--tool=tool] [--commit=ref] [--start=ref --end=ref] [--no-prompt] [file to merge]'
( --extcmdBu cevabın son bölümüne bakınız )
$LOCALbaşlangıç revizyonundan $REMOTEdosyanın içeriğini ve bitiş revizyonundaki dosyanın içeriğini içerir.
$BASEdosya içeriğini içerir
Temelde git-mergetoolgit indeksi / çalışma ağacında çalışacak şekilde değiştirilmiştir.
Ya sahnelenen veya unstaged değişiklikler ve bir yan-yana fark izleyicide değişiklikleri (örneğin görmek istiyorum ne zaman bu komut dosyası için olağan bir kullanım durumu xxdiff, tkdiffvs.).
git difftool [<filename>*]
Başka bir kullanım örneği, aynı bilgileri görmek istediğinizde ancak keyfi taahhütleri karşılaştırdığınızda (bu, revarg ayrışmasının daha iyi olabileceği kısımdır)
git difftool --start=HEAD^ --end=HEAD [-- <filename>*]
Son kullanım durumu, mevcut çalışma ağacınızı HEAD dışında bir şeyle (örneğin bir etiket) karşılaştırmak istediğiniz zamandır.
git difftool --commit=v1.0.0 [-- <filename>*]
Not: Git 2.5'ten beri git config diff.tool winmergeyeterlidir!
Bkz. " Git mergetool winmerge "
Ve Git 1.7.11 beri , sen seçeneği var --dir-diffiki geçici dizinleri doldurma yerine bir dosya çifti başına bir kere dış aracının bir örneğini çalıştırdıktan sonra bir anda iki dizin hiyerarşileri karşılaştırabilirsiniz dış fark araçları yumurtlamaya amacıyla,.
Git 2.5'ten önce:
difftoolÖzel fark aracınızla yapılandırma için pratik durum :
C:\myGitRepo>git config --global diff.tool winmerge
C:\myGitRepo>git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global difftool.prompt false
PATH'inizin bir dizin bölümünde depolanan winmerge.sh ile:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
Başka bir aracınız (kdiff3, P4Diff, ...) varsa, başka bir kabuk betiği ve uygun difftool.myDiffTool.cmdyapılandırma yönergesi oluşturun.
Daha sonra diff.toolyapılandırma ile araçları kolayca değiştirebilirsiniz .
Ayrıca Dave tarafından başka ayrıntılar eklemek için bu blog girişine sahipsiniz .
(Veya seçenekler için bu soruwinmergeu )
Bu ayara olan ilgi winmerge.shbetiğidir : özel durumları dikkate almak için özelleştirebilirsiniz.
Örneğin bakınız David Mermer 'in altında cevap hangi fırsatlar ile örneğin:
- kaynak veya hedefte yeni dosyalar
- menşe veya hedefte kaldırılan dosyalar
Kem Mason'ın cevabında bahsettiği gibi , --extcmdseçeneği kullanarak herhangi bir sarıcıdan da kaçınabilirsiniz :
--extcmd=<command>
Farkları görüntülemek için özel bir komut belirtin. git-difftoolyapılandırılan varsayılanları yok sayar ve $command $LOCAL $REMOTEbu seçenek belirtildiğinde çalışır .
Örneğin, gitkherhangi bir diffaracı bu şekilde çalıştırabilir / kullanabilirsiniz .