tag remove practices crear commits commands best git data-structures

remove - DAG vs. árbol usando Git?



git tag commits (1)

Pero cuando trato de visualizar mi historial de confirmaciones usando herramientas como gitk, se parece más a un árbol que a un gráfico, ya que cada relación padre-hijo se dirige de una manera.

Un DAG, como un árbol, se puede diseñar de modo que todas las relaciones padre-hijo sean unidireccionales. La diferencia entre ellos es que los nodos en un DAG pueden tener múltiples padres. El caso más común de esto en Git es cuando haces una fusión. Una confirmación de fusión tendrá todas las confirmaciones que se fusionaron como padres. Un árbol no permite que los nodos tengan múltiples padres.

( Fuente de la imagen )

Observe cómo la combinación de confirmación C6 tiene dos padres, C4 y C5.

A menudo he leído que Git usa la estructura de datos del gráfico acíclico dirigido (DAG), con cada confirmación como un nodo, y cosas como ramas y etiquetas como punteros a los nodos.

Pero cuando trato de visualizar mi historial de confirmaciones usando herramientas como gitk, se parece más a un árbol que a un gráfico, ya que cada relación padre-hijo se dirige de una manera.

Entonces, ¿cuál es la diferencia entre un DAG y un árbol, específicamente con respecto a Git?