プル リクエストを作成したり、GitHub でホストされている別のリポジトリに送信したりするにはどうすればよいですか?
8 に答える
(公式の「GitHubヘルプ」プルリクエストの使用」ページに加えて、「GitHubでの分岐と分岐」、「 GitHubでのオリジンとアップストリームの違いは何ですか
」
も参照してください)
プルリクエストに関するいくつかのヒント:
あなたが最初にレポをフォークしたと仮定すると、あなたが所有しているそのフォークであなたがすべきことは次のとおりです。
- ブランチを作成する:ブランチ内の変更を分離します。からプルリクエストを作成しないでください。プルリクエストを作成すると、一度に複数の
master
変更を蓄積して混合したくなる可能性があります。 - そのブランチをリベースする:そのブランチからプルリクエストをすでに実行している場合でも、その上にリベースすると
origin/master
(パッチがまだ機能していることを確認して)、プルリクエストが自動的に更新されます(何もクリックする必要はありません) - そのブランチを更新します。プルリクエストが拒否された場合は、新しいコミットを追加したり、履歴を完全にやり直したりできます。これにより、既存のプルリクエストが再度アクティブになります。
- そのブランチに「焦点を合わせる」:つまり、トピックを「タイト」にし、何千ものクラスとすべてのアプリを変更せず、明確に定義された機能を追加または修正するだけで、変更を小さく保ちます。
- そのブランチを削除する:受け入れられると、フォーク(および)でそのブランチを安全に削除できます
git remote prune origin
。GitHub GUIは、プルリクエストページでブランチを削除するよう提案します。
注:プルリクエスト自体を作成するには、「完璧なプルリクエストを作成する方法」(2015年1月、GitHub)を参照してください。
2016年3月:新しいPRマージボタンオプション:「レビューコメント後のプルリクエストでGithubスカッシュがWebインターフェイスからコミットしますか?」を参照してください。
リポジトリのメンテナは、merge --squash
これらのPRコミットを選択できます。
プルリクエスト後
最後のポイントとして、2013年4月10日以降、「再設計されたマージボタン」により、ブランチが削除されます。
マージ後のブランチの削除も簡素化されました。
追加の手順で削除を確認する代わりに、ブランチを削除するとすぐに削除され、再度必要になった場合にブランチを復元するための便利なリンクが提供されます。
これにより、プルリクエストをマージした後にブランチを削除するベストプラクティスが確認されます。
プルリクエストとリクエストプル
プルリクエストは公式の「git」用語ではありません。
Gitはrequest-pull
(!)コマンドを使用して、マージのリクエストを作成します。
これは、「2つのコミット間の変更を標準出力に要約し、生成された要約に指定されたURLを含めます」。
Githubは初日(2008年2月)に独自のバージョンをリリースしましたが、2010年5月にその機能を再設計し、次のように述べています。Pull Request = Compare View + Issues + Commit comments
「リポジトリ」の電子メモ(原文のまま)
<humour>
それ(プルリクエスト)はGitHubによって適切に定義されていません!
幸いなことに、真のビジネスニュース組織は知っているでしょう。プルリプレースを「e-note」に置き換えるためのe-noteがあります。
したがって、リポジトリに電子メモが必要な場合は、 FoxBusinessに問い合わせてください。彼らは知っています。
</humour>
プル リクエストの作成方法を学ぶために、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
- コントリビュートしたいリポジトリの「フォーク」ボタンをクリックします。この場合は、Dwolla の PHP リポジトリ(Dwolla/dwolla-php) です。
- 新しく作成したフォークの URL を取得します。この場合はhttps://github.com/tim-peterson/dwolla-php.git (tim-peterson/dwolla-php) です。
- 上記のシーケンスを入力
git clone->cd dwolla-php->git remote->git fetch
して、コンピューターのどこかにフォークを複製し (つまり、「コピー/貼り付け」、この場合は :third_party TimPeterson$
)、マスター リポジトリ (Dwolla/dwolla-php) と同期します。 - ローカル リポジトリに変更を加える
- 上記のシーケンスを入力して
git add->git commit->git push
、変更をリモート リポジトリ、つまり Github のフォーク (tim-peterson/dwolla-php) にプッシュします。
パート 2 : プル リクエストの作成: https://help.github.com/articles/using-pull-requests
- GithubのフォークのWeb ページに移動します ( https://github.com/tim-peterson/dwolla-php )
- 「プルリクエスト」ボタンをクリック
- プルリクエストに名前を付け、行った変更の詳細を入力し、送信ボタンをクリックします。
- あなたは終わった!
プル リクエストを作成するには、次の手順を実行する必要があります。
- (プル リクエストを作成したい) リポジトリをフォークします。リポジトリ ページのフォーク ボタンをクリックするだけで、github ユーザー名の前に別の github リポジトリが作成されます。
- リポジトリをローカル マシンにクローンします。これは、ローカル マシンにインストールした Github ソフトウェアで実行できます。リポジトリ名の横にあるクローン ボタンをクリックします。
- ファイルをローカルで変更/コミットする
- 変更を同期する
- github のフォークされたリポジトリに移動し、ブランチ ボタンの横にある [Compare & Review] 緑色のボタンをクリックします。(ボタンにはアイコンがあり、テキストはありません)
- 変更を示す新しいページが開き、プル リクエストのリンクをクリックすると、フォークしたリポジトリの元の所有者にリクエストが送信されます。
これを理解するのにしばらく時間がかかりました。これが誰かの助けになることを願っています。
github.com アカウントを持っているのに、コマンド ラインに「git」と入力すると厄介なエラー メッセージしか表示されないという人のために、ブラウザですべてを実行する方法を次に示します :)
- Tim と Farhan が書いたのと同じ: 自分のプロジェクトのコピーをフォークする:
- 数秒後、プロジェクトの独自のフォーク コピーにリダイレクトされます。
- 変更する必要があるファイルに移動し、ツールバーの [このファイルを編集] をクリックします。
- 編集後、変更を説明するいくつかの単語を書き、次に「変更をコミット」して、同様に master ブランチに書き込みます (これは「メイン」プロジェクトではなく、自分自身のコピーにすぎないため)。
- 編集する必要があるすべてのファイルに対して手順 3 と 4 を繰り返し、プロジェクトのコピーのルートに戻ります。そこで、緑色の [比較、レビュー...] ボタンをクリックします。
- 最後に、[プル リクエストの作成] をクリックし、リクエストの見出しと説明を再確認した後、 もう一度[プル リクエストの作成] をクリックします。
ティム・ピーターソンの指示に従いましたが、変更のためにローカル ブランチを作成しました。ただし、プッシュした後、GitHub に新しいブランチが表示されませんでした。解決策は、push コマンドに -u を追加することでした。
git push -u origin <branch>