2011-06-04 11 views
6

Soy un principiante git tratando de ordenar los conceptos y términos. El giton git dice que un árbol es equivalente a un directorio y que un directorio es lo que obtienes con ls. ¿Son términos intercambiables? ¿O son "árbol" y "directorio" para usar en diferentes contextos o para referirse a cosas separadas (aunque relacionadas)?¿Cuál es la diferencia entre un árbol y un directorio?

+1

Tuve el mismo problema http://stackoverflow.com/questions/5917738/how-does-git-record-or-more-likely-represent-file-paths-and-names-for-its-blob - La estructura del árbol de commit es/hace coincidir la estructura del directorio de los archivos contenidos en el commit, pero excluye los directorios "vacíos" sin nada para rastrear. Verificando una sucursal creará cualquier directorio necesario, pero no eliminará ninguno. –

Respuesta

3

La respuesta corta: sí, un árbol es un directorio y un directorio es un árbol.

La respuesta larga: Un árbol es un objeto que contiene una lista de blobs, los nombres para adjuntar a los blobs y otros árboles y los nombres para adjuntar a ellos. http://book.git-scm.com/1_the_git_object_model.html tiene una explicación bastante buena de los diferentes tipos de objetos en el modelo de git; ¡Sugeriría leerlo!

+0

Sí, entender que el árbol hace referencia a los blobs fue la clave. – user7797

3

En la terminología de Git, un "árbol" es una estructura jerárquica de archivos y directorios. Esto es (a propósito) muy similar a un directorio en un sistema de archivos.

Un objeto de confirmación de Git contiene una referencia a un objeto de árbol, que es el estado de todos los archivos en el momento de dicha confirmación.

-1

En pocas palabras, el "árbol" se refiere a la instantánea de todo el estado del repositorio en ese momento (como el que tienes para tu código actual [que también se conoce como HEAD], del repositorio cuando se realizó la confirmación actualmente desprotegida, etc.)

El directorio solo hace referencia a un directorio del sistema de archivos.

+0

Me asusto a veces con mis capas de paréntesis. – damianb

+0

No es estrictamente cierto, ya que un árbol contiene otros árboles, que también pueden pertenecer a árboles de confirmaciones anteriores (y futuras). – siride

+0

El árbol para algún directorio y el árbol para el mismo directorio en otro compromiso pueden ser iguales (el mismo SHA1). Entonces, un árbol puede no representar todo el directorio y no tiene nada que ver con el tiempo (commits do). – svick

Cuestiones relacionadas