Я хотел бы понять, что на самом деле сохраняет Git при перемещении файлов в состояние «staging».
Рассмотрим следующую последовательность:
Новый файл добавляется и фиксируется в локальном репозитории:
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 без каких-либо указаний? Вывод «status» выглядит так, как будто он пытается зафиксировать первую ревизию, но удерживает неустановленные изменения без их регистрации.
Выполняется ли в этом случае неявная стадия?