Как в рабочей области git хранятся файлы?

Я хотел бы понять, что на самом деле сохраняет 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» выглядит так, как будто он пытается зафиксировать первую ревизию, но удерживает неустановленные изменения без их регистрации.

Выполняется ли в этом случае неявная стадия?

8
задан Nick S. 26 April 2012 в 07:16
поделиться