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?
Respuesta
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!
Sí, entender que el árbol hace referencia a los blobs fue la clave. – user7797
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.
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.
Me asusto a veces con mis capas de paréntesis. – damianb
No es estrictamente cierto, ya que un árbol contiene otros árboles, que también pueden pertenecer a árboles de confirmaciones anteriores (y futuras). – siride
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
Los diagramas en el segundo enlace fueron muy útiles. – user7797
Gracias. Personalmente, pude entender el modelo de objetos de git a través del diagrama ilustrado. – OnesimusUnbound
- 1. ¿Cuál es la diferencia entre un árbol de sintaxis abstracta y un árbol de sintaxis concreta?
- 2. ¿Cuál es la diferencia entre un predicado y un funcionador?
- 3. ¿Cuál es la diferencia entre un método y un selector?
- 4. Cuál es la diferencia entre un subproceso y un controlador
- 5. ¿Cuál es la diferencia entre un controlador y un servicio?
- 6. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 7. ¿Cuál es la diferencia entre un ayudante y un parcial?
- 8. ¿Cuál es la diferencia entre un nanokernel y un exokernel?
- 9. ¿Cuál es la diferencia entre un algoritmo y un método
- 10. ¿Cuál es la diferencia entre un HashMap y un TreeMap?
- 11. ¿Cuál es la diferencia entre un vector y un vértice?
- 12. ¿Cuál es la diferencia entre un REPL y un intérprete?
- 13. ¿Cuál es la diferencia entre un IORef y un MVar?
- 14. ¿Cuál es la diferencia entre un JavaBean y un POJO?
- 15. ¿Cuál es la diferencia entre un "nonce" y un "GUID"?
- 16. ¿Cuál es la diferencia entre un sitio web y un directorio virtual
- 17. ¿Cuál es la diferencia entre @ y @@ en un módulo?
- 18. ¿Cuál es la diferencia entre un hilo y una fibra?
- 19. ¿Cuál es la diferencia entre un algoritmo y una función?
- 20. ¿Cuál es la diferencia entre una matriz y un objeto?
- 21. ¿Cuál es la diferencia entre una mónada y un cierre?
- 22. ¿Cuál es la diferencia entre nohup y un daemon?
- 23. ¿Cuál es la diferencia entre una instancia y un objeto?
- 24. ¿Cuál es la diferencia entre un tema y una plantilla?
- 25. ¿Cuál es la diferencia entre un RoutedCommand y una RoutedUICommand?
- 26. ¿Cuál es la diferencia entre GenericServlet, HttpServlet y un Servlet?
- 27. ¿cuál es la diferencia entre -C y gzipping un mysqldump?
- 28. ¿Cuál es la diferencia entre un método y una función?
- 29. ¿Cuál es la diferencia entre. y # en un archivo css?
- 30. ¿Cuál es la diferencia entre separar un Fragmento y eliminarlo?
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. –