サーチ…


構文

  • 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 = 差分アルゴリズムを選択します。変種は次のとおりです: myersminimalpatiencehistogram
- 概要作成、名前変更、モード変更などの拡張ヘッダー情報の要約を出力する
--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 。これは色分けを使用して差異をマークします:

git diff --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>


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow