Github'daki mevcut bir soruna yeni bir çekme isteği nasıl eklersiniz?


409

Emin değilim, ama başlığında "Sorun 4" ya da bir şey ile bir github çekme isteği oluşturmak için belirsiz bir anı var ve otomatik olarak onu teslim ettiğim projede Sorun 4'e ekledi. Son zamanlarda tekrar denedim ve işe yaramadı - bunun yerine yeni bir sorun yarattı. Yeni çekme isteği sayfasında "Soruna ekle" veya sorun sayfasında "Bu sorun için yeni bir çekme isteği aç" gibi bir seçenek görmüyorum. Bunu yapmanın, proje sahiplerinin Sorunlar sayfasını temiz tutmasına ve çoğaltmayı önlemesine yardımcı olmak için herhangi bir yolu var mı?

Düzenleme : Açıklığa kavuşturmak için, bir çekme isteği oluşturmanın her zaman yeni bir sorun oluşturduğunu biliyorum . Bunun yerine mevcut bir soruna çekme isteği eklemek istiyorum .


1
Cevabımın, istediğiniz özelliğin (" mevcut bir soruna çekme isteği ekleyin ") henüz orada olmayabileceğini ifade ettiğine inanıyorum .
VonC

Öyle (ve aslında bu tweet ile onaylandı ), ama aynı zamanda sorumun daha net olabileceğini anlamamı sağladı.
MatrixFrog

Umarım bu özellik github öncelik listesinde yüksek, coz kod ayılar orada isterdim!
flq

2
"# 1 numaralı düzeltmeler" yöntemi kullanılabilir olduğu için doğru yanıtın masukomi ile değiştirilmesi gerekir. API'den geçmenize gerek yok.
Edward Anderson

Mevcut bir soruna çekme isteği eklemenin bir yolunu hala bulamıyorum. Bir şey kaçırdım mı? Bu konudaki cevaplar bu yeteneğin var olduğunu gösteriyor gibi görünüyor, ama bulamıyorum (her zaman yeni bir sorun çıkarıyor).
Kevin Jalbert

Yanıtlar:


245

"Hub" projesi bunu yapabilir:

https://github.com/defunkt/hub

Aşağıdakilerden bir çekme isteği göndermek istediğiniz depoda ve dalda:

$ hub pull-request -i 4

Bu GitHub API'sını kullanır ve mevcut sayı için mevcut sayı 4'e bir çekme isteği ekler.


EDIT: @atomicules tarafından Yorum: @MichaelMior tarafından cevabı genişletmek için tam bir örnek:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE

12
brew install hubhomebrew ile kurmak için
gcamp

11
Bu benim için işe yaramıyor. Çekme isteği oluşturulurken hata diyor:
İşlenemeyen

11
@Rubycut Aynı sorunu yaşadım. Bunun yerine yaptım hub pull-request URL_TO_ISSUE, o zaman benim için çalıştı. Merak ediyorum -i ISSUE_NUMBERsadece sorun aynı depoda ise (yani bir çatal değil) çalışır
Michael Mior

30
@MichaelMior'un cevabını genişletmek için tam bir örnek:hub pull-request -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
atomicules

4
Bunun yalnızca oluşturduğunuz konularda işe yaradığını unutmayın: github.com/defunkt/hub/issues/189#issuecomment-6353354
Zach

237

Mevcut bir yukarı akış sorununa bir çekme isteği eklemek , normal github araçlarını kullanarak çatallandığınızı varsayarsak kolaydır .

Desteklenen anahtar kelimelerden herhangi birini kullanarak taahhüt mesajınızdaki sorunu referans almanız yeterlidir :

  • kapat
  • kapanır
  • kapalı
  • düzeltme
  • düzeltmeleri
  • sabit
  • çözmek
  • giderir
  • kararlı

Örneğin: "bu işlem # 116'yı düzeltir"

Sorunu referans alan metnin taahhüdünüzün konu satırında görünmesine gerek yoktur.

Taahhüdünüzü github repo'nuza itin ve çekme talebi otomatik olarak soruna eklenecektir.

