En las URL de GitHub: ¿cuál es la diferencia entre un tree y un blob?

Sigo notando esto cada vez que trato de agregar enlaces a files github. Puedes agregar un enlace usando blob :

https://github.com/facebook/pop/blob/master/Podfile

Y el mismo documento aparece si cambias de blob a tree :

https://github.com/facebook/pop/tree/master/Podfile

¿Cuál es la diferencia? Cuando quiera agregar un enlace para la posteridad en un documento, ¿cuál debería preferir?

Un blob es una representación de un file y los files diffs se separan en fragments contiguos modificados llamados hunks . Los trozos son líneas @@ delimitadas en el formatting de salida de git diff .

Un tree es una representación de un directory. Hay diferentes types de treees:

  • tree de trabajo

    El tree de los files reales extraídos. El tree de trabajo normalmente contiene los contenidos del tree de confirmación HEAD, más cualquier cambio local que haya realizado pero que aún no haya cometido.

  • índice

    Una colección de files con información estadística, cuyos contenidos se almacenan como objects. El índice es una versión almacenada de su tree de trabajo. A decir verdad, también puede contener una segunda, e incluso una tercera versión de un tree de trabajo, que se utilizan al fusionarse.

  • tree-ish

    Una reference que apunta a un object de confirmación, un object de tree o un object de label que apunta a una label o un object de confirmación o tree.

Hay cuatro types de objects en el almacenamiento interno de Git. Commitir objects, objects de tags anotados, blobs y objects de tree.

Referencias

  • gitglossary – A Git Glossary en Linux.org

  • Git – Objetos Git

  • La anatomía de un Git commit por thoughtram

  • Funciones internas de Git: ¿cómo guarda Git pequeñas diferencias entre las revisiones?

  • Comparación y fusión de files: Hunks

  • Git y el parche interactivo agregan