Skip to content

Diffビューの切り替え

この章で学べること

コードレビュー時に、以下のことができるようになります:

  • ドロップダウンメニューで5種類のdiffビューを素早く切り替える
  • 各ビューが表示するコード変更の範囲を理解する
  • レビューの目的に応じて適切なdiffタイプを選択する
  • 間違ったビューを選択して重要な変更を見落とすことを防ぐ

現在の課題

レビュー時にワーキングディレクトリだけを見て、ステージ済みファイルを見落とす

/plannotator-reviewコマンドを実行し、いくつかのコード変更を確認してアノテーションを追加しました。しかしコミット後、すでにgit addでステージングエリアに追加されていたファイルがレビューから漏れていたことに気づきました——これらのファイルはdiffに表示されていなかったのです。

現在のブランチとmainブランチの全体的な差分を確認したい

featureブランチで数週間開発を続けてきて、全体でどのような変更があったか確認したいのですが、デフォルトの「未コミット変更」ビューでは最近数日の修正しか表示されません。

特定の2つのコミット間の差分を比較したい

あるバグ修正が正しく行われたか確認するため、修正前後のコードを比較したいのですが、Plannotatorで過去のコミットのdiffを表示する方法がわかりません。

こんなときに使う

  • 包括的なレビュー時:ワーキングディレクトリとステージングエリアの変更を同時に確認
  • ブランチマージ前:現在のブランチのmain/masterに対するすべての変更を確認
  • ロールバック確認時:最後のコミットでどのファイルが変更されたか確認
  • チーム協業時:同僚がステージしたがまだコミットしていないコードを確認

コアコンセプト

Git diffコマンドには多くのバリエーションがあり、それぞれ異なるコード範囲を表示します。Plannotatorはこれらのバリエーションを1つのドロップダウンメニューにまとめ、複雑なgitコマンドを覚える必要をなくしました。

Git Diffタイプ早見表

diffタイプ表示範囲典型的な使用シナリオ
Uncommitted changesワーキングディレクトリ + ステージングエリア今回の開発のすべての修正をレビュー
Staged changesステージングエリアのみコミット前にステージ済み内容を確認
Unstaged changesワーキングディレクトリのみまだgit addしていない修正を確認
Last commit直近のコミットロールバックや直前のコミットの確認
vs main現在のブランチ vs デフォルトブランチブランチマージ前の包括的チェック

ドロップダウンメニューのオプションはGitの状態に応じて動的に変化します:

  • 現在デフォルトブランチにいない場合、「vs main」オプションが表示される
  • ステージ済みファイルがない場合、Stagedビューは「No staged changes」と表示

ステップバイステップ

ステップ1:コードレビューを起動

なぜ

まずPlannotatorのコードレビューインターフェースを開く必要があります。

操作

ターミナルで実行:

bash
/plannotator-review

期待される結果

ブラウザでコードレビューページが開き、左側のファイルツリーの上部に現在のdiffタイプを表示するドロップダウンメニュー(通常は「Uncommitted changes」)があります。

ステップ2:Stagedビューに切り替え

なぜ

すでにgit addしたがまだコミットしていないファイルを確認します。

操作

  1. 左側のファイルツリー上部のドロップダウンメニューをクリック
  2. 「Staged changes」を選択

期待される結果

  • ステージ済みファイルがある場合、ファイルツリーにそれらのファイルが表示される
  • ステージ済みファイルがない場合、メインエリアに「No staged changes. Stage some files with git add.」と表示される

ステップ3:Last Commitビューに切り替え

なぜ

直前にコミットしたコードをレビューし、問題がないか確認します。

操作

  1. 再度ドロップダウンメニューを開く
  2. 「Last commit」を選択

期待される結果

  • 直近のコミットで変更されたすべてのファイルが表示される
  • diff内容はHEAD~1..HEADの差分

ステップ4:vs mainビューに切り替え(利用可能な場合)

なぜ

現在のブランチのデフォルトブランチに対するすべての変更を確認します。

