0

変更したファイルをステージングし、さらに変更して再ステージングしてからコミットすると、2 つの変更をコミットするのでしょうか、それとも単に変更を加えるだけでしょうか? 答えは 2 だと思いますが、Git の本でこれを見つけることができません。

これは、web.config ファイルで暗号化されていないパスワードをコミットしたくないというコンテキストで発生します。関連するセクションが暗号化されているかどうかを確認し、暗号化されていない場合はコミットを中止する pre-commit フックを作成しています。しかし、ファイルを暗号化してコミットすると (再度ステージングせずに)、暗号化されていないファイルをコミットしていることに気付きました。しかし、再度ステージングしてからコミットするとどうなるでしょうか? 暗号化されていないデータをまだコミットしているでしょうか?

4

4 に答える 4

1

ステージングされた領域バッファーは 1 つだけです。段階的な領域では、変更の階層や時間の概念はありません。

したがって、ファイルを変更した場合は、それをステージングし、以前の変更を上書きして、再ステージングします。前のコミットとの最終差分のみがコミットされます。

つまり、表示されている変更のみgit diffがコミットされます。

于 2013-10-11T19:29:21.823 に答える
1

正味の変化だけです。最初のものは 2 番目のバージョンに置き換えられます。最終的には、不要になったステージング コピーをガベージ コレクションします。

于 2013-10-11T19:29:44.610 に答える
1

再度ステージングする前にファイルを移動したり名前を変更したりしなかったと仮定すると、「最終的な変更」のみをコミットしています。を実行すると、いつでもステージング エリアにあるものを正確に確認できますgit diff --cached

于 2013-10-11T19:30:52.680 に答える