Является ли 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.