Git: Birleştirilmiş dallardan değil ama bu dalda işlemlerin nasıl listeleneceği


92

Git commit geçmişinizin şöyle göründüğünü varsayalım:

A---B---C---D---E---F master
     \         /
      X---Y---Z topic

Git listesi sadece master, AF üzerinde commit'ler olabilir mi? Başka bir deyişle, taahhüt birleştirilmiş bir daldaysa, gösterilmesini istemiyorum.


2
Peki, nasıl hangisinin biliyor Git ediyorum Dve Zbirleştirilmiş şube parçasıydı?
Romain

2
Ana bilgisayardan birleştirildiğinde, önceki ana kaydetmeler, birleştirilen ilk üst öğelerdir. git logSadece bu teslimleri görüntülemesini sağlayan --first-parentdoğru şeyler olsun, böylece
CharlesB

Yanıtlar:


134

git logseçeneği var --first-parent, bu yüzden alamayacaksıntopic geçmişi .

Kaynağından birleştirildiğinde master, mastertaahhütler birleştirilen ilk ebeveynlerdir. Git günlüğü yalnızca --first-parent ile yapılan işlemleri görüntülemeye izin verir, böylece doğru şeyleri elde edersiniz.


25
+1 --first-parentyapar :) ile --no-mergesbirleştirerek birleştirme işlemlerini gizleyebilirsiniz
c00kiemon5ter

Olumlu oy verdim, ancak cevabıma kıyasla hala aşırı görünüyor
UpAndAdam

22

TLDR : git log origin/master --no-mergessize bir ana kayıt günlüğü verir ve birleştirilmiş herhangi bir kaydetmeyi hariç tutar (bu durumda x, y, z)

Orijinal Puanlar

Bunu yapmanın --first-parent, belirli durumlarda hangisinin yardımcı olacağına dayanmayan başka bir genel yolu daha var .. şube dışlama filtrelerini kullanma

git log origin/topic ^origin/master Bu size origin/topictüm işlemlerin origin/masterkaldırıldığı bir günlük verecektir .

--no-mergesİsteyebileceğiniz veya istemeyeceğiniz birleştirme işlemlerini gizleyecek olanları da ekleyebilirsiniz .

Başka bir kullanışlı ipucu, shortlogbunun yerine logsize sürüm notları veya bir daldaki şeylerin iletişimi için kullanışlı olabilecek kısaltılmış bir özet verecek olanı kullanmaktır .

Güncelleme
Bunu tekrar okuduktan sonra, aslında benim yazdıklarımın neredeyse tersini isteyeceksiniz; ancak, master ve foo ( git log origin/master ^origin/foo) üzerindeki her şeyi dışarıda bırakacaktır . Bununla birlikte, istediğiniz şeyi de alabilirsiniz (birleştirmelerin parçası olan tüm taahhütleri gizleyin)git log origin/master --no-merges


0

Charles'ın cevabı benim için çalışıyor.

git log has option --first-parent --no-merges, so you won't get topic history.

Ancak Git etkinlikleriniz için Git Extension, SourceTree, Tortoise Git gibi herhangi bir grafik kullanıcı arayüzü kullanıyorsanız,

O zaman araçlarınızdaki ilk ebeveyni kontrol etmek için doğrudan seçenekler vardır. Çoğu kişi Grafik Arayüzü kolay bulduğu için bu cevabı listeye eklemeyi düşündüm. ve Gerekirse, o belirli daldaki tüm taahhütleri doğrudan araçtan seçebilirsiniz.

İki araç örneğini ekledim, diğer araçlar için de benzer olurdu: [Kullanıcı adını, git repo adını bu özel bir depo olduğu için sakladım, ancak yine de araçlardan ilk ebeveyni nasıl kullanacağınız konusunda bir fikir edinebilirsiniz. ]

  1. Git Uzantısı
    • Git Uzantısını Aç -> İşlemleri görmek istediğiniz özellik dalını kontrol edin, Resimde gösterildiği gibi ilk işlemleri seçme seçeneği vardır:

görüntü açıklamasını buraya girin

  1. Kaplumbağa Git
    • Depo klasörünü açın -> Tortoise Git'ten günlükleri göster'e tıklayın -> Şubeyi kontrol edin ve Resimde gösterildiği gibi ilk işlemleri seçin

görüntü açıklamasını buraya girin


-3

Bu çalışmıyor mu?

git log master
git log --stat master

Hayır, işe yaramıyor. Birleştirme işleminin iki üst öğesi vardır; her iki ebeveynden de geri gelen her şey 'ana' dalda.
GoZoner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.