githubの既存の課題に新しいプルリクエストをどのように添付しますか?


409

よくわかりませんが、タイトルに「Issue 4」または何かを付けてgithubプルリクエストを作成したという漠然とした記憶があり、提出したプロジェクトのIssue 4に自動的に添付されました。最近もう一度試してみましたが、うまくいきませんでした。代わりに、まったく新しい問題が発生しました。新しいプルリクエストページに「問題に添付」などのオプションが表示されず、問題ページに「この問題の新しいプルリクエストを開く」も表示されません。これを行う方法はありますか?プロジェクトオーナーが問題ページをきれいに保ち、重複を避けるのに役立ちますか?

編集:明確にするために、プルリクエストを作成すると常に新しい問題が作成されることを知っています。代わりにプルリクエストを既存の問題に添付したいと思います。


1
私の答えは、あなたが望む機能(「プルリクエストを既存の課題に添付する」)がまだないかもしれないという事実を表現していると思います。
VonC、

確かにそうです(実際、このツイートで確認されています)が、私の質問がより明確である可能性があることにも気付きました。
MatrixFrog 2010

機能がgithubの優先度リストで高くなっていることを願っています。
flq

2
正解はmasukomiに変更する必要があります。「fixes#1」メソッドが利用できるようになったためです。APIを経由する必要はありません。
エドワードアンダーソン

それでもプルリクエストを既存の課題に添付する方法が見つかりません。私は何かを見逃しましたか?このスレッドの答えは、この機能が存在することを示唆しているようですが、私はそれを見つけることができません(常に新しい問題を引き起こします)。
Kevin Jalbert、2011年

回答:


245

「ハブ」プロジェクトはこれを行うことができます:

https://github.com/defunkt/hub

プルリクエストを送信したいリポジトリとブランチで:

$ hub pull-request -i 4

これはGitHub APIを使用し、現在のブランチのプルリクエストを既存の課題番号4に添付します。


編集: @atomiculesによるコメント @MichaelMiorによる回答を拡張するには、完全な例を以下に示します。

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

12
brew install hub自作でインストールする
gcamp '29 / 07/29

11
これは私にはうまくいきません。プルリクエストの作成エラー:
Unprocessable

11
@Rubycut同じ問題がありました。代わりに私はしましたhub pull-request URL_TO_ISSUE、そしてそれは私のために働きました。-i ISSUE_NUMBER問題が同じリポジトリ(つまり、フォークではない)にある場合にのみ機能するかどうか疑問に思います
Michael Mior '16

30
@MichaelMiorによって答えに拡大するための完全な例は次のとおりです。hub pull-request -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
atomicules

4
これはあなたが作成した問題でのみ機能することに注意してください:github.com/defunkt/hub/issues/189#issuecomment-6353354
Zach

237

既存のアップストリームの問題にプルリクエストを追加するのは、通常のgithubの手段を使用してフォークした場合に簡単です

いずれかを使用して、コミットメッセージで問題を参照するだけです サポートされているキーワードの

  • 閉じる
  • 閉じます
  • 閉まっている
  • 直す
  • 修正
  • 修繕
  • 解決する
  • 解決する
  • 解決した

例:「このコミットは#116を修正します」

問題を参照するテキストは、コミットの件名に表示する必要はありません。

コミットをgithubリポジトリにプッシュすると、プルリクエストが自動的に問題に追加されます。

注:必須ではありませんが、プルリクエストの一部となるものはすべて、その問題に固有の別のブランチにコミットすることを強くお勧めします。これは、そのブランチでの将来のコミットがプルリクエストに追加されるためです(githubによって自動的に)。したがって、別のブランチを作成せず、それをマスターに残し、その後開発を続けると、マスターへのすべての無関係なコミットがプルリクエストに追加されます。


31
「プルリクエストの一部となるものはすべて、その問題に固有の別のブランチにコミットすることを強くお勧めします。そのブランチでの将来のコミットはプルリクエストに追加されるためです」-非常に良い点です。それは一度私に起こりました、そしてそれはかなり意外でした。
MatrixFrog 2011

9
これは、残念ながら問題をプルリクエストに変換する問題を解決しません。問題で行われていたディスカッションはプルリクエストに転送されません...これはいくつかのユースケースでは残念です。Githubで、リポジトリ設定でpull-reqがどのように機能するかを細かく制御できるようにしたい
アレックスウォーターズ

1
@masukomiプルリクエストはプロジェクトメンテナーにとって解決が簡単です。ボタンのクリックで変更を受け入れてマージできます。プルリクエストを使用せずにフォークの変更をプルするには、フォークをリモートとして追加し、変更をフェッチして、自分でマージする必要があります。
Rory O'Kane 2012

2
あなたは私のポイントロリーを逃したと思います。(私が提案したように)プルリクエストを作成してそれを問題に記載すると、2つは接続され、ボタンをクリックして変更を取得できます。
masukomi

2
プルリクエストが進行中の場合、これは役に立ちません。私たちのワークフローは、アイデアの問題を作成し、それらのアイデアに取り組み始めると、機能ブランチからリクエストをプルすることです。プルリクエストでコミットを使用して問題を閉じることは、問題が含んでいた以前の議論を失うことを意味します。これには、問題が対処する機能/修正/リファクタリングのハッシュ化が含まれることがよくあります。本当に必要なのは、問題の作業が始まったら、問題をまっすぐプル要求に変える方法です。
Daniel Bingham 2014

144

プルリクエストAPIを使用して、既存の課題からプルリクエストを作成できます

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

これはプルリクエストを作成します:

  • 頼むtechnoweenieプロジェクトでfaraday(https://api.github.com/repos/ technoweenie / ファラデー /引っ張ります)
  • 'fork( "head": " smparkessynchronysynchronyブランチからプルするsmparkes ")
  • master分岐のブランチtechnoweenie( "base": " master ")
  • プルリクエストを発行15に添付します( "issue":15
  • プルリクエストの作成者smparkes(--user " smparkes ")
  • GitHubパスワードの入力を求められます

1
そのリンクからサンプルコードの一部をコピーしました。よろしくお願いします。誤訳した場合はお知らせください。
MatrixFrog 2010

3
また、認証が必要です。上記のコマンドに次を追加します。
u

2
このメソッドは引き続き機能することを付け加えたいのですが、GitHubがメッセージ内の問題#から暗黙のうちに暗黙的にピックアップしている場合は、ディスカッションページにコミットを2回リストするという副作用がある可能性があります()。ただし、コミットは公式のプルリクエストで1回だけ行われます。
グレッグハスキンズ

3
これをv3 APIに更新できますか?GitHubがv2 APIをオフにしました。
マイケルベスト

1
@rsanchezsaez 私の答えで言うように、パスワードをインタラクティブに要求するように変更--user "smparkes:password"--user "smparkes"ます。
Rory O'Kane 2013


10

この別の回答は、cURLcurl)を使用して、GitHub APIを介して課題からプルリクエストを作成する方法を説明していますHTTPiehttp)を使用してそれを実行する方法は次のとおりです。これにより、読みやすく編集しやすいコマンドが生成されます。

$ 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>

次に、プロンプトが表示されたらGitHubパスワードを入力します。

説明された例

ユーザー名smparkesとパスワードhunter2を使用してGitHubにログインしました。あなたは見たtechnoweenieのレポファラデー、変更されるべきものと考え、そして、それをそのレポに問題を作った問題#15。後で、提案された変更を誰も行っていないことがわかり、自分で変更する時間もあります。あなたはフォークファラデー自分のアカウントに、その後変更内容を書いて、枝の名前の下にフォークにそれらをプッシュし、同期。あなたはtechnoweenieがそれらの変更をマスターに彼のレポのブランチ。これは、前の問題をこの状況のプルリクエストに変換するために作成するコマンドです。

$ 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

ここで、問題15はプルリクエストです。


3

githubで2-factor-authを使用する場合は、リクエストのヘッダーとしてauthtokenを提供する必要があります。

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
はい、2FAはここでの回答の多くが機能しないようにします。私の場合、個人用のアクセストークンを作成し、パスワードではなくそれを使用しました。
berto 2016年

1

Gubを使用して、問題のプルリクエストを送信することもできます。

また、適切なfork / pull-requestスタイルを使用するのにも役立ちます。

編集:2013年10月5日

Gubに問題#123のプルリクエストを送信させるには、以下を実行する必要があります。

$ gub start 123

これにより、新しいブランチissue-123が作成されます。問題の処理が完了したら、次を実行します。

$ gub finish

出来上がり!

注:私はGub gemの作成者です。


1

代わりに(とクライアント側でそれを行うのhubように、キリスト教のOudardの 答え)、今(2020年2月)でそれを行うことができますサーバー側(github.com)

問題の表示とリンクおよびサイドバーからのプルリクエスト」を参照してください。

それぞれのページのサイドバーから課題とプルリクエストをリンクできるようになりました。リンクされたプルリクエストがマージされると、ここで行われた接続は自動的に問題を閉じます。

ドキュメンテーションhttps://help.github.com/assets/images/help/pull_requests/link-issue-drop-down.png

そして、その機能を備えた検索APIがあります。

リポジトリ内で、linked:pr検索修飾子を使用してプルリクエストを閉じる参照がある未解決の問題をすべて検索します。
同様に、でサポートされている問題が欠落しているリポジトリ内のすべてのプルリクエストを見つけます-linked:issue


0

git-hubツールを使用すると、次の方法でこれを行うことができます。

$> git hub pull attach 123

これにより、問題#123がプルリクエスト#123に変換され、問題に関するすべての議論が1つの場所で維持されます。


0

2FAを有効にしている場合は、HTTPieでトークンを渡すことができます。

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

これはブランチissue_2を使用して課題#2をプルリクエストに変換します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.