2012-05-14 23 views
8

Git deposunda işte bir dosya var, bu dosyayı kimin bir dalda birleştirdiğini öğrenmek istiyorum.Bir git işlemini bir şubeye kimin birleştirdiğini nasıl buluyorsunuz?

Dosyanın tanıtımı olan işlemi yapan hash değerine sahibim (552a976f1a25f9bad57efb9455e951f6b7b3367f adlı dosyayı tanıtır) ve dosyanın staging şubesinde olduğunu biliyorum.

Yukarıdaki taahhüdü, staging şubesine birleştiren taahhüdü nasıl bulabilirim? Birleştiren kullanıcıyı ve birleştirme tarihini bulmak istiyorum. <hash> (kendisi de dahil) taahhüt beri

+0

Gerçek bir birleştirme oldu mu (hızlı ileri birleştirme yerine)? Ve sadece 'git log path/to/the/file' (veya' gitk') kullanamazsınız? – svick

+0

git günlüğü, dosyayı işleyen kişinin adını gösterir, bu aşamaları birleştirme dalına kimin birleştirdiğini bulmak istiyorum. –

cevap

1
git log <commit-id>..<branch> --ancestry-path --merges --reverse 

ilginizi ve mevcut durumu aşıyorsun <commit-id> zamandan beri olan birleştirme listesini verecektir ... (örneğin gitk gibi) tarihini keşfetmek için <branch>. Birleştirme iş akışınıza bağlı olarak, ilgilendiğiniz birleştirmeyle listedeki ilk kişi veya sonrakilerden biri olabilir.

grafiğin altına yakın senin <commit-id> için

git log --oneline --graph --decorate --ancestry-path --boundary <commit-id>..<branch> 

Look ile tarihin ilgili kısmını görselleştirmek için yararlı olacaktır (- o yerine * ile işaretlenmiş o "grafik sınır" ait olacak) .

1
git log -1 --merges <hash> 

En son birleştirme günlüğünü işlemek gösterecek. Ben doğru anlamak

+1

Bu oldukça iyi bir çözümdür, bazen birleştirme ilk birleştirme, ancak her zaman değil. Benim durumumda, ilgilendiğim ikinci birleşme oldu. –

+0

'git günlüğü ' işlemlerini ** gösterecektir ** , sonra (yani öğesinin atalarını gösterecektir). Yani, bu komut, bir önceki taahhüdünü * gösterecek * taahhüdünüzü, ana şubeye getiren birleştirme değil. –

2

branches

, sen C5 varsa ve C6 için arıyor. o durum buysa, muhtemelen bu arıyoruz:

git rev-list --merges HEAD --not <hash> --reverse 

Bu size karma taahhüt sonra oldu taahhüt eder birleştirme listesini verecektir. Bu komutta, bu örnekte master, örneğinizde veya durumunuzda staging bulunduğuna inanan bu komutta HEAD kullanın. muhtemelen sonra başına gelen ilk birleştirme aradığınız bir değil çok karmaşık ortamda

senin işlemek ... Ama şans değil bu tür varsa, Deneyebilirsin:

git log --graph --decorate HEAD...<hash>^ 

Ya herhangi bir grafik aracı

İlgili konular