Ответ 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, так как они не имеют общего подключенного родительского коммита.