Является ли Git промежуточной областью только индекс?
В книге Pro Git говорится, что промежуточная область была просто списком или индексом, в котором говорится, какие файлы будут выполняться при выполнении git commit
, и теперь имя index
более широко известно как "промежуточная область".
Но если мы изменим файл foo.txt
, который уже является частью репо, и используйте git add foo.txt
, чтобы сгенерировать его, и снова измените файл, теперь файл "поэтапный" и "измененный" (как видно в git status
), и, если мы зафиксируем, "поэтапная" версия войдет в фиксацию. Второе редактирование не войдет.
Итак, как может "промежуточная область" отслеживать, что такое первое редактирование, если это просто индекс - список файлов?
Ответы
Ответ 1
Указатель - это представление вашего рабочего каталога, готового к фиксации. Это можно рассматривать как состояние предварительной фиксации и не так просто, как "список файлов". Когда вы выполняете git add
, файл (с изменением) добавляется в индекс, а новые изменения не будут отображаться, пока вы их не добавите.
Ответ 2
index
похожа на корзину завершенной работы. В любой момент вы можете add
выполнить (часть) завершенный файл этой корзине, и она заменит предыдущую копию вашей текущей копией, так что, когда вы, наконец, решите commit
, она будет использовать содержимое этой корзины (текущий index
) для создания фиксации.
Кроме того, ваш предыдущий add
будет создавать объект blob в репо, который может быть найден, если требуется, через различные журналы. Через некоторое время (30 дней +) оно исчезнет с gc
.
Ответ 3
Это индекс, но список деревьев изменений, а не файлы напрямую. См. различные типы объектов git handle.