Çekme talebim birleştirildi, sonra ne yapmalıyım?


112

Yakın zamanda GitHub'dan bir projeye katıldım. Ben şunları yaptım:

Orijinal depoyu çatalladım, yerel makineme klonladım, mevcut hatayı düzeltmek için bir dal oluşturdu, o dalda hata düzeltildi, bu dalı depomun içine itti, düzeltme dalımı birleştirmesi için deponun yazarına bir çekme isteği gönder ana dalı.

İlk kez başkasının kodunu taahhüt ettim, bu yüzden ne yapacağımı bilmiyorum. Artık çekme talebim yazar tarafından orijinal depo / proje ile birleştirildi.

Sonra ne yapmalıyım? Şubeyi silmeli miyim? Şubeyi birleştirmeli miyim? Başka herhangi bir şey?


İlave bilgi:

Orijinal projenin tek bir kolu vardır.

Orijinal depodan en son güncellemeleri almak için bir yukarı akış setim de var. (Bunu böyle yaptım) :

git remote add upstream https://path/to/original/repo.git

Ve bunun gibi güncellemeler alıyorum:

git fetch upstream

12
Ghehe, mücadele eden tek kişi sen değilsin: Youtube Videosu :)
Anne

Yanıtlar:


65

Bundan sonra yapmanız gereken: yeni özelliklere katkıda bulunmaya veya kendi özel dallarındaki diğer hataları gidermeye devam etmek (yalnızca çatalınıza itilir).

Yani çatalınız kalır, ancak çatalınızdaki dallar gelip gidebilir.

Daha fazla katkıda bulunmayı planlamıyorsanız çatalı da kaldırabilirsiniz, ancak bu , 'Katkıda bulunduğunuz Depolar'daki ilgili girişi kaldıracaktır .

Aşağıdakileri yapmak daha kolaydır:

  • çatalınızda (ve yerel klonlanmış deponuzda: " Git dalını hem yerel hem de uzaktan silme " bölümüne bakın) fixşubenizi silin (aslında, artık sizin için silinmiştir )
  • git pull upstream master( masterdüzeltmenizin entegre edildiği dal ise: birleştirme hızlı ileri sarma olacaktır): bu noktada yeniden ödemeye gerek yoktur.
  • güncellenmiş yerelinizin üstünde bir düzeltme dalı oluşturun master(şimdi en son gelen ile upstream master).

Ancak, ileride herhangi bir çekme talebi göndermeden önce bir adımı asla unutmayın :

Önce mevcut şubenizi ( fix) yukarı akış hedef şubeden yeniden temel alın

( upstreamçatalladığınız orijinal repo olarak: " Github'da başlangıç ​​ve yukarı akış arasındaki fark nedir " konusuna bakın )

Herhangi bir şeyi orijinal depoya ("yukarı akış") geri göndermeden önce, çalışmanızın söz konusu orijinal depodan en son gelenlere dayandığından emin olmanız gerekir (aksi takdirde çekme isteği uygulandığında hızlı ileri birleştirme ile sonuçlanmaz. upstreamdepoya geri dön ).
Örneğin, " github'daki paylaşılan depolarda çekme isteklerini yönetmek için iş akışı " konusuna bakın .

Başka bir deyişle, işleri upstreamdüzeltmekle meşgulken gelişebilir (üzerine yeni taahhütler uygulayabilirsiniz). Taahhütlerinizin en son sürümlerle uyumlu olduğundan emin olmak için, düzeltmelerinizi yukarı akıştan gelen en son çalışmaların üzerine yeniden oynatmanız gerekir upstream.


OP Santosh Kumar sorar yorumlarda :

upstreamUstadan çektim ve birleştim , şimdi ne olacak?

Yakın zamandaki çekme isteğinizden bu yana yeni bir düzeltme yapmadıysanız, yukarıya bakın ( fixgüncellediğiniz dalın üstüne yeni bir dalı silin ve yeniden oluşturun master).

Çekme talebinizden bu yana daha fazla çalışma upstreamyaptıysanız, yeni bir çekme talebinde bulunmak istersem ondan birleşmem : Çeker ve yeniden baz alırdım :

git pull --rebase upstream master

Bu şekilde, tüm yeni yerel çalışmalarım, gelecekteki çekme isteğimi entegre edecek hedef dalın bu upstream masterolduğunu varsayarak , en son kayıtların (yerel depomda getirilen) üzerine yeniden oynatılır master.

Sonra yerel çalışmamı originGitHub'daki çatalım olan ' ' konumuna itebilirim upstream.
Ve GitHub'daki çatalımdan, upstreamherhangi bir birleştirme çözümüne ihtiyaç duymadan yalnızca yeni taahhütler ekleyeceğini bilerek güvenli bir şekilde bir çekme isteği yapabilirim : bu yeni taahhütleri depoda birleştirmek upstreambasit bir hızlı ileri birleştirme anlamına gelecektir.


A git pull --rebase(şu anda teslim alınmış) fixşubenizi yeniden temel almak istediğiniz şubeyi belirtmeden çalışmaz:

Bu ( git pull --rebase) diyor ki:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

Sonunda usta eklemeli miyim? Peki bu ne yapacak? Şubemi silecek fixmi?

Evet, örneğin çekme talebinin hedefi olacak şubeyi belirtebilirsiniz ' master'.
Bu, fixşubenizi silmeyecek , ancak deponuza mastergetirilen yukarı akış üzerinde yeniden oynatacaktır.


Geri ödemeyi yukarı kısımdan açıklayabilir misiniz ?
Santosh Kumar

@SantoshKumar, çatalınızı itmeden ve çekme talebinizi yapmadan önce yerel taahhütlerinizi orijinal deponun (burada yukarı akış olarak anılacaktır) üzerine yeniden düzenlemeniz gerekir: bkz. Stackoverflow.com/questions/9257533/…
VonC,

Evet, basit bir soru sorduğumu biliyorum . Yukarıdan ustaya doğru çektim ve birleştim, şimdi ne olacak?
Santosh Kumar

@SantoshKumar bu iyi bir soru. Cevabı ele almak için düzenledim. "The OP Santosh Kumar şu yorumlarda soruyor: ..."
VonC

Diyor ki: Sonunda You asked to pull from the remote 'upstream', but did not specify a branch.eklemeli miyim master? Ve bu ne yapacak? Düzeltme dalımı silecek mi?
Santosh Kumar

18

Öncelikle, Github'daki bir projeye ilk katkınız için tebrikler.

Olağan Github iş akışı, çözdüğünüz her sorun için yeni bir dal oluşturmaktır. Bu şekilde, ana hat deposunun bakımcısı, çözümlerinizden hangisinin birleştirileceğine ve hangisinin reddedileceğine karar verebilir. Bir dal yukarı akışta birleştirildikten sonra, dala artık ihtiyaç duyulmaz ve genellikle silinebilir.

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.