GitHubプルリクエストを行う方法


283

GitHubでホストされている別のリポジトリにプルリクエストを作成または送信するにはどうすればよいですか?


2
これはGitHubヘルプページで十分に説明されていませんか?
lanzz 2013

27
@lanzzいいえ、ヘルプページにはいくつかの役立つヒントが含まれていません。最初のプルリクエストを実行する前に知っておきたいことです(下記を参照)。
VonC、2013

9
@ianzzもちろんGithubのページは「十分」ですが、学ぶ方法はたくさんあります。私がやろうとしたのは、初心者レベルのチュートリアルを作ることでした。Githubの説明に欠けていたのは、1)1つのソースに含まれていない(2ページが明確にリンクされていない)、2)簡潔ではなかった(これらのページは非常に長く、長い=圧倒的)、3)だった重要なセクションでは人間の言葉で説明されていません。教育において、経験豊富な教師が初心者が知らないことを知ることは常に困難です。初心者の立場に身を置くことは、これを書くことの私の目的でした。
ティム・ピーターソン、2013

12
長いということは、圧倒的なことを意味する可能性があり、打ち切り= 学習を意味しない場合があります。明らかに、それらの1つだけではないであろう多くの手段を介して、「関係するプロセスを理解することになる」可能性があります。炎の戦争を終わらせるために、返信する必要はありません、私はあなたがどこから来たのか理解しています。
ティム・ピーターソン、2013

8
あなたは自分のフォークからプルリクエストをします。それは間違いなく私の元の想定ではありませんでした
Derek Illchuk

回答:


236

(公式の「GitHubヘルプ「プルリクエストの使用」ページ」に加えて、「GitHubでの分岐と分岐」、「GitHubのオリジンとアップストリームの違いは何ですか
も参照してください)

プルリクエストに関するいくつかのヒント:

最初にrepoをフォークしたと仮定すると、所有しているそのフォークで次のことを行う必要があります。

  • ブランチを作成する:ブランチ内の変更を分離します。からのプルリクエストを作成しないでください。プルリクエストはmaster複数の変更を一度に蓄積および混合したくなる可能性があります。
  • そのブランチのリベースそのブランチからすでにプルリクエストを実行した場合でも、それをorigin/master(パッチがまだ機能していることを確認して)上にリベースすると、プルリクエストが自動的に更新されます(何もクリックする必要はありません)。
  • そのブランチを更新します。プルリクエストが拒否された場合は、新しいコミットを追加するか、履歴を完全にやり直すことができます。既存のプルリクエストが再びアクティブになります。
  • その分岐を「フォーカス」します。つまり、トピックを「タイト」にし、何千ものクラスとすべてのアプリを変更せず、明確に定義された機能のみを追加または修正し、変更を小さく保ちます
  • そのブランチを削除する:いったん受け入れられると、そのブランチをフォーク(およびgit remote prune origin)で安全に削除できます。GitHub GUIは、プルリクエストページでブランチを削除することを提案します。

注:する書き込み「を参照してください、プルリクエスト自身をどのように完璧なプルリクエストを書くために」(2015年1月に、GitHubの)


2016年3月:新しいPRマージボタンオプション:「コメントのレビュー後にプルリクエストでWebインターフェースからGithubスカッシュがコミットしますか?」を参照してください。

押しつぶす

リポジトリのメンテナーは、merge --squashこれらのPRコミットを選択できます。


プルリクエストの後

最後の点について、2013年4月10日の「マージボタンの再設計」以降、ブランチは削除されます。

新しいマージボタン

マージ後のブランチの削除も簡単になりました。
追加の手順で削除を確認する代わりに、ブランチを削除するとすぐに削除され、ブランチが再び必要になった場合にブランチを復元するための便利なリンクが提供されます。

これは、プルリクエストをマージした後にブランチを削除するベストプラクティスを裏付けています。


プルリクエストとリクエストプル


「reposotory」の電子ノート(原文)

<humour>

その(プルリクエスト)はGitHubによって適切に定義されていません!

幸いなことに、真のビジネスニュース組織は知っています。pull-replaceを「e-note」に置き換えるためのe-noteがあります

https://pbs.twimg.com/media/BT_5S-TCcAA-EF2.jpg:large

あなたのレポあればO保守党は、電子ノートを必要とする... フォックスビジネスを頼みます。彼らは知っている。

</humour>


2
-@ VonCこれをありがとう。あなたが言ったことと私が言ったこととの違いを指摘するためのコードを提供してもらえませんか?branch対のmaster決定は1つが実際に使用することを何かに理論的なソリューションから私/ Githubのの答えを取るための重要な1のように思えます。
ティム・ピーターソン、2013

