2017-01-13 33 views
7

Usta şubemde bir çalışma şubesinden git ile birleştirme işlemini tamamladıktan sonra, bazen birleştirme gerçekleşmeden önce master'daki son işlemi bulmayı bulmak istiyorum. Bunu nasıl yaparım?Birleştirme işleminden önce son git işlemi nasıl yapılır

+0

'Git log -1 'deneyebilirsiniz, seçilen dalın son işleminin ayrıntılarını verir. Benzer şekilde, 'git log -2' son 2 işlemin ayrıntılarını verirdi. – Abhi

+0

Ayrıca yapıyı görselleştirmek için gitk'i kullanmayı ve doğru birleştirme tabanını (fork-point) almamaları durumunda herhangi bir komut betiğini kontrol etmeyi deneyin. –

cevap

3

Bunu yapmak için hızlı bir şekilde birleştirme noktasını bulana kadar

git log --pretty=format:'%h : %s' --graph 

sonra sadece sağ taraftaki grafiği aşağı izleyin yazmaktır. Ayrıca, bir dosya, temp.txt içine çıktı koyar

git log --pretty=format:'%h : %s' --graph > temp.txt 

, Düzenleyicinizde açıp birleştirme gibi metin aramak için arama tesis kullanabilirsiniz hangi yapabilir.

Bu yaklaşım yüzden sadece `` git_log`` bu bilgilerin görmek için `kullanmak benim .bash_profile dosyasında

alias git_graph="git log --pretty=format:'%h : %s' --graph" 

koyduk kesinleştirme en son soyuna hakkında diğer birçok soru cevap yararlıdır .

+0

neden 'git log -1' değil? – mallaudin

+0

@mallaudin: Obromios'un, birleşmenin "efendinin" ucunun ardında birkaç ya da çok fazla işi olduğu bir duruma atıfta bulunduğuna inanıyorum.Yani, 'git log -1 'yalnızca bir tane olmayan birleştirme işlemini gösterir. – torek

+0

Evet. Bu doğru. Şimdi aynı düşünüyorum. – mallaudin

4

oluştu birleştirme işlemi sonrasında taahhüt belirlemek için hızlı bir yolu reflog kullanmaktır. Bu son Oluştu operasyon varsayarsak

sonra, bir birleştirme oldu: Eğer günlüğünü ve reflog kullanarak adres böylece

git log [email protected]{1} -1 

[email protected]{1}

, son operasyondan önce önceki BAŞ ifade eder.

git log, geçerli daldaki işlemlerin sırasını gösterecektir, böylece birleştirme işleminden sonra, her zaman bir birleştirme işlemi olacak ve birleştirilmiş daldan taahhütler alınmadan hemen önce. git reflog, deponuzdaki işlem sırasını gösterir (örneğin birleştirme, yeniden düzenleme). Belgelerdeki gibi açıklandığı gibi: Yerel veri havuzunda, uçların ve diğer referansların ipuçları güncellendiğinde, başvuru günlükleri veya "reflog" kayıtları,

. Referansların eski değerini belirtmek için, çeşitli Git komutlarında referanslar yararlıdır. Zaten master içine branch, burada birleştirme bulmak için tek yoldur birleşti varsa

+0

Bunu denediğimde, birleştirilmiş olan daldaki son taahhüdü verdi, şube birleştirilmeden önce usta son taahhüdü değil. – Obromios

+0

@Obromios, ne git reflog --oneline gösterir? listede ne gibi işlemler var? Birleştirme işleminden önce bir sonraki seçmelisiniz (yani eğer HEAD @ {0} - birleştirme, sonra HEAD @ {1}), bence birleştirme son işlem değildi, – 2oppin

3

taahhüt:

$ h=`git rev-list --ancestry-path branch..master | tail -1` 
$ git log $h^ 
: birleştirme olduğunu

# With the ancestry-path option, 'git rev-list branch..master' (or git log) 
# will only list commits which are parents of 'master' 
# *and* children of 'branch' 
# 
# If 'branch' was merged into 'master', the last commit in this list 
# is the merge commit : 
$ git rev-list --ancestry-path branch..master | tail -1 

master devlet önce bu ilk ebeveyni işlemek

+0

Bunu kontrol ettim ve işe yarıyor, teşekkürler. Ancak cevabımı kabul edeceğim, daha genel olarak yararlı olduğu için stackoverflow.com/a/41628915/1299362. Eğer birleşme uzun ve uzun bir geçmişse, cevabınızı kullanarak kendimi görebiliyordum. – Obromios

İlgili konular