Perilaku git diff default adalah membuka setiap file diff dalam serial (tunggu file sebelumnya ditutup sebelum membuka file berikutnya).
Saya mencari cara untuk membuka semua file sekaligus - di BeyondCompare misalnya ini akan membuka semua file di tab dalam jendela BC yang sama.
Ini akan membuatnya lebih mudah untuk meninjau serangkaian perubahan yang kompleks; gulir cepat ke depan antara file diff dan abaikan file yang tidak penting.
Jawaban:
Mulai dengan
git
v1.7.11, Anda dapat menggunakangit difftool --dir-diff
untuk melakukan diff direktori.Fitur ini berfungsi baik dengan Meld 3.14.2 misalnya, dan memungkinkan Anda menjelajahi semua file yang dimodifikasi:
Ini adalah fungsi Bash yang berguna:
Jawaban berikut ini berlaku untuk
git
instalasi yang lebih lama dari v1.7.11.Pertanyaan yang sama ditanyakan pada daftar mail git .
Saya mengumpulkan skrip shell berdasarkan utas email yang melakukan direktori berbeda antara komit sewenang-wenang.
Dimulai dengan git v1.7.10,
git-diffall
skrip disertakan dalamcontrib
instalasi standar git.Untuk versi sebelum v1.7.10, Anda dapat menginstal dari
git-diffall
proyek di GitHub .Berikut ini deskripsi proyeknya:
sumber
git difftool --dir-diff
dan Melampaui Pembandingan): Saya menghubungi Scooter Software (penulis Beyond Membandingkan) dan mereka mengatakan bahwabcompare.exe
itu bukan solusi yang didukung dan dapat menyebabkan masalah jika ada lebih dari satu perbedaan terbuka pada suatu waktu. Mereka berencana untuk menambahkan dukungan untuk folder berbedabcomp.exe
di versi masa depan (sementara itu, saya akan terus menggunakanbcompare.exe
sebagai solusi yang tidak didukung).--dir-diff
bekerja dengan sempurna dengan Meld. Dari sana, itu akan membiarkan Anda memilih dan melihat diff untuk file individual.Inilah yang saya pilih ...
Salin kode berikut ke file bernama
git-diffall
(tanpa ekstensi):Tempatkan file di
cmd
folder dir instalasi git Anda (mis.C:\Program Files (x86)\Git\cmd
)Dan gunakan seperti yang Anda inginkan
git diff
:Catatan: Kunci untuk itu adalah & param yang memberi tahu perintah diff eksternal untuk berjalan dalam tugas latar belakang sehingga file diproses segera. Dalam kasus BeyondCompare ini membuka satu layar dengan setiap file di tabnya sendiri.
sumber
"$filename"
ke"../$filename"
. Kemudian itu bekerja dengan sempurna dengan Beyond Comparegit-diffall
file keC:\Program Files\Git\cmd
folder? Saya melakukan persis seperti yang diperintahkan tetapi setelah melakukan$ git diffall git: 'diffall' is not a git command. See 'git --help'. Did you mean this? difftool
meld
memiliki fitur yang rapi bahwa jika Anda memberikannya direktori di bawah kendali sumber (Git, Mercurial, Subversion, Bazaar dan mungkin yang lainnya) secara otomatis akan mencantumkan semua file yang diubah dan Anda dapat mengklik dua kali untuk melihat perbedaan masing-masing.IMO jauh lebih mudah untuk mengetik
meld .
dan membuatnya tahu VCS daripada mengkonfigurasi VCS Anda untuk diluncurkanmeld
. Plus, Anda dapat menggunakan perintah yang sama apa pun VCS yang digunakan oleh proyek Anda, yang sangat bagus jika Anda sering berpindah di antara mereka.Satu-satunya downside adalah lebih lambat untuk berbaur untuk memindai perubahan daripada melewati perubahan dari git / hg / svn, meskipun apakah itu cukup lambat untuk menjadi masalah akan tergantung pada bagaimana Anda menggunakannya saya yakin.
sumber
git diff
tidak menawarkan.Saya memang menemukan metode ini (GitDiff.bat dan GitDiff.rb) yang menyalin file ke direktori temp lama / baru dan kemudian melakukan perbandingan folder pada mereka.
Tapi saya lebih suka melihat file yang bekerja secara langsung (dari dir yang berfungsi), karena BeyondCompare memiliki fitur yang berguna untuk dapat mengedit file dari dalam jendela diff yang sangat bagus untuk pembersihan cepat.
Sunting: metode serupa di sini dalam menanggapi pertanyaan saya di milis git.
sumber
git meld
=> https://github.com/wmanley/git-meld adalah skrip yang luar biasa yang akan membuka perbedaan semua file dalam satu jendela.sumber
Melihat di sini bahwa Araxis Merge memiliki opsi perintah '-sekarang':
Mungkin ini mengembalikan kode keluar langsung dan akan bekerja, ada yang mengalami ini? Tidak dapat menemukan opsi serupa untuk BeyondCompare ...
sumber
Diffuse juga memiliki integrasi VCS. Ini bekerja sama dengan kebanyakan VCS lainnya, termasuk SVN, Mercurial, Bazaar, ... Untuk Git, ia bahkan akan menampilkan tiga panel jika beberapa tapi tidak semua perubahan dilakukan. Dalam kasus konflik, bahkan akan ada empat panel.
Meminta dengan
di copy pekerjaan Git Anda.
Jika Anda bertanya kepada saya, perbedaan visual terbaik yang pernah saya lihat selama satu dekade. (Dan saya sudah mencoba berbaur juga.)
sumber
Jika semua yang ingin Anda lakukan adalah membuka semua file yang sedang dimodifikasi, coba sesuatu seperti:
Jika Anda melakukan "set perubahan kompleks", Anda mungkin ingin mempertimbangkan kembali alur kerja Anda. Salah satu fitur yang sangat bagus dari git adalah membuatnya mudah bagi pengembang untuk mengurangi set perubahan kompleks menjadi serangkaian tambalan sederhana. Daripada mencoba mengedit semua file yang saat ini dimodifikasi, Anda mungkin ingin melihat
yang akan memungkinkan Anda untuk secara bertahap mementaskan bakhil.sumber
Saya telah menulis skrip PowerShell yang akan menduplikasi dua pohon yang bekerja dan membandingkannya dengan DiffMerge. Jadi kamu bisa melakukan:
Sebagai contoh, untuk membandingkan cabang utama tiga checkin yang lalu dengan pohon yang sedang bekerja.
Ini mengkilap dan baru dan mungkin penuh dengan bug. Salah satu kelemahannya adalah bahwa file di pohon kerja Anda yang belum ditambahkan disalin ke kedua pohon kerja. Ini juga bisa lambat.
http://github.com/fschwiet/GitNdiff
sumber
Bagi mereka yang tertarik menggunakan git-diffall pada Mac OS X dengan Araxis, saya memotong proyek git-diffall di github dan menambahkan AppleScript yang membungkus perintah Gabung Araxis. Catatan: ini adalah tiruan sedikit dimodifikasi dari
araxisgitdiff
file yang dikirimkan bersama Araxis Merge untuk Mac OS X.https://github.com/sorens/git-diffall
sumber
Berikut ini berfungsi dengan berbaur dan kdiff3
Buka semua file di jendela yang dapat Anda jelajahi dengan mudah. Dapat digunakan dengan perubahan di tempat asal / nama cabang
misalnya:
git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
sumber
Anda dapat menggunakan gitk dan melihat semua perbedaan secara bersamaan
sumber