55

レポで「git status」を実行すると、次のようになります。

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified: myfile

ただし、「git diff myfile」を実行しても違いはありません。これは、変更を加えて削除したため、元に戻ったためですか?

「git checkout myfile」を実行してクリアする必要がありますか?

4

3 に答える 3

78

あなたのファイルはすでにコミットされるようにステージングされています。--cachedgitのオプションを使用して差分を表示できます。

git diff --cached myfile

ステージングを解除するには、出力で git status が示唆することを実行するだけです;)

詳細については、Git Indexを確認してください。

于 2011-01-19T11:54:21.793 に答える
16

私はエイリアスを好みます。これは--staged主に、エイリアスが--staged実際にやりたいことを意味しているためです。つまり、ステージングされた違いを見せてくれます。

git diff --staged

受け入れられた答えは正しく、私はそれに何の不安もありません。個人的には--cached、 git diff が答えをキャッシュして、事前に計算された結果か何かを表示しているように感じます。

git diff HEADより一般的なので、私も好きです。これは、ほとんどの人が知っている 2 つの概念をまとめたものです。つまり、次のとおりです。

  1. git diff <commit>現在の位置と以前のコミットの違いを確認できます。

  2. HEAD(またはhead、shift キーを押し続けるのが煩わしいため) は、ブランチの先端への参照です。(キーストロークを数えている人のために、@は の別名ですHEAD。)

これら 2 つの一般的に有用な概念を組み合わせると、次のようになります。

git diff head
git diff @
于 2016-10-08T21:08:09.230 に答える