操作

  1. ドロップダウンメニューに「vs main」または「vs master」オプションがあるか確認
  2. ある場合、それを選択

期待される結果

  • ファイルツリーに現在のブランチとデフォルトブランチ間のすべての差分ファイルが表示される
  • diff内容はmain..HEADの完全な変更

現在のブランチを確認

「vs main」オプションが表示されない場合、デフォルトブランチにいることを意味します。以下のコマンドで現在のブランチを確認できます:

bash
git rev-parse --abbrev-ref HEAD

featureブランチに切り替えてから再試行:

bash
git checkout feature-branch

チェックポイント ✅

以下を習得できたか確認してください:

  • [ ] diffタイプのドロップダウンメニューを見つけて開くことができる
  • [ ] 「Uncommitted」「Staged」「Last commit」の違いを理解している
  • [ ] 「vs main」オプションがいつ表示されるか識別できる
  • [ ] どのシナリオでどのdiffタイプを使うべきか理解している

よくあるトラブル

トラブル1:レビュー時にUncommittedだけを見て、Stagedファイルを見落とす

症状

コミット後、レビューでいくつかのステージ済みファイルが漏れていたことに気づく。

原因

Uncommittedビューはワーキングディレクトリとステージングエリアのすべての変更(git diff HEAD)を表示し、ステージ済みファイルも含まれます。

解決方法

レビュー前にまずStagedビューに切り替えて確認するか、Uncommittedビュー(ステージングエリアを含む)を使用します。

トラブル2:ブランチマージ前にmainと比較しない

症状

mainにマージ後、関係のない変更が含まれていたことに気づく。

原因

最近数日のコミットだけを見て、ブランチ全体のmainに対する差分を比較していなかった。

解決方法

マージ前に「vs main」ビューで包括的にチェックします。

トラブル3:ビュー切り替えでアノテーションが消えると思い込む

症状

diffタイプを切り替えることを躊躇し、以前追加したアノテーションが消えることを心配する。

原因

切り替えメカニズムの誤解。

実際の動作

diffタイプを切り替えても、Plannotatorは以前のアノテーションを保持します——それらは引き続き適用される可能性があり、関係のないアノテーションは手動で削除できます。

この章のまとめ

Plannotatorがサポートする5種類のdiffタイプ:

タイプGitコマンドシナリオ
Uncommittedgit diff HEAD今回の開発のすべての修正をレビュー
Stagedgit diff --stagedコミット前にステージングエリアを確認
Unstagedgit diffワーキングディレクトリの修正を確認
Last commitgit diff HEAD~1..HEADロールバックや直近のコミットを確認
vs maingit diff main..HEADブランチマージ前の包括的チェック

ビューを切り替えてもアノテーションは失われません。異なる視点から同じアノテーションや新しいアノテーションを確認できます。

次の章の予告

次の章では**URL共有**を学びます。

学べる内容:

  • レビュー内容をURLに圧縮して同僚と共有する方法
  • 受信者が共有されたレビューリンクを開く方法
  • 共有モードでの制限と注意事項

付録:ソースコード参照

クリックしてソースコードの場所を表示

更新日:2026-01-24

機能ファイルパス行番号
Diffタイプ定義packages/server/git.ts10-15
Gitコンテキスト取得packages/server/git.ts79-96
Git Diff実行packages/server/git.ts101-147
Diff切り替え処理packages/review-editor/App.tsx300-331
ファイルツリーのDiffオプション描画packages/review-editor/components/FileTree.tsx-

主要な型

  • DiffType: 'uncommitted' | 'staged' | 'unstaged' | 'last-commit' | 'branch'

主要な関数

  • getGitContext(): 現在のブランチ、デフォルトブランチ、利用可能なdiffオプションを取得
  • runGitDiff(diffType, defaultBranch): diffタイプに応じて対応するgitコマンドを実行

主要なAPI

  • POST /api/diff/switch: diffタイプを切り替え、新しいdiffデータを返す