@darkoment

Как git изменяет содержимое файла?

Для чего конкретно нужен git - это понятно, но вот как git меняет содержимое файла (какого-то исходника), когда, к примеру, происходит переключение между коммитами? Он находит физическую копию или же у него есть инструкция, по которой он возвращает файл в нужное состояние с нужным содержимым при помощи хэша?
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Он находит физическую копию или же у него есть инструкция, по которой он возвращает файл в нужное состояние с нужным содержимым при помощи хэша?

У него есть инструкция (коммит содержит ссылку на дерево, дерево содержит имена и атрибуты файлов и ссылки на их содержимое -- хеши блобов) и он находит физическую копию с помощью хеша, поскольку git -- это простое хранилище ключ-значение. Подробности: раз, два.
Ответ написан
Комментировать
delphinpro
@delphinpro
frontend developer
Что конкретно делает git - это понятно

Видимо, не очень понятно. Гит хранит разницу состояний между коммитами – diff. Yf его основе строит содержимое при переключении. Полные копии всех состояний не хранятся.
Ответ написан
Lynn
@Lynn
nginx, js, css
По большому счёту вам должно быть всё равно как он это делает.

Но если очень приблизительно, то в папке .git лежат (в сжатом виде) копии всех файлов по всей истории и когда вы переключаете коммиты git просто перезаписывает файлы из нужной копии.

Как конкретно хранятся (а иногда и не хранится) файлы это отдельная тема.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы