Çatallı repodan bir çekme isteği nasıl güncellenir?


592

Bu yüzden önce bir repo çatalladım ve sonra o çatallı repo için bir taahhütte bulundum. Daha sonra bir çekme isteği açtım. Çekme isteği, istediğim tüm değişiklikleri listeledi.

Çekme isteğimi inceledikten sonra, repo sahibinin kabul etmeden önce yapmamı istediği bazı değişiklikler oldu. Çatalımdaki bu değişiklikleri yaptım, şimdi çekme isteğini bu değişikliklerle nasıl güncelleyebilirim (ya da bu nasıl ele almam gerekir)?



7
@PaulDraper Kabul etmiyorum, bu kullanıcı zaten bir çekme isteğini güncellemek için çeşitli yöntemler biliyor ve sunuyor ve hangisinin en iyisi olduğunu soruyor. Öte yandan, herhangi bir yöntem bilmiyordum ve varlıklarını soruyordum. Bu sorunun popülaritesinin gösterdiği gibi, diğer birçok kullanıcı için durum böyledir.
stevebot

6
Popülerliğin, (1) bunun gerçekten iyi ve yaygın bir soru olması ve (2) bazı kullanıcıların burada değil de burada yaralanmasından kaynaklandığını düşünüyorum. Başlangıçta bir kopya olarak tanımlanmış olsaydı, diğer sorunun aynı olduğunu bulup sorularına cevap verirlerdi.
Paul Draper

Yanıtlar:


585

Doğru yaptın. Çekme isteği otomatik olarak güncellenir. İşlem:

  1. Açık çekme isteği
  2. Yerel deponuzdaki geri bildirime dayalı değişiklikler yapın
  3. Çatalınızın ilgili koluna itin

Çekme isteği, yeni istekleri çekme isteği tartışmasının altına otomatik olarak ekler (yani zaten oradadır, aşağı kaydırın! )


73
Güzel! Her yerde ama gerçek çekme isteği kontrol ediyordum. onun büyüsü, kara büyüsü, bunu sorgulamayacağım.
stevebot

57
Bu dallarda çalışmak için iyi bir neden. Örneğin, her zaman master'a geçtiyseniz, istemeden önceki çekme isteğinizi ekleyebilirsiniz.
Brian Pan

3
Geçmişte olmasına rağmen artık durum böyle görünmüyor. Burada (yapılan bir çekme isteği bir örnek github.com/toopay/bootstrap-markdown/pull/167 şube kendisi (kıyasla) github.com/mhuggins/bootstrap-markdown/commits/... ). Süreç değişmiş gibi göründüğü için artık bunu nasıl yapacağınızı merak ediyorum.
Matt Huggins

1
GitHub size şunları söylüyor: "ChangeTheWorldProject üzerindeki SolveWorldHunger şubesine giderek daha fazla taahhüt ekleyin."
flow2k

1
Burada da aynı - Ana depoda çatallı repodan değişiklik görmüyorum. Bir GitHub
böceğine

78

GitHub'da bir çekme isteğini güncellemek, istenen değişiklikleri mevcut şubeye (çekme isteği ile birlikte kullanılır) uygulamak kadar kolaydır, ancak genellikle değişiklikleri tek bir işleme dönüştürmek de istenir:

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

... ve şimdi çekme isteği yalnızca bir taahhüt içeriyor.


Yeniden temellendirme ile ilgili bağlantılar:


2
Rebase'den bahsettiğiniz için oy verin. Düzeltme geçmişindeki gürültünün kesilmesine yardımcı olur.
stevebot

+11 (evet anahtar rrrrepeating amaçladı. Git rebase / pick / squash kullanmak harika çalışıyor.
javadba

11
Bu yaklaşımın dezavantajı, önceden taahhütte bulunmanızdır. Bu, çekme talebinde yorumlar yapılırsa kaybolacak ve orijinal taahhütle birlikte kaybolacakları anlamına gelir.
blowekamp

Bitbucket'te, çekme isteğinde bir dosyanın "önceki sürümleri" hakkındaki yorumları görebilirsiniz. Gerrit'te olduğu gibi bir şeyi görmek güzel bir şey olsa da, yamaları eklediğiniz ve tüm geçmişi yorumlarla görebilirsiniz. Geri dönüp herhangi bir taahhüdün etrafındaki tartışmayı tam olarak görebildiğinizde temiz bir git geçmişi ve izlenebilirliği sağlar.
Aşk

36

Sadece çekme isteğinin başvurduğu şubeye itin. Çekme isteği hala açık olduğu sürece, otomatik olarak eklenen taahhütlerle güncellenmelidir.


14

Aşağıdaki adımları kullanarak yaptım:

  1. git reset --hard <commit key of the pull request>
  2. Koddaki değişiklikleri yapmak istedim mi
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

1
Çok iyi, bu yaklaşımı tercih ediyorum! GitHub, kodun ve ilişkili yorumların eski bölümlerini bile gizler (ancak tutar). Çekme isteği birkaç işlem içeriyorsa ve sabitleme gerektiren istemin dalın ucunda olmadığını hatırlamakta fayda var, "git reset --hard" belirtilen kimlikten sonra yapılan tüm değişiklikleri silecektir. Manuel olarak uyguladığım bir yedeğim vardı. - Birden fazla ekstra taahhüt varsa çok uygun değil ...
Nagev

3

Windows'ta GitHub kullanıyorsanız :

  1. Yerel olarak değişiklik yapın.
  2. GitHub'ı açın, yerel depolara geçin, depoya çift tıklayın.
  3. Dalı (pencerenin üst kısmına yakın) çekme isteğini oluşturduğunuz dize (yani karşılaştırmanın çatal tarafındaki şube) değiştirin
  4. Doğru hakkında taahhütlü yorum girme ve yerel repodaki değişiklikleri taahhüt etme seçeneğini görmelidir.
  5. Üstteki tıklama senkronizasyonu, diğer şeylerin yanı sıra, taahhüdünüzü yerelden UzakHub'daki uzak çatalınıza iter.
  6. Çekme isteği ek taahhütlerle otomatik olarak güncellenecektir. Bunun nedeni, alınan isteğin çatalınızın koluyla bir farkı temsil etmesidir. Çekme isteği sayfasına (siz ve başkalarının çekme isteğinize yorum yapabileceği sayfa) giderseniz, Taahhütler sekmesinde ek taahhütleriniz olmalıdır.

Bu nedenle, kendi değişikliklerinizi yapmaya başlamadan önce, bir çekme isteğine eklemeyi planladığınız her değişiklik kümesi için bir şube oluşturmanız gerekir. Bu şekilde, çekme isteğini yaptıktan sonra, başka bir dal yapabilir ve önceki çekme isteğini etkilemeden başka bir görev / özellik / hata düzeltmesi üzerinde çalışmaya devam edebilirsiniz.

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.