Что означает достижимое/недостижимое значение в git?

Немного путайте..

В git руководстве сообщества говорится:

Команда журнала git может отображать списки совершает. Сам по себе он показывает все совершает достижение от родителя совершить; но вы также можете сделать больше конкретные запросы

$ git log v2.5.. # commits since (not reachable from) v2.5

Я думал, что git log сам по себе показывает только ваши коммиты, сделанные в текущую ветку, и коммиты являются последовательными - так как вы можете сделать один фиксат с другого, но недоступный из него?

Я думаю, что я либо неправильно понимаю, что делает журнал git, либо то, что недоступно, или то, и другое.. благодарны за любую помощь!

Ответы

Ответ 1

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

Например, предположим, что я разрабатываю свое приложение и совершаю фиксации в алфавитном порядке:

---A---B---E---G
    \       \
     C---D   F

В этом примере я должен был создать новую ветку для фиксации A и E.

Если бы я запускал git log <D> (где <D> - SHA фиксации), тогда история журнала будет выглядеть так:

D---C---A---

Из этого обязательства могут быть "видны" только родители и их предки. Commits B, E, F и G технически "недоступны" из commit D, так как они не имеют общего подключенного родительского коммита.

Ответ 2

"Y доступен из X" означает, что объект Y доступен из DAG. В зависимости от того, что Y, это может означать:

  • Y является фиксацией: Y является родителем/предком X.
  • Y - это каталог/папка/blob: Y является частью (чтобы сказать) фиксации в родительском/предковном дереве X.

Для некоторого документа (например, git -fsck) он просто говорит: "Y доступен". Это означает, что Y доступен из некоторого тега/ветки (т.е. Y не может быть собрано мусором)