2

同じファイルを 2 回ステージングして、ステージングされた 2 つのバージョンを比較 (差分) することはできますか? ファイル myclass.java の例:

  • ファイルをステージングします ==> git add myclass.java (ステージングされたファイル バージョン 1)
  • このファイルにいくつかの変更を加えます
  • ファイルを再度ステージングします (ステージングされたファイル バージョン 2)

ステージングされたファイル バージョン 1 とステージングされたファイル バージョン 2 を比較できますか?

どうも!

4

2 に答える 2

4

2 番目git addは最初のものを上書きしますが、まだ差分を取得できます。

# edit edit edit
$ git add myclass.java
# edit some more

git diffステージングされたファイルと最後の編集の差分が表示されます。ステージングされたファイルと最後のコミットの間の差分が必要な場合は、git diff --staged.

于 2011-10-06T10:33:29.213 に答える
3

Git インデックスは、コミットのためにファイルがステージングされる場所です。詳細については、このStackOverflow の回答をご覧ください。コミットのためにファイルをステージングすると、インデックスには最新のステージング情報が反映されます。ファイルを 2 回ステージングすると、Git インデックスが変更され、作業ディレクトリ内のファイルの内容が反映されます。

ただし、いくつかの追加作業を行うと、各ステージのファイルの内容をそのまま表示できます。git ls-files各ステージの後にを使用してファイルBLOBdiffのリストを取得し、後でまたは他の差分ツールを使用して比較するために使用できます。

例として、小さなサンプル セッションを次に示します。

$ git init
Initialized empty Git repository in /home/user/tmp/.git/
$ echo "foo" > foo
$ git add foo
$ git ls-files --stage
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0   foo
$ echo "bar" > foo
$ git add foo
$ git ls-files --stage
100644 5716ca5987cbf97d6bb54920bea6adde242d87e6 0   foo
$ git cat-file blob 257cc56 > foo.257cc56
$ git cat-file blob 5716ca5 > foo.5716ca5
$ diff foo.257cc56 foo.5716ca5 
1c1
< foo
---
> bar

しかし、これは大変な作業であり、BLOB ハッシュ値を慎重に計画して保存する必要があります。

于 2011-10-06T11:12:27.747 に答える