Bagaimana cara mengkonfigurasi Git untuk menggunakan alat yang berbeda untuk melakukan diffing dengan file .gitconfig?
Saya memilikinya di .gitconfig saya:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Tidak bekerja; itu hanya membuka diff baris perintah biasa. Kapan saya melakukannya
export GIT_EXTERNAL_DIFF=git-chdiff
kemudian git diff
akan membuka alat pembeda eksternal (jadi saya tahu skrip alat pembeda eksternal berfungsi dengan baik). Apakah ada yang salah dengan konfigurasi .gitconfig saya untuk alat diff?
Jawaban:
Git menawarkan serangkaian difftools yang telah dikonfigurasi "out-of-the-box" (kdiff3, kompare, tkdiff, berbaur, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, difuse, opendiff, p4merge dan araxis), dan juga memungkinkan Anda untuk menentukan milik Anda. Untuk menggunakan salah satu dari difftools yang sudah dikonfigurasi sebelumnya (misalnya, "vimdiff"), Anda menambahkan baris berikut ke
~/.gitconfig
:Sekarang, Anda dapat menjalankan "git difftool" dan menggunakan alat pilihan Anda.
Di lain pihak, menentukan difftool Anda sendiri membutuhkan lebih banyak pekerjaan, lihat Bagaimana cara melihat output 'git diff' dengan alat / penampil diff pilihan saya?
sumber
.com
menjadi.org
. Saya dapat menjelajahi jeetworks.org/softwareCara tambahan untuk melakukan itu (dari baris perintah):
Dua baris pertama akan mengatur difftool dan mergetool untuk
tkdiff
- mengubahnya sesuai dengan preferensi Anda. Baris ketiga menonaktifkan prompt yang mengganggu sehingga setiap kali Anda menekangit difftool
itu secara otomatis akan meluncurkan difftool.sumber
git config --global diff.tool diffmerge
tetapi ketika saya melakukannyagit diff myfile.txt
masih memberi saya standar unix diffYang lain telah melakukan jawaban 99% untuk ini, tetapi ada satu langkah yang tertinggal. (Jawaban saya akan datang dari OS X sehingga Anda harus mengubah jalur file yang sesuai.)
Anda membuat perubahan ini pada
~/.gitconfig
:Ini akan memperbaiki alat diff. Anda juga dapat memperbaiki ini tanpa mengedit
~/.gitconfig
secara langsung dengan memasukkan perintah ini dari terminal:1% yang gagal disebutkan orang lain adalah ketika menggunakan ini Anda tidak bisa hanya menjalankan
git diff myfile.txt
; kamu harus larigit difftool myfile.txt
.sumber
git config --global --add difftool.prompt false
. ;)Inilah bagian dari ~ / .gitconfig saya tempat saya mengkonfigurasi alat diff dan merge. Saya suka diffmerge oleh SourceGear. (Saya sangat menyukainya, sebenarnya).
Jadi, Anda lihat, Anda mendefinisikan alat bernama "diffmerge" di
[difftool "diffmerge"]
baris. Lalu saya mengatur alat "diffmerge" sebagai default di[diff] tool =
bagian ini.Saya jelas memiliki perintah "diffmerge" di jalur saya, di sini. Kalau tidak, aku harus memberikan jalan penuh ke executable.
sumber
diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
diffmerge --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
ln-s <pathtodiffmerge>/sgdm_cygwin.sh /usr/local/bin/diffmerge
dan Anda siap untuk menggunakan konfigurasi di atas. Sertadiffmerge
langsung dari baris perintah cygwin dengan jalur cygwin.sgdm.exe
saat iniMereproduksi jawaban saya dari utas ini yang lebih spesifik untuk pengaturan di luar bandingkan sebagai alat diff untuk Git. Semua detail yang telah saya bagikan sama-sama berguna untuk semua alat pada umumnya, jadi bagikan di sini:
Perintah pertama yang kami jalankan adalah sebagai berikut:
Perintah di atas membuat entri di bawah ini
.gitconfig
ditemukan di%userprofile%
direktori:Kemudian Anda menjalankan perintah di bawah ini ( Menjalankan perintah ini berlebihan dalam kasus khusus ini dan hanya diperlukan dalam beberapa kasus khusus. Anda akan mengetahuinya dalam waktu singkat ):
Perintah di atas membuat entri
.gitconfig
file di bawah ini :Yang perlu diketahui di sini adalah kuncinya
bc3
. Ini adalah kunci terkenal untuk git yang terkait dengan versi tertentu dari alat perbandingan terkenal yang tersedia di pasar (bc3
sesuai dengan versi ke-3 alat Beyond Compare). Jika Anda ingin melihat semua kunci yang telah ditentukan sebelumnya jalankangit difftool --tool-help
perintah pada git bash. Itu kembali di bawah daftar:Anda dapat menggunakan salah satu kunci di atas atau menentukan kunci kustom Anda sendiri. Jika Anda ingin mengatur alat baru sama sekali (atau versi baru dari alat terkenal) yang tidak memetakan ke salah satu kunci yang tercantum di atas maka Anda bebas untuk memetakannya ke salah satu kunci yang tercantum di atas atau ke yang baru kunci khusus Anda sendiri.
Bagaimana jika Anda harus menyiapkan alat perbandingan yang
ATAU
Seperti dalam kasus saya, saya telah menginstal di luar bandingkan 4. di luar membandingkan adalah alat yang terkenal untuk git tetapi rilis versi 4 tidak dipetakan ke salah satu kunci yang ada secara default. Jadi, Anda dapat mengikuti salah satu pendekatan di bawah ini:
Saya dapat memetakan di luar membandingkan 4 alat untuk kunci
bc3
yang sudah ada yang sesuai dengan luar membandingkan 3 versi. Saya tidak memiliki yang melebihi versi 3 di komputer saya jadi saya tidak peduli. Jika saya mau, saya bisa memetakannya ke salah satu kunci yang telah ditentukan dalam daftar di atas juga misalnyaexamdiff
.Jika Anda memetakan versi alat yang dikenal ke tombol yang sudah ada / terkenal maka Anda tidak perlu menjalankan perintah kedua karena jalur instal mereka sudah dikenal untuk git .
Untuk misalnya jika saya telah menginstal di luar membandingkan versi 3 pada kotak saya maka memiliki konfigurasi di bawah di
.gitconfig
file saya sudah cukup untuk memulai:Tetapi jika Anda ingin mengubah alat terkait default maka Anda akhirnya menyebutkan
path
atribut secara terpisah sehingga git mengetahui jalur dari mana exe alat baru Anda harus diluncurkan. Inilah entri yang diluncurkan oleh rubah git melebihi dari bandingkan 4. Perhatikan jalur exe:Pendekatan terbersih adalah mendefinisikan kunci baru sekaligus untuk alat perbandingan baru atau versi baru alat terkenal. Seperti dalam kasus saya, saya mendefinisikan kunci baru
bc4
sehingga mudah diingat. Dalam kasus seperti itu, Anda harus menjalankan dua perintah di semua tetapi perintah kedua Anda tidak akan menetapkan path dari executable alat baru Anda. Sebagai gantinya Anda harus mengaturcmd
atribut untuk alat baru Anda seperti yang ditunjukkan di bawah ini:Menjalankan perintah di atas membuat entri di bawah ini di
.gitconfig
file Anda :Saya sangat menyarankan Anda untuk mengikuti pendekatan # 2 untuk menghindari kebingungan bagi diri Anda di masa depan.
sumber
Menambahkan salah satu blok di bawah ini berfungsi agar saya dapat menggunakan KDiff3 untuk lingkungan pengembangan Windows dan Linux saya. Itu membuat alat lintas dan penggabungan lintas platform yang bagus dan konsisten.
Linux
Windows
sumber
trustExitCode = false
akan menyebabkan git bertanya kepada Anda apakah penggabungan berhasil, daripada mengandalkan apakah alat tersebut keluar dengan status benar atau salah.Jika Anda ingin memiliki opsi untuk menggunakan beberapa alat bantu, tambahkan alias ke .gitconfig
sumber
--tool
opsi. Terima kasihLihat Microsoft vscode-tips-and-trik . Jalankan saja perintah-perintah ini di terminal Anda:
git config --global merge.tool code
Tapi pertama-tama Anda perlu menambahkan
code
perintah ke PATH Anda.sumber
Di Windows kita perlu menjalankan
$git difftool --tool-help
perintah untuk melihat berbagai opsi seperti:dan kita dapat menambahkan salah satunya (misalnya winmerge) seperti
Untuk mengonfigurasi notepad ++ untuk melihat file sebelum melakukan:
dan menggunakan
$ git commit
akan membuka informasi komit di notepad ++sumber