Git - Если подготовка помечает файлы только для коммита, как Git запоминает содержимое файла после другого локального изменения? - PullRequest
1 голос
/ 15 ноября 2011

В Pro Git автор говорит, что Git staging - это просто файл, хранящий файлы, которые идут на следующий коммит.Тогда как Git запоминает содержимое файла в промежуточной области, даже после того, как этот файл снова изменен в рабочем каталоге?

Например,

  1. edit myFile
  2. gitadd myFile
  3. edit myFile

Теперь, при коммите, Git проверяет файл как в шаге 2. Как он запоминает содержимое файла при подготовке, если подстановка - это просто файлмаркировка?Хранит ли он также содержимое файла при постановке, а не только маркировку файла?

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Хранит ли он также содержимое файла при постановке, а не только маркировку файла?

Да, он должен обязательно делать это, чтобы позволить вам сравнить файл в рабочем каталоге с файлом в индексе. git add не просто "помечает файлы для коммита", он добавляет контент файла в индекс, поэтому контент файла может быть добавлен к следующему коммиту , Все содержимое Git может отслеживать, вот как это работает: отслеживает содержимое файлов.

2 голосов
/ 15 ноября 2011

Когда вы добавляете файл в индекс git, большой двоичный объект сохраняется как любой другой файл, уже отслеженный git в .git/objects, а состояние дерева записывается в .git/index.

Если вы можете поэкспериментировать,посмотрим, что произойдет, когда вы удалите .git / index.Каждый новый файл, который был добавлен в индекс, становится неотмеченным.Файлы, уже находящиеся в вашем репо, будут считаться удаленными, так как для них нет записи в индексе (так как индекс отсутствует). И если вы сделаете git reset, ваш индекс будет воссоздан, и все детали подготовки для изменений будутпотерял также.Но обратите внимание, что добавленные объекты все еще будут там, а затем очищены, если файл никогда не попадет в репозиторий.

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