Bir taahhüdün orijinal olarak oluşturulduğu Github'da bir Çekme İsteği bulun


171

Çekme İstekleri, bir repoda yapılan bir değişiklik veya değişiklik grubu hakkındaki daha büyük düşünceyi anlamak için mükemmeldir. Çekme isteklerini okumak, bir projeyi hızlı bir şekilde "grok" yapmak için harika bir yoldur, çünkü kaynağa yapılan küçük atom değişiklikleri yerine, daha büyük mantıksal değişiklik grupları elde edersiniz. Okumayı kolaylaştırmak için kodunuzdaki satırları ilgili "stanzalar" halinde düzenlemeye benzer.

Kendimi bir dosyaya ya da bir taahhüde bakarak buluyorum ve başlangıçta onu yaratan Çekme Talebine olan bağlılığı geri izlemenin bir yolu olup olmadığını merak ediyorum. Bu Çekme Talebi eninde sonunda birleştirilecek, ancak bir birleştirme taahhüdü ile gerekli olmayacaktır.


1
+1 Bu, aynı zamanda bir projeyi çatalladıysanız ve eski bir çalışma koluna sahipseniz ve artık bir PR yaptıysanız artık hatırlamıyorsanız da yararlıdır.
Steve Clay

Yanıtlar:


226

Sadece github'a gidip SHA'yı arama çubuğuna girebilirsiniz, soldaki "Sorunlar" bağlantısını seçtiğinizden emin olun.

GÜNCELLEŞTİRİLMİŞ 13 Temmuz 2017

Github kullanıcı arayüzü üzerinden bunu yapmanın gerçekten kolay bir yolu var. Kullanıcı arayüzündeki bir daldaki taahhütler listesindeki bir taahhüdüne bakıyorsanız, taahhütün kendisine ait bağlantıyı tıklayın. Bu taahhüt için bir PR varsa ve doğrudan şubeye eklenmediyse, PR numarasını ve girdiği şubeyi listeleyen PR bağlantısı doğrudan sayfanın üstündeki taahhüt mesajının altında olacaktır. resim açıklamasını buraya girin


Taahhüt bağlantısını tıklayarak bir PR bulma örneği

Taahhüt SHA'nız varsa ve başka bir şeyiniz yoksa ve bunun için kazmak istemiyorsanız, sadece /commit/[commit SHA]repo url'sini ekleyin ve varsa, PR bağlantısını içeren taahhüt sayfasını göreceksiniz. Örneğin, SHA 52797a7a3b087231e4e391e11ea861569205aaf4 ve repo https://github.com/glimmerjs/glimmer-vm ise , o zaman https://github.com/glimmerjs/glimmer-vm/commit/52797a31e11a0b1b03


Bunun kısa bir SHA ile çalışmasını sağlayamıyorum e4077951, bu hala sizin için çalışıyor mu?
Matt Sanders

