Github'da çekme isteğini varsayılandan farklı bir dalla birleştirin


122

Github'da barındırılan depoma bir çekme talebi geliyor. Varsayılan olarak, masterdalda birleştirilir .

Değişikliklerin hangi dalda birleştirileceğini değiştirmenin bir yolu var mı?

Yanıtlar:


86

15.08.2016 itibariyle GitHub, GUI aracılığıyla bir çekme talebinin hedef dalını değiştirmeye izin vermektedir. EditBaşlığın yanına tıklayın , ardından açılır menüden şubeyi seçin.

ekran görüntüsü

Artık açık bir çekme isteğinin temel dalını değiştirebilirsiniz. Bir çekme isteği oluşturduktan sonra, çekme isteğindeki değişikliklerin farklı bir dalla karşılaştırılması için temel dalı değiştirebilirsiniz. Doğru temel şubeyle yeni bir tane açmak yerine orijinal çekme isteğinizin temel şubesini değiştirerek, değerli çalışmalarınızı ve tartışmaları sürdürebilirsiniz.


1
Bu sorunun doğru cevabı bu olmalıdır (yani GitHub'a yükseltmeden sonra).
stuxnetting

Bu özellik artık mevcut görünmüyor (2018-02-15 itibariyle), değil mi? Yakın zamanda yapılan bir çekme talebinde, hedef dal, artık bir düğme değil, kaynak havuz / dal ile aynı mavi yazı tipinde açık mavi arka planda görüntülenir.
cgogolin

12
Ah! Öyle! Birinin önce "Düzenle" ye tıklaması gerekir (yukarıdaki ekran görüntüsünden anlaşılmayan). Bunu gözden kaçırdım. Afedersiniz.
cgogolin

@cgogolin Bunu belirttiğiniz için teşekkürler - Yorumunuzu okuyana ve Düzenle düğmesine tıklayana kadar kafam karışmıştı.
mhucka

Github , "Çekme isteğinizin temel dalını değiştirdiğinizde, bazı taahhütler zaman çizelgesinden kaldırılabilir." ve "Eski temel daldan bazı taahhütler zaman çizelgesinden kaldırılabilir." Bunun ne olduğuyla ilgili fikri olan?
Matthias Fripp

55

Gönderen, çekme talebini yayınladığında bunu değiştirebilir, ancak bunu bir kez yayınladığında değiştiremezsiniz.

Öte yandan, yanlış hedeflenmiş çekme istekleri için yarı düzenli olarak yaptığım dallanma ve itme işlemlerini manuel olarak birleştirebilirsiniz.

hubCevheri , çekme isteğinin bileşenleriyle çalışırken yararlı bulabilirsiniz .

Bu mücevher, manuel süreci tamamlıyor:

  1. Yerel ödeme noktanıza çatal için bir uzaktan kumanda ekleyin .
  2. Kumandayı getir.
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...

1
Manuel olarak birleştirir ve itersem, Github çekme talebinin etkili bir şekilde tamamlandığını fark edecek mi? Uzak ayrı bir depodan (çatal) nasıl birleştirileceğine dair herhangi bir işaret var mı?
eoinoc

3
Emin değilim, ancak doğrudan değil - çünkü değişiklik hedef dalla birleşmedi, bu nedenle çekme isteği tanımlandığı gibi tamamlanmadı. Manuel olarak kapatmanız gerekir. İşaretçilerle ilgili olarak, düzenlenen yoruma bakın.
Daniel Pittman

git merge --no-ff ...Cevabında @ GuillermoMansilla'nın bahsettiği gibi kullanmanızı tavsiye ederim .
jjmontes

3
"Yayınladıktan sonra değiştiremezsiniz" - Ağustos 2016 itibarıyla artık durum böyle değil! @Maliayas'ın aşağıdaki yanıtına bakın: stackoverflow.com/a/38985999/12484
Jon Schneider

1
Bugün bu prosedürü uyguladım (3 Mart 2017). Çekme talebini başka bir şubeye indirdim ve bazı ek düzeltmeler yaptım, sonra ana olarak birleştirdim. Çekme isteğinden yapılan işlemeler ana bilgisayarda sona erdiğinde, GitHub çekme isteğini otomatik olarak kapattı.
Ivan Krivyakov

14

Diğer yanıtlarda bahsedilen hub cevherini kullanmanın bir alternatifi, yerel olarak çekme isteklerini birleştirmek için komut satırını kullanmaktır , bu da şunları yapmanızı sağlar:

$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*

Yukarıdaki komutlar, yalnızca aşağıdaki satırı .git/configdosyanıza ilk olarak eklerseniz doğrudan çalışır :

fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*

Bunun yaptığı şey TÜM çekme isteklerini indirmenize izin vermektir . Bu, büyük depolar için istenmeyebileceğinden, GitHub git fetch origin pull/ID/head:BRANCHNAME, yapılandırma dosyasının değiştirilmesini önleyen ve yalnızca bu tek çekme isteğini indiren sözdizimini öne çıkarmak için talimatları değiştirdi .


8

Mevcut çekme isteğini değiştiremezsiniz, çünkü bu sizin değildir, ilgili kaynak depo hala mevcutsa kolayca yeni bir tane oluşturabilirsiniz - evet, başkasının olsa bile.

Gönderenin havuzuna gidin, ardından aynı kayıtları kullanarak kendi havuzunda yeni bir çekme talebi oluşturun, ancak doğru hedef dalı doğru ayarladığınızdan emin olun.

Ardından kendi deponuza geri dönün ve yeni çekme talebini kabul edin. İşte bu kadar!


Depolarını değiştirmişlerse bu işe yarar mı? "Aynı taahhütler" olduğundan nasıl emin olunur?
ragerdl

@ragerdl - Bir 'dal başına özellik' modeli kullanarak geliştiriyorsanız, yukarı akış dalına karşı bir dal içeren bir PR oluşturabilirsiniz ve aynı işlemleri içermelidir.
geerlingguy

2
Yerel bir depoya erişim olmadan bunu doğrudan GitHub'da yapmanın tek yolu.
kopischke

8

Daniel Pittman'ın çözümünde yanlış bir şey yok, ancak ben bu birleşmeleri "ileri sarma yok" olarak ele alacağım, yani 3 numaralı adımı şu şekilde değiştireceğim:

git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}

