ファイルを「ステージング」状態に移動するときに、Git が実際に何を保存しているかを理解したいと思います。
次のシーケンスを検討してください。
新しいファイルが追加され、ローカル リポジトリにコミットされます。
touch file.txt
git add file.txt
git commit
ファイルに変更を加えます。
echo text1 > file.txt
git add file.txt
次に、コミットする前に、ファイルを再度編集します。
echo text2 > file.txt
git ステータスは次を示します。
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: file.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file.txt
#
次に、ファイルをコミットします。
git commit file.txt
git は、file.txtへの新しい 2 回目の更新のステージングを、指示されずにどのように処理できますか? 「ステータス」出力は、最初のリビジョンをチェックインしようとしているかのように見えますが、ステージングされていない変更をチェックインせずに差し控えます。
この場合に実行される暗黙の段階はありますか?