サーチ…
構文
-
git diff [options] [<commit>] [--] [<path>…]
-
git diff [options] --cached [<commit>] [--] [<path>…]
-
git diff [options] <commit> <commit> [--] [<path>…]
-
git diff [options] <blob> <blob>
-
git diff [options] [--no-index] [--] <path> <path>
パラメーター
パラメータ | 詳細 |
---|---|
-p、-u、--patch | パッチを生成する |
-s、--no-patch | diff出力を抑制する。デフォルトでパッチを表示するgit show ようなコマンドや、 - patchの効果を取り消すのに--patch |
- 生 | diffを生の形式で生成する |
--diff-algorithm = | 差分アルゴリズムを選択します。変種は次のとおりです: myers 、 minimal 、 patience 、 histogram |
- 概要 | 作成、名前変更、モード変更などの拡張ヘッダー情報の要約を出力する |
--name-only | 変更されたファイルの名前のみを表示する |
--name-status | 変更されたファイルの名前とステータスを表示最も一般的なステータスはM(変更済み)、A(追加済み)、D(削除済み) |
- チェック | 変更によって衝突マーカーまたは空白エラーが発生した場合に警告します。空白エラーとみなされるものは、 core.whitespace 設定によって制御されます。デフォルトでは、末尾の空白(空白だけで構成される行も含む)と行の最初のインデントの直後にタブ文字が続く空白文字は、空白エラーとみなされます。問題が見つかった場合、ゼロ以外の状態で終了します。 --exit-codeと互換性がありません |
--full-index | 最初のいくつかの文字の代わりに、パッチ形式の出力を生成するときに、画像の前後のBLOBオブジェクト名を「インデックス」行に表示します |
- バイナリ | --full-index に加えて、 git apply できるバイナリdiffを出力しgit apply |
-文章 | すべてのファイルをテキストとして扱います。 |
- 色 | カラーモードを設定します。 diffをlessにパイプしたい場合は--color=always 使い、gitの色づけを保つ |
作業ブランチの違いを表示する
git diff
これは、前のコミットからの現在のブランチ上のステージングされていない変更を表示します。インデックスに関連した変更のみが表示されます。つまり、次のコミットに追加できる内容が表示されますが 、変更内容は表示されません。これらの変更を追加(ステージング)するには、 git add
を使用します。
ファイルがステージングされているが、ステージング後に変更された場合、 git diff
は現在のファイルとステージングされたバージョンの違いを表示します。
ステージングされたファイルの相違点を表示する
git diff --staged
これにより、前のコミットと現在ステージングされているファイルの間の変更が表示されます。
注:次のコマンドを使用して同じことを達成することもできます。
git diff --cached
--staged
または--staged
単なる同義語です
git status -v
status
コマンドの冗長な設定がトリガーされます。
ステージングされた変更とステージングされない変更の両方を表示する
すべてのステージングされた変更およびステージングされない変更を表示するには、
git diff HEAD
注:次のコマンドを使用することもできます。
git status -vv
相違点は、後者の出力が実際にどの変更がコミットのためにステージングされているのか、そうではないのかを伝えることです。
2つのコミットの間の変更を表示する
git diff 1234abc..6789def # old new
例:最後の3つのコミットに加えられた変更を表示する:
git diff @~3..@ # HEAD -3 HEAD
注:2つのドット(..)はオプションですが、明快さを追加します。
これは、ツリー内のどこにあるかにかかわらず、コミット間のテキストの違いを表示します。
meldを使用して作業ディレクトリ内のすべての変更を表示する
git difftool -t meld --dir-diff
作業ディレクトリの変更が表示されます。あるいは、
git difftool -t meld --dir-diff [COMMIT_A] [COMMIT_B]
2つの特定のコミットの違いを表示します。
特定のファイルまたはディレクトリの相違点を表示する
git diff myfile.txt
指定したファイル( myfile.txt
)の前回のコミットと、まだステージングされていないローカルで変更されたバージョンとの間の変更を表示します。
これはディレクトリでも機能します:
git diff documentation
上記は、指定されたディレクトリ( documentation/
)内のすべてのファイルの前回のコミットと、まだステージングされていないこれらのファイルのローカルに変更されたバージョンとの間の変化を示しています。
特定のコミット内のファイルのあるバージョンとローカルのHEAD
バージョンとの違いを表示するには、比較したいコミットを指定することができます:
git diff 27fa75e myfile.txt
または、2つの独立したコミットの間のバージョンを確認する場合は、次のようにします。
git diff 27fa75e ada9b57 myfile.txt
ハッシュada9b57
指定されたバージョンと、ブランチmy_branchname
最新のコミットを、 my_branchname
という相対ディレクトリのみとのmy_changed_directory/
を表示するには、次のようにします。
git diff ada9b57 my_branchname my_changed_directory/
長い行のための単語差分の表示
git diff [HEAD|--staged...] --word-diff
変更された行を表示するのではなく、行内の相違点を表示します。たとえば、以下のようになります。
-Hello world
+Hello world!
行全体が変更済みとしてマークされている場合、 word-diff
は出力を次のように変更します。
Hello [-world-]{+world!+}
--word-diff=color
または--color-words
指定すると、マーカー[-
、 -]
、 {+
、 +}
を省略でき--color-words
。これは色分けを使用して差異をマークします:
共通の祖先を含む3方向マージの表示
git config --global merge.conflictstyle diff3
コンフリクトしたセクションの通常のフォーマットではなく、 diff3
スタイルをデフォルトとして設定し、2つのファイルを表示します。
<<<<<<< HEAD
left
=======
right
>>>>>>> master
元のテキスト(共通の祖先から来る)を含む追加セクションが含まれます。
<<<<<<< HEAD
first
second
|||||||
first
=======
last
>>>>>>> master
この形式では、マージ競合の理解を容易にします。この場合、ローカルにsecond
が追加され、リモートはfirst
からlast
に変更され、以下のように解決されます。
last
second
既定値を使用すると、同じ解像度がはるかに難しくなります。
<<<<<<< HEAD
first
second
=======
last
>>>>>>> master
現在のバージョンと前のバージョンの違いを表示する
git diff HEAD^ HEAD
これにより、直前のコミットと現在のコミットの間の変更が表示されます。
Diff UTF-16でエンコードされたテキストおよびバイナリplistファイル
これらのファイルをどのようにdiffするべきかを指定することで、UTF-16でエンコードされたファイル(ローカライゼーション文字列ファイルoos iOSとmacOSは例です)を比較できます。
~/.gitconfig
ファイルに以下を追加してください。
[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"
iconv
は異なるエンコーディングを変換するプログラムです。
次に、使用するリポジトリのルートに.gitattributes
ファイルを編集または作成します。または、 ~/.gitattributes
編集するだけ~/.gitattributes
。
*.strings diff=utf16
git .strings
前に.strings
終わるすべてのファイルを変換します。
テキストに変換できる他のファイルについても同様のことができます。
バイナリplistファイルの場合は.gitconfig
を編集します.gitconfig
[diff "plist"]
textconv = plutil -convert xml1 -o -
と.gitattributes
*.plist diff=plist
ブランチの比較
new
の先端とoriginal
の先端の間の変化を示す:
git diff original new # equivalent to original..new
original
から分岐して以来、すべての変更をnew
表示する:
git diff original...new # equivalent to $(git merge-base original new)..new
1つのパラメータのみを使用する
git diffオリジナル
は
git diff original ..HEAD
2つのブランチ間で変更を表示する
git diff branch1..branch2
パッチ互換のdiffを作成する
場合によっては、patchを使用して適用するdiffが必要な場合もあります。通常のgit --diff
は動作しません。代わりにこれを試してください:
git diff --no-prefix > some_file.patch
次に、あなたはそれを元に戻すことができます:
patch -p0 < some_file.patch
2つのコミットまたは分岐の違い
2つのブランチの違いを表示するには
git diff <branch1>..<branch2>
2つのブランチの違いを表示するには
git diff <commitId1>..<commitId2>
現在のブランチでdiffを表示するには
git diff <branch/commitId>
変更の要約を表示するには
git diff --stat <branch/commitId>
特定のコミット後に変更されたファイルを表示するには
git diff --name-only <commitId>
ブランチとは異なるファイルを表示するには
git diff --name-only <branchName>
特定のコミット後にフォルダ内で変更されたファイルを表示するには
git diff --name-only <commitId> <folder_path>