Not: Gerekli olmasa da, çekme talebinin bir parçası olacak herhangi bir şeyi bu konuya özgü ayrı bir şubeye vermeniz şiddetle tavsiye edilir, çünkü bu branşta gelecekte yapılacak taahhütler çekme talebine eklenecektir (otomatik olarak github tarafından ). Bu nedenle, ayrı bir dal yapmadıysanız, master'a bıraktıysanız ve daha sonra gelişmeye devam ettiyseniz, master'a ilişkin ilgisiz tüm taahhütleriniz çekme talebinize eklenir.


31
"Bu konuyla ilgili ayrı bir şubeye çekme talebinin bir parçası olacak herhangi bir şey yapmanız önemle tavsiye edilir, çünkü bu branşta gelecekte yapılacak taahhütler çekme talebine eklenecektir" - çok iyi bir nokta. Bu bana bir kez oldu ve oldukça şaşırtıcıydı.
MatrixFrog

9
Bu, bir sorunun maalesef bir çekme isteğine dönüştürülmesi sorununu çözmez. Bu konuda yapılan herhangi bir tartışma çekme talebine aktarılmıyor ... bu birkaç kullanım durumu için talihsiz bir durum. Keşke Github, re-req'lerin repo ayarlarında nasıl çalıştığı üzerinde ayrıntılı bir kontrol sağlamasını isterdim.
Alex Waters

1
@masukomi Proje sorumlusunun çözmesi için bir çekme isteği daha kolaydır - değişiklikleri bir düğmeyi tıklatarak kabul edebilir ve birleştirebilirler. Çataldaki bir değişikliği çekme isteği kullanmadan çekmek için, çatalı uzaktan kumanda olarak eklemeniz, değişikliklerini almanız ve bunları kendiniz birleştirmeniz gerekir.
Rory O'Kane

2
Sanýrým anlamýma cevap vermedin Rory. Bir çekme isteği oluşturursanız ve sorunda (önerdiğim gibi) bahsederseniz, ikisi bağlanır ve değişiklikleri almak için yine de bir düğmeyi tıklayabilirsiniz.
masukomi

2
Bu, çekme isteği devam eden bir şey olduğunda yardımcı olmaz. İş akışımız, fikirler için sorunlar oluşturmak ve daha sonra bu fikirler üzerinde çalışmaya başladığımızda özellik dallarından talepler almaktır. Çekme talebindeki bir taahhüdü kullanarak sorunun kapatılması, konunun içerdiği önceki tartışmayı kaybettiğimiz anlamına gelir; bu, genellikle sorunun adresleri olan herhangi bir özelliği / düzeltmeyi / yeniden düzenleme işlemini ortadan kaldırmayı içerir. Gerçekten ihtiyaç duyulan şey, konuyla ilgili çalışma başladıktan sonra bir konuyu bir çekme talebine dönüştürmenin bir yoludur.
Daniel Bingham

144

Sen ile varolan sayısından Çekme İsteği oluşturabilir çekin Talebi API :

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

