Теперь мы ожидаем, что область размещения будет пустой, когда мы фиксируем файлы.
Это ваша ошибка. Не ожидайте этого!
... если мы проверим статус, то увидим, что в области подготовки ничего нет
git status
не показывает, что находится в индексе / плацдарм. Вместо этого для каждого файла сравнивает то, что находится в области индекса / размещения, с:
- , что находится в коммите
HEAD
: если он отличается, файл "ставится для совершить "; и - что находится в рабочем дереве: если файл отличается, файл «не подготовлен для фиксации»
- поэтому файл может быть оба"подготовлено для фиксации" и"не подготовлено для фиксации". Это означает, что копия index , которую вы видите с git ls-files --stage
, отличается от обеих двух других копий .
Каждый файл имеет три активные копии . 1 Когда все три одинаковы , git status
ничего не говорит. Если некоторые копии файла F отличаются, git status
сообщает вам о файле F . Вот и все, что здесь есть на самом деле.
Индекс / область подготовки всегда содержит 2 того, что вы планируете (или Git планы) поместить в свой следующий коммит. Вот почему вы должны обновить его после изменения копии рабочего дерева: чтобы то, что Git планирует добавить в следующий коммит, соответствовало копии рабочего дерева.
1 Технически, это до трех копий, так как вы можете пропустить одну или две копии. Файл отслеживается тогда и только тогда, когда в индексе есть его копия (даже если он находится в коммите HEAD
, он отслеживается только в том случае, если он также в индексе) , Файл рабочего дерева не отслеживается , если он существует и отсутствует в индексе. (Следовательно, после git rm --cached
файл, который находится в HEAD
и в рабочем дереве, одновременно подлежит удалению и не отслеживается.)
2 См. Сноску 1, а затем посмотрите конфликтующий случай слияния. Во время конфликтующего слияния индекс содержит до трех копий каждого файла: базовая копия слияния, копия --ours
и копия --theirs
. Если вы добавляете копию HEAD
и копию рабочего дерева, это означает, что во время конфликтующих слияний в одном файле может быть до пяти активных копий.