Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となります: 2022-09-28. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

プルリクエスト中でのブランチの比較について

プルリクエストは、変更のマージ対象のbaseブランチに対するトピックブランチ中で作成した変更を比較するdiffを表示します。

注: pull request を作成する際に、変更の比較対象となるベース ブランチを変更できます。 詳細については、「プルリクエストの作成方法」を参照してください。

pull request 内で提案された変更は、[Files changed](変更されたファイル) タブで表示できます。pull request の [Files changed](変更されたファイル) タブ

コミットそのものを見るよりは、プルリクエストがマージされた際に提案された変更がファイルに現れるのを見ることができます。 [Files changed](変更されたファイル) タブではファイルはアルファベット順に表示されます。追加したファイルは緑色になり + 記号が前に付きます。一方、削除したコンテンツは赤色になり、- 記号が前に付きます。

diff 表示の選択肢

ヒント: 変更のコンテキストを理解するのが難しい場合は、[Files changed](変更されたファイル) タブの [View](表示) をクリックすると、提案された変更を含むファイル全体が表示されます。

diff の見方には複数の選択肢があります。

  • 統合ビューでは、更新分と既存の内容が線形ビューに一緒に表示されます。
  • 分割ビューでは、古い内容が片側に、新しい内容が反対側に表示されます。
  • リッチ diff ビューでは、プルリクエストがマージされたときに変更がどのように見えるかのプレビューが表示されます。
  • ソースビューでは、ソース内の変更がリッチ diff ビューのフォーマットなしで表示されます。

プルリクエスト中の大きな変更をもっと正確に表示するために、空白の変更を無視するよう選択することもできます。

Diff の表示のオプションメニュー

大規模なプルリクエスト中の変更のレビューを簡素化するために、選択されたファイルタイプだけを表示、CODEOWNERS であるファイルを表示、表示したことのあるファイルを非表示、または削除されたファイルを非表示にするように diff をフィルタリングできます。 詳細については、「pull request 内のファイルをファイルの種類でフィルター処理する」を参照してください。

ファイルフィルタのドロップダウンメニュー

diffが表示されない理由

スリードットおよびツードット Git diff での比較

git diff コマンドには、ツードット (git diff A..B) とスリードット (git diff A...B) という 2 つの比較方法があります。 既定では、GitHub に対する pull request ではスリードットの差分が表示されます。

スリードット Git 差分の比較

スリードット比較では、両方のブランチ (マージ ベース) の最新共通コミットとトピック ブランチの最新バージョンの差分が表示されます。

ツードット Git 差分の比較

ツードット比較では、ベース ブランチ (main など) の最新状態とトピック ブランチの最新バージョンの差分が表示されます。

GitHub 上で、ツードット diff を比較する際に 2 つの committish のリファレンスを見たい場合には、リポジトリの [Comparing changes] ページの URL を編集できます。 詳細については、Pro Git ブック サイトで Git 用語集の「committish」を参照してください。

たとえば、この URL では、短縮された 7 文字の SHA コードを使用してコミットと c3a414e faf7c6f を比較します (https://github.com/github/linguist/compare/c3a414e..faf7c6f)。

ツードット diff は SHA あるいは OID (Object ID) など、2 つの Git の committish 参照を直接互いに比較します。 GitHub では、ツードット diff での比較中の Git の committish 参照は、同じリポジトリあるいはそのフォークにプッシュされなければなりません。

プルリクエスト中でツードット diff をシミュレートし、各ブランチの最新バージョン同士の比較を見たい場合には、ベースブランチをトピックブランチにマージできます。そうすれば、ブランチ間の最後の共通の祖先が更新されます。

変更を比較するための Git コマンドの詳細については、Pro Git ブック サイトの「git 差分オプション」を参照してください。

GitHub でのスリードット比較について

スリードット比較はマージ ベースと比較するため、"pull request によって何が導入されるか" に焦点を当てています。

ツードット比較を使用したときは、トピック ブランチに変更を加えていない場合でも、ベース ブランチが更新されると差分が変化します。 また、ツードット比較はベース ブランチに焦点を当てます。 つまり、追加したものは、ベース ブランチに存在しないものとして (削除されたかのように) 表示されます。その逆も同様です。 その結果、トピック ブランチが導入する変更があいまいになります。

対照的に、スリードット比較を使用してブランチを比較すると、ベース ブランチが更新された場合、トピック ブランチの変更は常に差分に含まれます。この差分には、ブランチが分岐してからのすべての変更が表示されるためです。

頻繁なマージ

混乱を避けるためには、ベース ブランチ (たとえば main) をトピック ブランチに頻繁にマージします。 ベース ブランチをマージすることで、ツードット比較とスリードット比較で示される差分が同じになります。 できるだけ早く pull request をマージすることをお勧めします。 このために共同作成者が pull request を小さく作成することが促されます。これは一般的に推奨されます。

参考資料