1
@timpetersonは、そのブランチ内の履歴を完全に変更できること、およびプルリクエストを自動的に更新するという事実がここで重要です。プルリクエストは最新の上流プロジェクトで実行する必要があるためです。上流のリポジトリに新しいコミットがある場合は、その上にブランチをリベースし(そのブランチの履歴を変更)、フォークにプッシュバックする必要があります。これにより、(同じブランチに基づいて)プルリクエストが自動的に更新されます。
VonC、2013

4
リベースの部分がわかりません。それは何をしますか?(このページはロケット科学のように聞こえますが、私はそうではないと思います)。その時点で「リベース」するコマンドはどれですか。
Camilo Martin

1
@CamiloMartinあなたがあなたのPRブランチにいるなら、それgit pull --rebase upstream/masterは確かに結構です。
VonC、2014

1
@vikramviマスターは、分岐した元のリポジトリと共通のブランチです。そのブランチは常に元のレポをミラーリングする必要があります。PRのブランチで修正を分離します。マスターを使用するのは、元のリポジトリの内容を知る方法(および修正ブランチをその上にリベースして、プルリクエストのマージを簡単にするため)だけです
VonC

202

プルリクエストを行う方法を学ぶために、Githubの2つの個別のヘルプページ(箇条書きとして以下にリンク)をたどりました。次のコマンドラインコマンドはパート1用です。実際のプルリクエストであるパート2は、すべてGithubのWebサイトで行われます。

