Git'te birleştirmeleri göz ardı ederek doğrudan bir şubeye yapılan taahhütleri gösterme


87

Git'i kullanırken, birleştirme ile getirilen tüm taahhütleri göz ardı ederek bir şubeye yapılan işlemleri göstermenin bir yolu var mı?

Bir dalda yapılan kod değişikliklerini gözden geçirmeye çalışıyorum ve diğer dallarda yaptığımız değişiklikleri görmezden geliyorum. Bu şekilde bir fark göstermenin neredeyse imkansız olduğunu biliyorum ama yapabilmek istiyorum hangi taahhütleri incelemem gerektiğini öğrenin.

Yanıtlar:


124

--no-merges

Her iki ebeveyn de git'teki birçok bağlamda eşit ağırlığa sahiptir. Diğer değişiklikleri birleştirmede her zaman tutarlı olduysanız, bunun size istediğinizi verdiğini görebilirsiniz.

git log --no-merges --first-parent

Aksi takdirde, diğer adlandırılmış şubelerden taahhütleri hariç tutabilirsiniz.

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3

Bir ana dalda birleştireceğiniz değişiklikleri gözden geçirmek istiyorsanız, yapılacak en kolay şey birleştirme işlemini yerel bir klonda gerçekleştirmek ve ardından birleştirmeyi yayınlamadan önce ilk ebeveynle farka bakmaktır.


Bu ilk komut, "özellik başına uygun dal" ( plus.google.com/109096274754593704906/posts/R4qkeyRadLR ) için mükemmel
Adam Dymitruk

1
Görünüşe göre çoğunlukla o şubeden taahhütler alıyorum, ancak yine de ustadan alınan taahhütleri gösteriyor. Başkalarını dışlamanın pratik olmayacağı kadar çok şubemiz var.
Channel Cat

@ChannelCat neden şubenizi diğerine yeniden bağlamıyorsunuz, o zaman tüm taahhütler sonunda olacak?
Mark Ingram

7

Bunun için kullanabilirsiniz git cherry, henüz yukarı akışla birleştirilmemiş taahhütlerinizi veya bir dalda olup diğerinde olmayan taahhütleri bulacaktır. "Dalınız" ve "usta" adlı iki dal verildiğinde:

git cherry -v your-branch master

yama kimliklerine kıyasla size işlemlerin listesini sunacak:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake

Her iki dalda da "-" ön ekiyle gösterilenler, "+" ön ekli olanlar ise yalnızca şubenizde kullanılabilir.

Alternatif olarak şunları kullanabilirsiniz:

git log --pretty=format:"%h %s" your-branch..master --no-merges

bu size "şubeniz" üzerinde henüz "ana" üzerinde mevcut olmayan işlemlerin listesini gösterecektir.


Cevabınızı düzenleme denemem reddedildiğinden, buraya göndereceğim: son git satırınızda, dalların adları arasında iki değil üç nokta olmalıdır.
Şunun

@vedranm 3 noktaya ihtiyacınız yok, sadece ikisine ihtiyacınız var ... 3, 2 ile aynı şekilde çalışır
Zzzach ...

4

Çok hilekâr bir yol:

git log --graph --oneline --no-merges thebranch|grep '^\*'

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.