Bu bir çekme isteği oluşturur:

  • technoweenieprojeye sor faraday(https://api.github.com/repos/ technoweenie / faraday / pulls )
  • dan çekimine bağlı olarak synchronyşube smparkes( 'kafa': 'çatal' smparkes : eşzamanlı ')
  • 'çatal' da masterşubeye technoweenie("temel": " ana ")
  • ve 15 numaralı soruna çekme isteğini ekleyin ("sorun": 15 )
  • çekme isteği yazarıyla smparkes( --user " smparkes ")
  • GitHub şifreniz istenecektir

1
Bu linkten bazı örnek kodları kopyaladım. Umursamıyorsun ve yanlış çevirirsem lütfen bana bildirin!
MatrixFrog

3
Ayrıca, kimlik doğrulamaya da ihtiyacınız var, yukarıdaki komuta ekleyin: -u "login: password"
morgoth

2
Sadece bu yöntemin hala işe yaradığını eklemek istiyorum, ancak GitHub mesajında ​​# sorunundan dolaylı olarak aldıysa, örnekleminizi tartışma sayfasında iki kez listelemenin yan etkisi olabilir ( örnek ). Ancak taahhüt, resmi çekme talebinde sadece bir kez gerçekleşir.
Greg Haskins

3
Bu, v3 API'sine güncellenebilir mi? GitHub v2 API'sını kapattı.
Michael Best

1
Ben dediğimiz gibi @rsanchezsaez Cevabıma , değişim --user "smparkes:password"için --user "smparkes"etkileşimli şifrenizi sorulmasını.
Rory O'Kane


10

Bu diğer yanıt , GitHub API'sı aracılığıyla bir Sorundan bir Çekme İsteği oluşturmak için cURL ( curl) yönteminin nasıl kullanılacağını açıklar . Daha kolay okunur ve kolay düzenlenebilir bir komut üreten HTTPie ( ) kullanarak bunu nasıl yapacağınız aşağıda açıklanmıştır :http

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

Ardından istendiğinde GitHub parolanızı yazın.

Açıklanan örnek

GitHub'a kullanıcı adı smparkları ve şifre avcısı2 ile giriş yaptınız . Gördünüz technoweenie repo Faraday , değiştirilmelidir şey düşündüm ve bunun için o repo Hata Bildir yapılan Sorun # 15 . Daha sonra, önerdiğiniz değişikliği başka hiç kimsenin yapmadığını görürsünüz ve bunu kendiniz yapmak için biraz zamanınız vardır. Sen çatal Faraday kendi hesabınıza sonra değişiklikleri yazmak ve bir dal adlı altında çatal aktarın senkroninin . Sence technoweenie bu değişiklikleri çekilmesi gerektiğini ustarepo şubesi. Bu, önceki Sorununuzu bu durum için bir Çekme İsteğine dönüştürmek için yazacağınız komuttur:

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for smparkes@api.github.com: hunter2

Şimdi Sayı 15 , bir Çekme İsteğidir.


3

github ile 2 faktörlü kimlik doğrulaması kullanmanız durumunda, istekte başlık olarak kimlik doğrulaması sağlamanız gerekir:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls

1
Evet, 2FA buradaki yanıtların çoğunun çalışmasını engelliyor. Benim durumumda, kişisel bir erişim belirteci oluşturdum ve işe yarayan şifrem yerine onu kullandım.
berto

1

Sorununuz için çekme istekleri göndermek üzere Gub'ı da kullanabilirsiniz .

Ayrıca, uygun bir çatal / çekme isteği stili kullanmanıza yardımcı olur.

Düzenleme: 10/5/2013

Gub'un 123 numaralı sorun için çekme isteği göndermesini sağlamak için aşağıdakileri çalıştırmanız gerekir:

$ gub start 123

Bu yeni bir şube sorunu yaratacaktır-123. Sorun üzerinde çalışmayı tamamladıktan sonra, şunları yürütün:

$ gub finish

İşte bu kadar!

Not: Ben Gub gem'in yazarıyım.


1

Bunun yerine (istemci tarafında olduğunu yapmanın hubolarak, Hıristiyan Oudard cevap ), şimdi (2020 Şubat) bunu yapabiliyor sunucu tarafında (github.com)

Bkz. " Kenar çubuğundan sorunları görüntüleme ve bağlama ve istekleri çekme "

Artık ilgili sayfalarındaki kenar çubuğu aracılığıyla sorunları bağlayabilir ve istekte bulunabilirsiniz. Burada yapılan bağlantılar, bağlantılı bir çekme isteği birleştirildiğinde sorunları otomatik olarak kapatır.

Dokümantasyon :https://help.github.com/assets/images/help/pull_requests/link-issue-drop-down.png

Ve bu özelliğe sahip bir arama API'sı var.

linked:prArama niteleyicisi ile kapanış çekme istekleri başvuruları olan bir havuzdaki tüm açık sorunları bulun .
Benzer şekilde, destekleyici bir sorunu olmayan bir depodaki tüm çekme isteklerini bulun -linked:issue.


0

Git-hub aracını kullanarak aşağıdakileri yapabilirsiniz:

$> git hub pull attach 123

Bu, # 123 sayısını çekme isteğine # 123 dönüştürebilir ve böylece sorunla ilgili tüm tartışmaları tek bir yerde tutabilir.


0

2FA etkinse, jetonu HTTPie ile iletmeyi kullanabilirsiniz:

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

Bu, dalı issue_2# 2 numaralı sorunu bir çekme isteğine dönüştürmek için kullanır .

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.