Kullanıldığında --no-ff, geçmişin okunması daha kolay olacaktır. $nTaahhütlerin nereden geldiğini açıkça söyleyecek $branchve o dalda yapılan bir şeyi geri almanız gerektiğinde hayatınızı kolaylaştıracaktır.

Ayrıca eoinoc'un sorusuna cevap vermek ve ek bir ipucu vermek için:

Birleştirme işlemini yaptıktan sonra, git cli'niz bir mesaj yazmanızı isteyecek, genellikle genel bir mesaj görünerek şöyle bir şey söyleyecektir:

Uzaktan izleme şubesini 'kullanıcısını / şubesini' şubenizle birleştirin

Bu mesajı düzenlediğinizden ve çekme talebi numarasına bir referans eklediğinizden emin olun. Yani: (Çekme talebi numarasının 123 olduğunu varsayarsak)

Uzaktan izleme şubesini 'kullanıcısını / şubesini' şubenizle birleştirin

refs # 123 her şeyi çözüyor ...

Bu nedenle, bir dahaki sefere github sorunları / çekme istekleri sayfanızı ziyaret ettiğinizde ve belirli bir çekme isteğini kontrol ettiğinizde, birleştirmeyi yaptığınız yere bağlı bir bağlantıyla birlikte mesajınızı göreceksiniz.

İşte kastettiğim şeyin bir ekran görüntüsü.

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


6

Bunu yapmak için deponuzun ana sayfasına gidin, dallara tıklayın ve benim durumumda "dev" olan varsayılan şubeyi ana daldan başka bir şeye değiştirin.

Bundan sonra, birisi bir çekme isteği oluşturduğunda, mergedüğme isteği otomatik olarak ana değil "dev" ile birleştirir.

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


yazım hatası düzeltmesi için teşekkürler @ the Tin Man Bunu takdir ediyorum
abbood

4
Ayarlama / düzenleme için bize teşekkür etmenize gerek yok. Site için yaptığımız bir şey. İyi cevaplar yazmaya devam edin, bu kadar teşekkürler.
The Tin Man
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.