42

ローカル リポジトリに既に追加されているファイルがあります。作業ツリーで変更したので、git status変更されたファイルが表示されます。ファイルをステージングする前に、インデックスに保持されているファイルの内容を知りたいです。

私はそれを行う2つの方法を考えることができます:

  1. によって生成されたパッチを元に戻しgit diff、作業ツリーのファイルに適用します
  2. を使用git checkout-indexし、一時ファイルをポイントして、そこからコンテンツを読み取ります

もっと簡単な方法はありますか?

4

3 に答える 3

70

プレフィックスを使用:して、現在のインデックス (ステージングされているがまだコミットされていない) 内のオブジェクトにアクセスします。

git show :file

詳細については、gitrevisions のマニュアルを参照してください。

于 2011-03-01T10:45:44.553 に答える
9

インデックスからファイルを除外するには、既存のスクリプト可能な方法はわかりませんがls-files、インデックスを照会するために使用できます。

$ git ls-files -s README
100644 67cfeb2016b24df1cb406c18145efd399f6a1792 0   README
$ git cat-file blob 67cfeb2016b24df1cb406c18145efd399f6a1792
# etc.

次のようにコマンドをまとめることができます。

git cat-file blob $(git ls-files -s README | awk '{print $2}')

(確かに私はここで車輪を再発明しています。)

ただし、元のファイルと変更内容をエディターで開きたいだけの場合は、difftoolコマンドを使用してください。インデックス化されたバージョンを一時ファイルにコピーして開きますvimdiff(または任意のものを開きます)。非常に柔軟です。

于 2011-02-17T17:34:55.393 に答える
5

git で差分を取得する方法は 3 つあります

git差分グラフ

したがって、作業ディレクトリ内のファイルとインデックスの違いを確認するには、次のようにする必要があります。

git diff name_of_file

これについては別の場所で詳しく書いています

于 2011-02-17T18:12:58.083 に答える