$ git clone https://github.com/tim-peterson/dwolla-php.git
$ cd dwolla-php
$ git remote add upstream https://github.com/Dwolla/dwolla-php.git
$ git fetch upstream
// make your changes to this newly cloned, local repo 
$ git add .
$ git commit -m '1st commit to dwolla'
$ git push origin master
  • パート1:誰かのレポをフォークする:https : //help.github.com/articles/fork-a-repo

    1. 貢献したいリポジトリの「フォーク」ボタンをクリックします。この場合、DwollaのPHPリポジトリ(Dwolla / dwolla-php)です。
    2. この場合、新しく作成したフォークのURLを取得します。https//github.com/tim-peterson/dwolla-php.git(tim-peterson / dwolla-php)
    3. git clone->cd dwolla-php->git remote->git fetch上記のシーケンスを入力して、コンピューターのどこかにフォークを複製し(つまり、「コピー/貼り付け」、この場合はthird_party TimPeterson$)、マスターリポジトリ(Dwolla / dwolla-php)と同期します。
    4. ローカルリポジトリに変更を加える
    5. git add->git commit->git push上記のシーケンスを入力して、変更をリモートリポジトリ、つまりGithubのフォークにプッシュします(tim-peterson / dwolla-php)
  • パート2:プルリクエストを作成する:https : //help.github.com/articles/using-pull-requests

    1. 行くあなたのフォークの Githubの上のWebページ(https://github.com/tim-peterson/dwolla-php
    2. 「プルリクエスト」ボタンをクリック
    3. プルリクエストに名前を付け、加えた変更の詳細を記入し、送信ボタンをクリックします。
    4. 完了しました!!

4
-@ alexgray、私はbashプロンプトを残しました。たとえば、Tims-MacBook-Pro:third_party TimPeterson$これは初心者向けのチュートリアルであり、これらのプロンプトはユーザーの方向付けに役立ちます。
ティムピーターソン2013

1
はい。ありがとうございました。私が従うことができる実用的な例。どうしてそのgitハブを持っていないのですか?
セブンアース

git fetch upstream、あなたが使用して、ローカルコピーを持つ上流の変更をマージする必要はありませんgit checkout master、その後git merge upstream/master
スパーホーク2015年

@Sparhawkいいえ、変更をフォークにあるマスターにマージする必要はありません。他のレポへのプルリクエストは、ブランチだけに基づくことができます。ただし、「実際の」リポジトリへの変更が頻繁に行われ、フォークされたリポジトリのループに頻繁に戻されるように、フォークのマスターも更新することをお勧めします。
2016年

1
@HimanshuShekharはい。ただし、githubデスクトップアプリまたはそのAPIを使用する必要があります。ブラウザの方が簡単です。
ティム・ピーターソン

70

プルリクエストを行うには、次の手順を実行する必要があります。

  1. リポジトリをフォークします(プル要求を作成する先)。リポジトリページのフォークボタンをクリックするだけで、githubユーザー名の前に別のgithubリポジトリが作成されます。
  2. リポジトリをローカルマシンに複製します。ローカルマシンにインストールしたGithubソフトウェアがこれを行うことができます。リポジトリ名の横にあるクローンボタンをクリックします。
  3. ファイルをローカルで変更/コミットする
  4. 変更を同期する
  5. github forkedリポジトリに移動し、ブランチボタンの横にある緑色の[比較&レビュー]ボタンをクリックします。(ボタンにはアイコンがあります-テキストなし)
  6. 変更を示す新しいページが開き、プルリクエストリンクをクリックすると、フォークしたリポジトリの元の所有者にリクエストが送信されます。

これを理解するのに少し時間がかかりました。これが誰かの役に立つことを願っています。


3
プルリクエストを行う前に、リポジトリをフォークする必要があるかどうかは不明でした。プッシュされたコミットは、パブリックな書き込みアクセス権を持つある種の保留中のブランチに行き、そこからマージされると考えました。ありがとう!
Chris Arena

16

私は、人々が最初のGitHubプルリクエストを作成できるようにするプロジェクトを開始しました。あなたはここであなたの最初のPRするために実践的なチュートリアルをすることができます

ワークフローは簡単です

  • GitHubでレポをフォークする
  • クローンリポジトリボタンをクリックしてクローンURLを取得する
  • 端末に移動して実行します git clone <clone url you copied earlier>
  • 行っている変更のためにブランチを作る git checkout -b branch-name
  • 必要な変更を加える
  • 変更をコミットします git commit
  • 変更をGitHubのフォークにプッシュする git push origin branch-name
  • GitHubのフォークに移動してCompare and pull requestボタンを表示します
  • それをクリックして、必要な詳細を入力してください

15

github.comアカウントを持っているが、コマンドラインに「git」と入力したときにのみ厄介なエラーメッセージが表示される私たちのために、ブラウザーですべてを実行する方法を次に示します。

  1. TimとFarhanが書いたのと同じ:プロジェクトの自分のコピーをフォークする: ステップ1:フォーク
  2. 数秒後、プロジェクトの分岐した独自のコピーにリダイレクトされます。 ステップ2
  3. 変更する必要のあるファイルに移動し、ツールバーの[このファイルを編集]をクリックします。 ステップ3:ファイルを編集する
  4. 編集後、変更を説明するいくつかの単語を書き込んでから、「変更をコミット」します。これは、masterブランチにも同様です(これは自分のコピーであり、「メイン」プロジェクトではないため)。 ステップ4:変更をコミットする
  5. 編集する必要のあるすべてのファイルに対して手順3と4を繰り返し、プロジェクトのコピーのルートに戻ります。そこで、緑色の[比較、確認...]ボタンをクリックします。 ステップ5:送信を開始する
  6. 最後に、「プルリクエストの作成」をクリックし、リクエストの見出しと説明を確認した後、もう一度「プルリクエストの作成」をクリックします。 ここに画像の説明を入力してください

3

ティムピーターソンの指示に従いましたが、変更のためにローカルブランチを作成しました。しかし、プッシュした後、GitHubに新しいブランチが表示されませんでした。解決策は、プッシュコマンドに-uを追加することでした。

git push -u origin <branch>

上記のURLにある2つのユーザー名に気付きましたか?最初はtim-peterson2番目ですDwolla
ティム・ピーターソン

3
また、これは私の回答へのコメントとしても優れています。あなたはいくつかの反対票を得るかもしれません。
ティム・ピーターソン2013年

1

私はあなたのためにPRブランチをセットアップするすべての仕事をするbashプログラムを書きました。必要に応じてフォークを実行し、アップストリームと同期し、アップストリームのリモートを設定するなど、変更をコミットし、PRをプッシュして送信するだけです。

実行方法は次のとおりです。

github-make-pr-branch ssh your-github-username orig_repo_user orig_repo_name new-feature

プログラムがここにあり、そのリポジトリには、同じプロセスを手動で実行するためのステップバイステップガイドが含まれています。アップストリームマスターおよびその他の役立つ情報との日付。


0

最も単純なGitHubプルリクエスト gitを使用しないWebインターフェースからのものです。

  1. GitHubアカウントを登録し、ログインして、変更するリポジトリのページに移動します。
  2. 鉛筆アイコンをクリックし、

    場所の近くのテキストを検索し、必要な編集を行い、プレビューして確認します。提案された変更に最大50文字の説明とオプションの拡張説明を入力し、[ ファイル変更提案 ]ボタンをクリックします。

  3. これを読んでいる場合、リポジトリ(プロジェクトフォルダー)への書き込みアクセス権がないため、GitHubはアカウントにリポジトリ(実際にはブランチ)のコピーを作成します。[ プルリクエスト作成 ]ボタンをクリックします。

  4. プルリクエストに説明を入力してコメントを追加し、プルリクエストの作成ボタンをクリックします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.