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]'
( --extcmd
Bu cevabın son bölümüne bakınız )
$LOCAL
başlangıç revizyonundan $REMOTE
dosyanın içeriğini ve bitiş revizyonundaki dosyanın içeriğini içerir.
$BASE
dosya içeriğini içerir
Temelde git-mergetool
git 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
, tkdiff
vs.).
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 winmerge
yeterlidir!
Bkz. " Git mergetool winmerge "
Ve Git 1.7.11 beri , sen seçeneği var --dir-diff
iki 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.cmd
yapılandırma yönergesi oluşturun.
Daha sonra diff.tool
yapı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.sh
betiğ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 , --extcmd
seç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-difftool
yapılandırılan varsayılanları yok sayar ve $command $LOCAL $REMOTE
bu seçenek belirtildiğinde çalışır .
Örneğin, gitk
herhangi bir diff
aracı bu şekilde çalıştırabilir / kullanabilirsiniz .