ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
記事のバージョン: GitHub.com

プルリクエストのマージについて

フィーチャブランチにすべてのコミットを保ち、すべてのコミットを単一のコミットにsquashするか、個々のコミットをheadブランチからbaseブランチにリベースすることによって、プルリクエストをマージできます。

GitHub 上のプルリクエストでデフォルトの [Merge pull request(プルリクエストのマージ)] をクリックすると、フィーチャブランチのすべてのコミットがマージコミット中でベースブランチに追加されます。プルリクエストは --no-ffオプションを使ってマージされます。

プルリクエストをマージするには、リポジトリの書き込み権限が必要です。

[standard-merge-commit-diagram]

プルリクエストのコミットのsquashとマージ

GitHub 上のプルリクエストの [Squash and merge] オプションを選択した場合、プルリクエストのコミットは単一のコミットに squash されます。コミット群はトピックブランチからのすべてのコントリビューターの個々のコミットとしてではなく、1 つのコミットとしてまとめられ、デフォルトブランチにマージされます。squash されたコミットを持つプルリクエストはfast-forward オプションを使ってマージされます。

プルリクエストを squash してマージするには、リポジトリの書き込み権限が必要で、リポジトリは squash マージを許可していなければなりません。

commit-squashing-diagram

squash とマージを使って、リポジトリの Git の履歴をスムーズにすることができます。作業途中でのコミットはフィーチャブランチでの作業の際には役立ちますが、必ずしも Git の履歴として残すことは重要ではありません。デフォルトのブランチの際にそれらのコミットを 1 つのコミットに squash すれば、オリジナルの変更を明快な Git の履歴で残すことができます。

プルリクエストコミットのリベースとマージ

GitHub 上のプルリクエストで [Rebase and merge] オプションを選択すると、トピックブランチ (あるいは head ブランチ) からのすべてのコミットは、マージコミットなしに個別にベースブランチへと追加されます。リベースされたコミットを持つプルリクエストは、fast-forward オプションを使ってマージされます。

プルリクエストをリベースしてマージするには、リポジトリの書き込み権限を持っていなければならず、リポジトリは リベースマージを許可していなければなりません。

GitHub 上のリベースとマージの動作は、git rebase とはやや異なります。GitHub 上のリベースとマージは、常にコミッタの情報を更新し、新しいコミット SHA を作成しますが、GitHub 外の git rebase は先祖のコミット上でリベースが行われたときにコミッタの情報を変更しません。git rebase に関する詳しい情報については、書籍 Pro Git の "Git rebase" の章を参照してください。

git rebase のビジュアルな表現については書籍 Pro Git の "Git のブランチ機能 - リベースを参照してください。

以下の場合、GitHub上で自動的にリベースおよびマージすることはできません:

それでもコミットをリベースしたいにもかかわらず、GitHub 上で自動的にリベースとマージが行えない場合、以下のようにしなければなりません:

リポジトリに書き込み権限を持つ人は、続いてGitHub上のリベース及びマージボタンを使って変更をマージできます。

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください