私はコミットするためにいくつかの変更を行いました。次のコミットのために準備されているすべてのファイルの差分をどうやって見ることができますか? git status を知っていますが、実際の差分を見たいのですが、ステージングされているファイルの名前だけではありません。
git-diff(1) manページに、
git diff [--options] [ - ] […]
このフォームは、インデックス(次のコミットのためのステージング領域)に対して行った変更を表示するためのものです。言い換えれば、違いは、あなたが 可能性があります さらにインデックスに追加するようにgitに伝えていることですが、あなたはまだしていません。 git-add(1)を使ってこれらの変更を段階的に行うことができます。
残念ながら、私はこれを理解できません。エイリアスを作成できる便利なワンライナーがあるはずです。
それだけでなければなりません:
git diff --cached
--cached
は、現在のHEAD
に対するキャッシュ/インデックスの変更(つまり段階的な変更)を表示することを意味します。 --staged
は--cached
の同義語です。
--staged
と--cached
はHEAD
を指していません。HEAD
との違いだけです。 git add --patch
(またはgit add -p
)を使ってコミットするものを選択した場合、--staged
はステージされたものを返します。
単純なグラフィックはこれをより明確にします:
git diff
作業ディレクトリとインデックス間の変更を表示します。これは何が変更されたかを示していますが、コミットされていません。
git diff --cached
インデックスとHEAD(これはこのブランチの最後のコミット)の間の変更を表示します。これは、インデックスに追加され、コミットのために準備された内容を示しています。
git diff HEAD
作業ディレクトリとHEAD(インデックスの変更も含む)の間のすべての変更を表示します。これは、最後のコミット以降のすべての変更を、それらがコミットのためにステージングされたかどうかにかかわらず表示します。
また :
横に並べて表示することに興味があるなら、 diffuse visual diffツールでそれを行うことができます。すべてではなく一部の変更がステージングされている場合でも、3つのペインが表示されます。衝突が発生した場合は、4つの枠があります。
でそれを呼び出す
diffuse -m
あなたのGit作業コピーに。
あなたが私に尋ねるならば、最高の視覚的な違いは私が10年間見たことがあります。また、Gitに固有のものではありません。SVN、Mercurial、Bazaarなど、他の多数のVCSと相互運用できます。
以下も参照してください。 ステージングされたツリーと作業ツリーの両方をgit diffで表示しますか?
git status -v
also は段階的な変更を示しています。 (ステージングする必要があるという意味 - git add
- いくつかの変更。ステージングされた変更なし、git status -v
との差分なし。
それは Git 1.2.0、2006年2月 )からそうなります
長い形式(デフォルト)では、 git status
には文書化されていない "冗長"オプションがあり、実際にはHEADとindexの間の差分が表示されます。
「 ステージングされたツリーと作業ツリーの両方をgit diffで表示しますか? 」(git 2.3.4以降、2015年第2四半期)を参照してください。
git status -v -v
このコマンドを使うことができます。
git diff --cached --name-only
--cached
のgit diff
オプションはステージングされたファイルを取得することを意味し、--name-only
オプションはファイルの名前のみを取得することを意味します。
バージョン1.7以降からは次のようになります。
git diff --staged
ここでの一番上の答えは、Index
name__内のキャッシュされた/段階的な変更を表示する方法を正しく示しています。
$ git diff --cached
または別名である$ git diff --staged
。
デフォルトの答えはgit bashでの差分の変更を吐き出すでしょう(すなわちコマンドラインやコンソールで)。段階的なファイルの違いを視覚的に表現したい人のために、difftool
name__と呼ばれる、表示される各ファイルに対して視覚的な差分ツールを起動するスクリプトをgit内で利用できます。
$ git difftool --staged
これはgit diff --staged
と同じことをしますが、diffツールが実行されるたびに(つまり、ファイルがdiffによって処理されるたびに)、デフォルトのビジュアルdiffツールを起動します(私の環境では kdiff3 です) 。
ツールが起動すると、git diffスクリプトは視覚的なdiffツールが閉じるまで一時停止します。したがって、次のファイルを見るには各ファイルを閉じる必要があります。
difftool
name__の代わりにdiff
name__を常に使用できますあなたのすべての視覚的なdiffの必要性のために、git difftool
はすべてのオプションを含むあらゆるgit diff
コマンドの代わりに働きます。
例えば、各ファイルに対してそれを実行するかどうかを尋ねることなくビジュアル差分ツールを起動させるには、-y
オプションを追加します(通常はこれが欲しいと思います)。
$ git difftool -y --staged
この場合、ビジュアル差分ツール内の各ファイルを1つずつプルアップし、ツールが閉じられた後に次のファイルを表示します。
Index
name__にステージングされている特定のファイルの差分を調べるには、次のようにします。
$ git difftool -y --staged <<relative path/filename>>
すべてのオプションについては、manページを参照してください。
$ git difftool --help
デフォルト以外のビジュアルgitツールを使用するには、-t <tool>
オプションを使用します。
$ git difftool -t <tool> <<other args>>
あるいは、別のデフォルトのビジュアル差分ツールを使用するようにgitを設定する方法については、difftoolのマニュアルページを参照してください。
あなたの意図がリモートリポジトリブランチをプッシュターゲットにしていて、コミット変更ログでの最初のパスが不完全だった場合は、このようにプッシュする前にコミットステートメントを修正できます。
...いくつか変更を加えます...
git diff # look at unstaged changes
git commit -am"partial description of changes"
...コミットに記載されていないその他の変更を思い出してください...
...段階的コミットステートメントを修正する...
git commit --amend -m"i missed mentioning these changes ...."
git Push
ステージング領域とリポジトリの比較には
$git diff --staged
Working vs Repository比較用
$ git diff
しかし、ファイルが変更されてステージング領域($ git add fileName
)に追加された場合、($ git diff
)との違いを確認しようとします。ファイルはステージング領域にあり、リポジトリと比較されないため、違いはありません。
段階的な変更を含むファイルが複数ある場合は、git add -i
を使用してから6: diff
を選択し、最後に目的のファイルを選択する方が現実的です。
デフォルトでは git diff がgit更新ファイルのリストに追加されていない変更を表示するために使用されます。しかし、追加または段階的な変更を表示したい場合は、段階的または追加されたファイル diff に関心があることをgitに知らせる追加のオプションを提供する必要があります。
$ git diff # Default Use
$ git diff --cached # Can be used to show difference after adding the files
$ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git
例
$ git diff
diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {
- if (a)
+ if (typeof a !== 'undefined')
res = 1;
else
res = 2;
$ git add x/y/z.js
$ git diff
$
ファイルを追加した後は、デフォルトの 'git diff'を使用することはできません。このようにする必要があります -
$ git diff --cached
diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {
- if (a)
+ if (typeof a !== 'undefined')
res = 1;
else
res = 2;
git gui
とgit-cola
は、インデックスの表示と操作を可能にするグラフィカルユーティリティです。どちらもステージファイル用の簡単なビジュアル差分を含み、git-cola
はより洗練された並列ビジュアル差分ツールも起動できます。
gitのインデックスからファイルを削除するにはどうすればいいですか? 、そしてこの公式カタログの Git - GUIクライアント 。
Gitに付属しており、変更を確認するのに非常に便利なgitk
ツールについても考えてください。