В git, в чем разница между фиксацией (ов) и ревизией (версиями)

Существует несколько команд git, например git clone --depth 10 <repo>, для которых требуется количество ревизий [git help revisions].

В чем разница между фиксацией и ревизией (в git, а не svn)?

Или он отображается только во множественном числе при попытке подсчета изменений/коммитов, например. что ревизии следует учитывать, прогуливая DAG (направленный ациклический график) коммитов и их родителей или какое-то другое тщательное различие?

Ответ 1

См. " УКАЗАНИЕ ПЕРЕСМОТРЕТЬ " git rev- синтаксический анализ:

Параметр ревизии <rev> обычно, но необязательно, называет объект commit.
Он использует то, что называется расширенным синтаксисом SHA1, [и включает в себя] различные способы для обозначения имен объектов.

Итак, "ревизия" относится к идентификатору, который вы можете использовать в качестве параметра для ссылки на объект в git (обычно на фиксацию).

[email protected]{5 minutes ago} - это ревизия, которая ссылается на фиксацию, присутствующую 5 минут назад.

gitrevision упоминает:

[...] некоторые команды git (такие как git show) также принимают параметры ревизии, которые обозначают другие объектов, чем совершает, например blobs ( "файлы" ) или деревья ( "каталоги файлов" ).

Например, следующий параметр rev не ссылается на фиксацию:

<rev>:<path>, e.g. HEAD:README, :README, master:./README

Суффикс :, за которым следует путь, называет пучок или дерево по заданному пути в древовидном объекте, названном частью до двоеточия.


"commit" в git обычно обозначает "объект фиксации" (как описано в git commit-tree):

A совершает инкапсуляцию:

  • все идентификаторы родительских объектов
  • имя автора, адрес электронной почты и дата
  • имя коммиттера и адрес электронной почты и время фиксации.

Итак:

  • фиксация обозначает один из объектов git (другие - это капли, дерево, теги, заметки),
  • ревизия является способом ссылки на объект git.

В вашем случае (git clone) --depth <n> делает:

Создайте мелкий клон с историей, усеченной до указанного количества ревизий.

Это для всех коммитов, доступных на этой глубине, до n изменений для каждого пути в DAG.
Поскольку результат может быть больше, чем n совершает, термин пересмотр более адаптирован здесь, чтобы подчеркнуть, что вы не хотите, чтобы только n совершал коммит, но любые коммиты, на которые ссылается max n доступных ревизий.

Однако в этом контексте изменения явно ссылаются только на фиксации (как показано ниже) достижимых (как вы упомянули в Является git clone --depth 1 (мелкий клон) более полезным, чем это делает? ").

Вопрос "достижимый от чего"?

Вы ссылаетесь на этот поток, который включал:

IIRC, --depth=<n> не "углубляется на <n>", но " убедитесь, что у меня есть как минимум <n> из обновленного совета (ов)".
Маломощный хак дает вам совершенно бесполезную (пусть и внутренне непротиворечивую) семантику, если раньше вы клонировали клонированный путь и получали --depth после того, как другая сторона добавила еще много коммитов, чем <n>, поскольку вы не можете угадайте, что правильно  значение <n> должно быть без фактической выборки без --depth.

Ответ 2

Интересно. Я не сталкивался с этим различием раньше, но, не просматривая документацию и собственный опыт, фиксация в git - это объект, который указывает на конкретный момент времени в истории проекта (вместе с информацией о том, как он достигнут там). Пересмотр является дополнением к этому, которое говорит о разных способах ссылки на фиксацию или целый ряд коммитов.