Saya ingin perbedaan semua perubahan di cabang yang belum digabungkan untuk dikuasai.
Saya mencoba:
git diff master
git diff branch..master
git diff branch...master
Namun, dalam setiap kasus ini diff berisi konten master yang belum digabungkan ke cabang saya.
Apakah ada cara untuk melakukan perbedaan antara cabang dan master saya yang mengecualikan perubahan master yang belum digabung ke cabang saya?
git diff master..branch
. Anda dapat mempersingkatgit diff master..
jika Anda berada di cabang. Ther1..r2
sintaks adalah singkatan^r1 r2
yang berarti "menunjukkan segala sesuatu yang turun darir2
dan tidak dicapai darir1
".git help gitrevisions
memiliki informasi tentang berbagai sintaks yang dapat Anda gunakan....
sintaksisgit diff
. Komentar Anda salah, @ jszakmeister, karena rentang revisi seperti yang dijelaskangitrevisions
tidak ada hubungannya dengangit diff
. Diff membandingkan dua poin dalam sejarah, tidak dapat bekerja dengan rentang.git diff
bekerja secara berbeda dari perintah lain ... sebuah fakta yang menurut saya membuat frustrasi. :-(Jawaban:
Gabung basis adalah titik di mana
branch
menyimpang darimaster
.Git diff mendukung sintaks khusus untuk ini:
Anda tidak boleh menukar sisi karena Anda akan mendapatkan cabang lainnya. Anda ingin tahu apa yang berubah
branch
karena itu menyimpang darimaster
, bukan sebaliknya.Terkait longgar:
Perhatikan bahwa
..
dan...
sintaksis tidak memiliki semantik yang sama seperti pada alat Git lainnya. Ini berbeda dari makna yang ditentukan dalamman gitrevisions
.mengutip
man git-diff
:sumber
$ git diff master...branch
diproduksifatal: ambiguous argument 'master...branch': unknown revision or path not in the working tree.
- apakah ini perintah yang tergantung versi?branch
. Saya memilih untuk tetap dengan nama OP telah dipilih dalam pertanyaan. Jika Anda ingin menggunakan cabang saat ini, gantibranch
denganHEAD
.git diff master...
untuk menghindari menentukan cabang (yang saat ini akan diambil).devel
, @ChrisGuest? Mungkin, Git membuat cabang untuk Anda saat checkout, sebagai salinan lokal cabang jarak jauh (biasanyaorigin/devel
). Jika itu masalahnya,git diff origin/devel...bugfix/API-353-api-allows-database-access-when
akan bekerja bahkan sebelum checkout.Inilah yang bekerja untuk saya:
Ini hanya menunjukkan perubahan antara cabang lokal saya yang dipilih saat ini dan cabang master jarak jauh, dan mengabaikan semua perubahan di cabang lokal saya yang berasal dari gabungan komit.
sumber
git cherry origin/master
.master
mungkin telah me-rebond satu set komitmen keluar dari bawah Anda.Seperti juga dicatat oleh John Szakmeister dan VasiliNovikov, perintah terpendek untuk mendapatkan perbedaan penuh dari perspektif master di cabang Anda adalah:
Ini menggunakan salinan master lokal Anda.
Untuk membandingkan penggunaan file tertentu:
Contoh keluaran:
sumber