git diff の使用方法: コミット、ブランチ、ファイル、およびサイドバイサイド
1 つのコマンドで、作業フォルダー、ステージング領域、コミット、ブランチ、タグを比較します。ここでは、それぞれにどの形式を使用するか、2 つのドットと 3 つのドットが異なる理由、および実際の並べての差分を取得する方法を示します。
作者 Kodmora
GitTree の背後にあるソフトウェア ハウス
- コミット履歴
- ブランチ
- コミット
このページでは
`git diff` に引数を指定しないと、ステージングされていない変更が表示されます。 `git diff --staged` は次のコミットに含まれる内容を示し、`git diff main feature` は 2 つのブランチを比較します。 1 つのファイルに制限するには、任意のフォームに -- path/to/file を追加します。 Git 自体には、ターミナルに並べて表示する機能がありません。そのためには、git difftool または Git GUI が必要です。
どの git diff コマンドが必要ですか?
| 見たいです | 指示 |
|---|---|
| 変更はまだステージングされていません | git diff |
| 次のコミットに含まれる内容 | git diff --staged |
| 最後のコミット以降のすべて | git diff HEAD |
| 2 つのコミット | git diff <a> <b> |
| 2本のブランチ、先端から先端まで | git diff main feature |
| 分岐後にブランチが追加したもの | git diff main...feature |
| 2 つのタグ | git diff v1.0 v2.0 |
| 1つのファイル | git diff -- src/search.ts |
git diff 出力を読み取るにはどうすればよいですか?
diff --git a/src/search.ts b/src/search.ts
index 4e1f2a0..9b3c7d1 100644
--- a/src/search.ts
+++ b/src/search.ts
@@ -12,7 +12,7 @@ export function search(query: string) {
const terms = tokenize(query);
- return index.find(terms, { limit: 20 });
+ return index.find(terms, { limit: 50 });
}---と+++は、ファイルの古いバージョンと新しいバージョンの名前です。@@ -12,7 +12,7 @@はハンク ヘッダーです。各バージョンの 12 行目から 7 行目です。-で始まる行は削除され、+を持つ行が追加されました。残りはコンテキストです。
差分の読み取りレッスン では、これを段階的に練習します。
2 つのコミットを比較するにはどうすればよいですか?
# any two commits, older first
git diff 3e52f10 7c1d9ab
# the last commit against the one before it
git diff HEAD~1 HEAD
# one commit against its parent, with the message
git show 7c1d9ab2 つのブランチを比較するにはどうすればよいですか?
# the tips of both branches
git diff main feature
# only what feature added since it left main
git diff main...feature
# a remote branch
git fetch origin
git diff main origin/main1 つのファイルを差分するにはどうすればよいですか?
# working copy against the last commit
git diff HEAD -- src/search.ts
# the same file on two branches
git diff main feature -- src/search.ts
# a file at two commits
git diff HEAD~3 HEAD -- src/search.ts
# two files outside any repository
git diff --no-index old.txt new.txtgit diff で空白を無視するにはどうすればよいですか?
| オプション | 無視するもの |
|---|---|
-w または --ignore-all-space | 再インデントされた行を含むすべての空白 |
-b または --ignore-space-change | 空白の量の変化 |
--ignore-space-at-eol | 行末の空白 |
--ignore-blank-lines | 空白行の追加または削除 |
これらは diff が示す内容にのみ影響します。ステージングまたはコミットされる内容は変更されません。 -w は、再インデントによってファイル全体が変更されたように見える場合に到達するものです。
変更されたファイルのみをリストするにはどうすればよいですか?
# names only
git diff --name-only main...feature
# names with A, M, D or R
git diff --name-status main...feature
# lines added and removed per file
git diff --stat main...featureどの単語が変更されたのかを確認するにはどうすればよいですか?
git diff --word-diff
git diff --color-wordsWord の差分は、Markdown 段落など、1 つの単語が変更されると行全体が変更されたものとしてマークされる長い行の場合に役立ちます。
左右の差分を取得するにはどうすればよいですか?
プレーン git diff は 1 列を印刷し、並べて表示するオプションはありません。 2 つの列を取得するには、diff プログラムで git difftool を指定する方法、delta などの端末ページャーをインストールする方法、または Git GUI を使用する方法の 3 つがあります。
# pick a tool once
git config --global diff.tool vimdiff
# open each changed file in it
git difftool main...feature
# skip the prompt for each file
git difftool -yGitTree で並列差分を読み取る方法
差分を開く
作業中の変更またはコミットで変更されたファイルを選択します。
ビューを選択してください
差分の上の 差分ビュー で、Hunk、Inline、または Split を選択します。 分割は前後を並べて表示します。
調整してください
コマンド パレットから、差分の空白を無視、変更された単語を強調表示、または差分行を折り返すを実行します。
2 つのブランチを比較する
参照の比較… を実行して、任意の 2 つのブランチ、タグ、またはコミットを選択し、マージ ベース以降またはチップツーチップ以降の変更を確認します。

すべてのオプションについては、差分ビューの選択と使用 および 参照の比較 を参照してください。
よくある質問
git diff に何も表示されないのはなぜですか?
おそらく変更は段階的に行われています。 git diff は作業フォルダーとステージング領域を比較するため、git diff --staged または git diff HEAD を実行します。新しい追跡されていないファイルは、追加するまで表示されません。
git diff と git status の違いは何ですか?
git status には、変更されたファイルがリストされます。 git diff 内の変更された行を表示します。
ブランチとメインを比較するにはどうすればよいですか?
ブランチの作業のみを表示するには、git diff main...HEAD を実行します。最初に取得し、origin/main を使用して最新のリモート バージョンと比較します。
git diff --cached は --staged と同じですか?
はい。これらは同じオプションの 2 つの名前です。
差分をファイルに保存するにはどうすればよいですか?
git diff > changes.patchを実行します。 パッチの作成と適用方法 に示すように、ファイルは後で適用できます。
情報源
他の製品に関する申し立ては、2026年11月7日 の公式ページと照合して確認されました。価格と機能は変更されます。ベンダーのページが真実の情報源です。