@RustyToms bu işe yarıyor, ama senin bahsettiğin gibi bir karma hash aradığımda , [ github.com/wso2/carbon-kernel/… bana iki Çekme isteği sağla aynı taahhüdü birleştirdi. Bu tür bir senaryoda, ilgili taahhüdü birleştiren Çekme talebi olarak
neyi seçmeliyiz

@RustyToms Bunu API ile nasıl başarabiliriz
Kasun Siyambalapitiya

1
@marathon şimdi yapmanın daha kolay bir yolu var, cevabı güncelleyeceğim
RustyToms

1
Bir Halkla İlişkiler referansı yoksa, Halkla İlişkiler olmadığı sonucuna varabilir miyim? Yani, taahhüt doğrudan dalda yapıldı (genellikle master)?
Erik

53
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

Gerekirse, originçekme isteğinin gönderileceği github deposuna işaret eden uzaktan kumandanın adını değiştirin . İlk komutun herhangi bir uzaktan kumanda için yalnızca bir kez çalıştırılması gerekir ve ikincisi genellikle diğer güncellemeleri alırken yapılacaktır.

Bu, git'in gerçek dallarla birlikte çekme istekleri hakkında bilgi almasına neden olur. Onlar gibi uzaktan izleme dalları olarak görünecek origin/pull/123. Bu yapıldıktan sonra , başvurulan taahhütlü ilk dalı göstermek için ve seçenekleriyle git describebirlikte kullanabilirsiniz .--all--contains

Bununla birlikte, aradığınız taahhüt, değişikliklerin diğer işlere yeniden temellendirilmesi veya birleştirmeyi yapan kişinin bazı değişiklikler yapmaya karar vermesi gibi, çekme isteğinden gelen taahhüdün değiştirilmiş bir sürümü ise bu işe yaramaz.


Bu sonuçların reddedilen PR'lardaki tüm taahhütlerin indirilmesiyle sonuçlandığını varsayıyorum. pull/*/headBlobs olmadan komisyonların listesini almanın bir yolu yok mu? Bundan sonra nasıl "temizlenir" (kökenleri yeniden yapılandırır)?
Steve Clay

1
Bunu bilmek harika; GitHub'ın bunları gerçek Git nesneleri olarak izlediğine dair hiçbir fikrim yoktu ama mükemmel bir mantıklı. BTW config komutunuzda "origin" yerine "upstream" kullanmak istediniz mi?
Tobias J

1
@TobyJ kullanımı upstreamgerçekten bir hataydı. Uzaktan kumandanın adı olarak adlandırılan upstreamve bu olayı originuzaktan kumandanın adı olarak daha yaygın olarak kullanmak için değiştirirken bu yapılandırmayı içeren bir depodan kopyaladım . Bunu düzeltmek için cevabı düzenledim.
qqx

Teşekkürler! Ama bu çok karmaşık. Web kullanıcı arayüzünde içeren çekme isteğine bir bağlantı olsaydı.
Daniel Darabos

fwiw refs/remotes/origin/pr/*yerine kullanmayı deneyebilirsinizrefs/remotes/origin/pull/*
elaichi

21

13 Ekim 2014'ten bu yana, bu basit olmalıdır:

Örneğin:

Dosya için görebilirsiniz hakimel/reveal.js/plugin/markdown/markdown.js, benim katkım şimdi kaynak PR # 734 bir referans ile geliyor .

Katkıda PR

Bu , taahhütlerden birleştirilmiş çekme isteklerini bağlama :

Değişikliklerle ilgili daha fazla bağlam sağlamak için taahhüt sayfalarına içeren dalları ve etiketleri dahil ettik . Şimdi, bir deponun varsayılan şubesindeki taahhütler, size bunları getiren çekme isteğini de gösterecektir.

içinde PR referans ile taahhüt!

Çekme talebinde, taahhüdün neden tanıtıldığı konusundaki tartışmayı görebilir ve değişikliğin nedenini daha net bir şekilde görebilirsiniz.

Her zaman olduğu gibi, taahhüt SHA'sını biliyorsanız, taahhüt sayfasını atlayabilir ve doğrudan çekme talebini arayabilirsiniz .


bahsettiğiniz gibi bir karma hash aradığımda , [ github.com/wso2/carbon-kernel/… bana iki Çekme isteği sağlar, her ikisi de ustaya aynı taahhüdü birleştirdi. Bu tür bir senaryoda, ilgili taahhüdü birleştiren Çekme talebi olarak
neyi seçmeliyiz

@KasunSiyambalapitiya Emin değilim: Bunun için yeni bir soru sorabilirsiniz. En son giderdim.
VonC

2
bunu APIdüzeye getirebilir miyiz ?
Kasun Siyambalapitiya

@KasunSiyambalapitiya İyi soru. Bilmiyorum. Bu referansı developer.github.com/v3/repos/commits/#get-a-single-commit
VonC

@esp İlginç. Bir PR listesi görüyorum, ancak SHA1'lerinin entegrasyonunu işaretlediğini taahhüt etmiyorum.
VonC

10

İşleme karmasını GitHub'daki İstek İsteği filtreleri alanına yerleştirin.

resim açıklamasını buraya girin


Halkla İlişkiler henüz birleştirilmediyse bu IMO'nun en iyi yoludur.
Sebastian Wagner

3

Ben de aynı sorunu vardı ve burada belgelenmiş pr_for_sha bash yardımcı yazdı:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

Gibi arayın pr_for_sha <COMMIT>ve bir tarayıcıda ilgili github çekme isteği sayfasını açacaktır.


2
Bu çözüm, taahhütten sonraki en yakın birleştirmenin, her zaman böyle olması gerekmeyen taahhüdü içeren birleştirme olduğunu varsayar.
Jason Denney

@JasonDenney Aşağıdaki dalda mı yoksa zamanında mı demek istediniz?
LeZuse

Hmm, bu bir süre önceydi, ama sanırım zaman demek istedim. Pazartesi günü, A dalında bir "X" taahhüdü verdiğinizi, Salı B dalında bir taahhütte bulunduğunuzda ve B dalını ustalıkla birleştirdiğinizi, Çarşamba A dalını ustala birleştirdiğinizi varsayalım. PR komut dosyası "X" in bulunduğu ana daldayken arama yapmak için bu komut dosyasını kullandıysanız, yanlış bir şekilde B dalını söyleyeceğinden eminim.
Jason Denney

git logÇalışmak için komut alınamıyor . git log --merges --ancestry-path --oneline 66100ab0..master- fatal: ambiguous argument '66100ab0..master': unknown revision or path not in the working tree.-git version 2.25.0
Gianfranco P.
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.