Git индексный файл после сброса не идентичен - почему? - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь понять, как работает индексный файл git.

У меня есть локальный репозиторий с некоторыми файлами, один из них test.txt. Я был на коммите X и сохранил индексный файл этого коммита во временный каталог.

Затем я отредактировал test.txt, добавил и зафиксировал его, который создал коммит Y. После этого я запустил git reset --hard X и сохранил индексный файл commit X после сброса на него из commit Y.

Затем я сравнил оба индексных файла (из commit X и commit X после сброса к нему из commit Y) и они не были идентичны. Как это может быть ? Есть ли метка времени в файле? насколько я знаю, индекс должен был быть сброшен к своему предыдущему содержанию (?)

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

После этого я запустил git reset --hard X

Вот что он сделал: в индексных записях есть коды ha sh для извлеченного содержимого, а также полученные временные метки файловой системы в работе. дерево. Когда вы сделали git reset --hard, оно обновило рабочее дерево, поэтому эти файлы имеют идентичный контент, но более поздние временные метки, чем предыдущая проверка того же контента.

1 голос
/ 09 апреля 2020

Какое значение имеет индекс файл ? Все, что важно, это то, какая версия каких файлов она перечисляет . Вы можете узнать это с помощью ls-files.

Пример:

$ git init
$ echo "howdy" > howdy.txt
$ git add .
$ git commit -m "root"
$ echo "bonjour" >> howdy.txt
$ echo "byebye" > byebye.txt
$ git add .
$ git commit -m "first"
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0   byebye.txt
100644 e1f6537eb149ccead2e53cbf2da40291c07d904a 0   howdy.txt

ОК, так что это «содержимое» индекса. Теперь давайте внесем изменения и новый коммит:

$ echo "extra line" >> howdy.txt
$ git add .
$ git commit -m "second"
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0   byebye.txt
100644 1ad49f2d780a4b46f68dd9bb1571c65ffc1dc660 0   howdy.txt

А теперь давайте сбросим:

$ git reset --hard HEAD^
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0   byebye.txt
100644 e1f6537eb149ccead2e53cbf2da40291c07d904a 0   howdy.txt

Как видите, индекс «идентичен» тому, что был в единственный смысл, который имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...