DAG против дерева с помощью Git?
Я часто читал, что Git использует структуру данных ориентированного ациклического графа (DAG) с каждым коммитом в качестве узла, а такие вещи, как ветви и теги, как указатели на узлы.
Но когда я пытаюсь визуализировать свою историю коммитов, используя такие инструменты, как gitk, она больше похожа на дерево, чем на график, так как каждое родительско-дочернее отношение направлено в одну сторону.
Итак, в чем разница между DAG и деревом, особенно в отношении Git?
1 ответ
Но когда я пытаюсь визуализировать свою историю коммитов, используя такие инструменты, как gitk, она больше похожа на дерево, чем на график, так как каждое родительско-дочернее отношение направлено в одну сторону.
DAG, как дерево, может быть размещен так, что все родительско-дочерние отношения являются односторонними. Разница между ними заключается в том, что узлы в группе обеспечения доступности баз данных могут иметь несколько родителей. Наиболее распространенный случай этого в Git - это когда вы делаете слияние. Коммит слияния будет иметь все коммиты, которые были слиты как родители. Дерево не позволяет узлам иметь нескольких родителей.
Обратите внимание, что коммит слияния C6 имеет двух родителей, C4 и C5.