私のリポジトリで「git status」を実行すると、次のようになります:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: myfile
ただし、「git diff myfile」を実行しても違いはありません。これは、元に戻すために変更を加えて削除したためですか?
「git checkout myfile」を実行して消去する必要がありますか?
ファイルはすでにコミットされるようにステージングされています。 gitの--cached
オプションを使用して、差分であることを示すことができます。
git diff --cached myfile
アンステージするには、出力でgit statusが示唆することを実行するだけです;)
あなたはチェックすることができます The Git Index 詳細については。
--staged
エイリアス。主な理由は--staged
は実際に私がやりたいことを意味します。つまり、段階的な違いを示します。
git diff --staged
受け入れられた答えは正しいです、そして私はそれについての気まぐれがありません。ただ個人的にそれを考える--cached
git diffが回答をキャッシュし、事前に計算された結果などを表示しているように感じます。
私も好き git diff HEAD
より一般的だからです。これは、ほとんどの人が知っている2つの概念をまとめたものです。
git diff <commit>
を使用すると、現在の位置と前回のコミットとの違いを確認できます。
HEAD
(またはhead
シフトを保持するのは煩わしいため)は、ブランチの先端への参照です。 (キーストロークを数えるあなたのために、@
はHEAD
のエイリアスです。)
これら2つの一般的に有用な概念を組み合わせると、次のようになります。
git diff head
git diff @
ステージング領域とリポジトリの比較の使用
$git diff --staged
作業とリポジトリの比較に使用
$ git diff
ただし、ファイルが変更されてステージング領域($ git add fileName
)と($ git diff
)。ファイルはステージング領域にあるため、違いは返されず、リポジトリと比較されません。