Yanıtlar:
Bir log
komut veya komut kullanıp kullanmadığınıza bağlıdır diff
. Bu log
durumda, man git-rev-parse
belgelerde bulunur:
Ulaşılabilen taahhütleri bir taahhüdün dışında tutmak için, ^ notasyonu öneki kullanılır. Örneğin, ^ r1 r2, r2'den erişilebilen taahhütler anlamına gelir, ancak r1'den erişilebilenleri hariç tutar.
Bu ayarlanan işlem o kadar sık görünür ki bunun için bir kestirme yol vardır. R1 ve r2 olmak üzere iki taahhüdünüz varsa (yukarıdaki BELİRTİLEN REVİZYONLAR'da açıklanan sözdizimine göre adlandırılır), r1'den "^ r1 r2" ile ulaşılabilenler hariç r2'den erişilebilen taahhütler isteyebilirsiniz ve şu şekilde yazılabilir: "r1..r2".
Benzer bir gösterime "r1 ... r2" r1 ve r2'nin simetrik farkı denir ve "r1 r2 - $ değil (git merge-base --all r1 r2)" olarak tanımlanır. R1 veya r2'den birinden ulaşılabilen ancak her ikisinden de alınamayan taahhütler kümesidir.
Bu, temel olarak, iki koldan birinde bulunan, ancak her ikisinde birden olmayan tüm taahhütleri alacağınız anlamına gelir.
Bu diff
durumda, man git-diff
belgelerde bulunur:
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B". You can omit any one of <commit>, which has the same effect as using HEAD instead.
Bu biraz bulanık. Temel olarak, bu daldaki başka bir dalla karşılaştırıldığında sadece farklılıkları gösterir: ona verdiğiniz ilk komisyonla son ortak taahhüdü arar ve sonra ikinci komisyonu buna ayırır. Sadece bu branştaki değişikliklere dikkat etmeden, o branşta hangi değişikliklerin yapıldığını görmenin kolay bir yoludur.
..
Biraz daha basittir: In git-diff
durumda, bu bir aynıdır git diff A B
ve sadece içinde B'ye karşı A diffs log
durumda, bu B'de vardır ancak A'da tüm kaydedilmesini göstermektedir
..
ve ...
tam günlüğü ve fark değiştirilmesi söz: log A..B
budur B'ye birleştirme tabanından değişiklikler diff A...B
yapar
git diff
.
A...B
== anlamına mı geliyor A..B + B..A
?
git log
bunun için kesinlikle evet
Eğer böyle aralıkları işlemek kullandığınız zaman ..
ve ...
birlikte git log
, aralarındaki fark, dalları A ve B için, yani
git log A..B
Size gösterecek B A olmadığını sahip olduğunu kaydedilmesini tüm ederken,
git log A...B
Size gösterecek hem B A yok veya diğer bir deyişle, ki bir olduğunu kaydedilmesini ve bu oda yok ve kaydedilmesini de kaydedilmesini tüm filtre edeceğini A ve B grubu hisse hem böylece sadece o hareketin gösteren yok hem pay .
İşte görsel bir temsili git log A..B
. B dalının A'da bulunmayan taahhütleri, taahhüt aralığı tarafından döndürülen şeydir ve Venn diyagramında kırmızı ile vurgulanır ve taahhüt ağacında mavi daire içine alınır:
Bunlar şemalardır git log A...B
. Her iki dal tarafından paylaşılan taahhütlerin komut tarafından döndürülmediğine dikkat edin:
...
Daha Yararlı Hale GetirmekHangi dalların hangi branşta ait olduğunu gösterme seçeneğini ...
kullanarak, günlük komutunda üçlü nokta tamamlama aralığını daha kullanışlı hale getirebilirsiniz --left-right
:
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
Yukarıdaki çıktısında, ait hareketin göreceksiniz master
ifadesi eklenir <
ait kaydedilmesini iken, origin/master
kodu bulunmaktadır >
.
Bir gün, taahhüt aralıklarının nasıl çalıştığına dair kendi açıklamamı ekleyebilirim git diff
, ancak şimdilik Git diff commit'deki çift nokta ".." ile üçlü nokta "..." arasındaki farklar neler olduğunu kontrol etmek isteyebilirsiniz. aralıkları? .