Когда Линус начал писать git, его целью было дать ему возможность воспроизвести каждое промежуточное состояние, созданное его оригинальным рабочим процессом "tarball and patches", который он использовал до дней BitKeeper.
Начиная с архива 2.6.12, он ставит в очередь patch-1, patch-2, ... так что сам 2.6.12, 2.6.12 с примененным patch-1, 2.6.12 с примененным patch-1 и patch-2, стать три версии.
Но это, очевидно, не будет масштабироваться, если вам придется перетасовывать сотни патчей в день. Так он изобрел «кеш каталога»; как концепция, это примерно соответствует «древовидным» объектам в сегодняшнем git: коллекции записей, каждая из которых является компактным представлением того, что содержит вся структура каталога.
Чтобы построить его, нужно было «добавить содержимое в кеш или обновить содержимое в кеше».
Управляющий каталог для размещения коллекции таких записей управления версиями был назван ".dircache
" (через некоторое время он был переименован в ".git
").
Был файл с именем ".dircache/index
", и содержимое этого файла читалось и манипулировалось в наборе переменных в C, которые были названы в честь существительного "cache
".
Тогда концепция того, что мы сегодня называем индексом, буферная область для создания коллекции содержимого, которое вы намереваетесь записать как объект дерева, называлась «кеш» .
Все говорили о «кэше» и «индексе» взаимозаменяемо, поскольку файл, в котором записано, что находится в «cache
», был назван «index
». Это был (и остается) индекс , который позволял вам находить содержимое в кэше, задавая ему путь .
Поскольку все больше и больше людей начинают использовать git без необходимости вообще читать его код, использование слова "index" стало более распространенным по очевидным причинам.
Как то, что находится в файловой системе, оно гораздо более заметно, чем имя переменной в исходном коде C.
В конце концов, мы перестали использовать «кеш» в качестве существительного, чтобы назвать то, что мы сегодня называем «индексом», когда объясняли использование git в качестве конечного пользователя.
Однако слово «кеш» все еще используется как существительное, когда мы хотим поговорить о внутренней структуре данных в контексте обсуждения реализации git (например, «Давайте сделаем так, чтобы программы могли работать с более чем одним кеш одновременно ").
На уровне конечного пользователя «кеш» в наши дни используется только как прилагательное ; «кэшировано», что означает «содержимое, кэшированное в индексе, а не содержимое в рабочем дереве».
Мы могли бы назвать его «проиндексированным», но «кэшированное содержимое» было уже устоявшейся фразой, означающей именно это понятие, и нам не требовалось другое слово, означающее то же самое.
[...] В прежние времена существовало различие между «добавлением нового файла в индекс» и «обновлением файла, который уже находится в индексе, новым содержимым».
[...] Современные (и средневековые) версии git используют «git add
» для обоих. Мы могли бы быть просто честными и называть акт обновления или добавления в индекс «add
», но некоторые люди в индустрии «git training» начали преподавать индекс как «область подготовки для следующего коммита». "и, как неизбежное следствие, во многих документах начал появляться глагол" этап ", означающий" добавление содержимого в указатель ".
Я иногда использую этот глагол сам, но это только тогда, когда я подозреваю, что аудитория, возможно, сначала узнала git от этих новых людей. Строго говоря, это избыточное и довольно недавнее слово в словаре git.