Что такое git "Снимок"?

Официальный Git doc говорит:

$ git diff test

Это покажет вам, что отличает ваш текущий рабочий каталог от моментального снимка на ветке 'test'

Как новичок, это очень запутанно. Я никогда не слышал о терминах моментального снимка. Они имеют в виду "HEAD" ветки "test"?

Ответ 1

Снимок - это состояние чего-то (например, папки) в определенный момент времени. В этом случае моментальный снимок означает текущее содержимое тестовой ветки, это не должно быть главной ревизией.

Ответ 2

Термин "моментальный снимок" используется также на ссылочном сайте git

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

От http://gitref.org/index.html

Вместо того, чтобы писать инструмент, каждый из которых поддерживает каждый файл отдельно, например Subversion, мы, вероятно, напишем файл, который упростит хранение моментальных снимков нашего проекта без необходимости копировать весь каталог каждый раз.

Это по существу то, что git. Вы сообщаете git, что хотите сохранить моментальный снимок вашего проекта с помощью команды git commit, и в основном записывает манифест о том, как выглядят все файлы в вашем проекте в этот момент. Затем большинство команд работают с этими манифестами, чтобы увидеть, как они отличаются или вытаскивают контент из них и т.д.

Если вы думаете о git как инструменте для хранения и сравнения и слияния снимков вашего проекта, может быть проще понять, что происходит и как правильно поступать.

Ответ 3

Во-первых, это не официальная документация git. Это авторская книга. Хотя это, вероятно, довольно авторитетно, это не Евангелие.

AFAIK, "моментальный снимок" не имеет никакого формального значения в git. Конечно, git diff manpage не упоминает об этом. В данном контексте это, вероятно, неофициальная ссылка на то, как ветвь "тест" используется в примерах в книге, то есть в качестве моментальной копии текущей работы для целей тестирования.

Ответ 4

Мое понимание заключается в том, что снимок в целом - это просто "сущность", которую использует git для хранения своих данных. В отличие от хранения своих данных в виде серии "дельта" /наборов изменений, таких как SVN, например, каждая фиксация, которую вы делаете с помощью git, создает "объект фиксации", который ссылается на моментальный снимок того, как выглядел код в этой точке вовремя.

Так как @Femaref говорит, что это состояние кода в определенное время и не обязательно означает, что он является главой тестовой ветки, но может быть в примере, который вы видели.

Ответ 5

Снимок относится к репозиторию, так как скриншот относится к видео.

Репозиторий

Git состоит из серии снимков, которые представляют собой набор файлов и папок, представленных деревом-объектом Git, хранящимся в папке репозитория .git. Когда вы commit, вы сохраняете текущий рабочий каталог как новый снимок (фиксация).

Ответ 6

Ниже приведены некоторые из контекстов, в которых используется термин моментальный снимок:

  • Новая фиксация создается путем создания моментального снимка индекса.
  • Фиксирование - это моментальный снимок репо в данный момент времени.