Compilation: Git best practices, tips & tricks

Updated: Nov 24

Trucos que quizás no conocías de Git (primera parte) 🔝📌


En este talk conocerás cómo funciona Git, y obviando algunos fundamentos básicos, recopilamos para ti un monton de cosas de Git que nos parecen útiles de compartir.


Empecemos con un resumen corto sobre ¿qué es Git? Git es una herramienta Open Source de control de versiones de código, es decir, todos las modificaciones que hagas en archivos o dentro del árbol de carpetas de tu proyecto, van a estar en una especie de registro permanente al cuál podrás acceder, revertir, eliminar y otras funciones que te explicaremos en este post más adelante.


Además, el historial de versiones es completo y fácil de acceder. Podemos movernos rápidamente a través de estos registros como si de una línea de tiempo por medio de un sistema de trabajo con ramas, las cuales pueden ayudarnos a crear proyecto con progresos diferentes a la rama principal donde está el core de nuestro desarrollo.



GIT TRICKS

TALK DE LA SEMANA



Lo indispensable

Recordarte que puedes instalar git en MacOS desde Homebrew:


brew install git

Necesitamos estar en una carpeta para iniciar. Dentro de nuestro editor de código, creamos el directorio git_test, y comenzando desde este directorio vacío, inicializamos git ejecutando:


git init 


Ahora, ¿Qué quiere decir inicializar un repositorio de Git? Git crea una carpeta .git que es el repositorio para nosotros. Contiene una serie de archivos y carpetas dentro donde guarda la configuración y cómo se gestiona nuestro proyecto.

Si existe algún error en el reproductor, puedes ver el video en el siguiente LINK.

​HEAD

Se refiere a la posición del commit en el que está tu repositorio, es decir, HEAD siempre es el último (más actual) commit de la rama actual

objects/

En esta carpeta Git organiza y almacena sus el archivo, el contenido del archivo y su árbol (ya les explicaremos de esto).

refs/

Donde Git almacena todas los remotes, etiquetas, ramas, commits, etc.


Git Config

En Git tenemos un archivo que nos sirve para personalizar el entorno de Git:


cat .git/config   

Y si trabajamos en un varios proyectos, es importante identificarnos donde cada repositorio tenga nuestra autoría o firma: git config, nos permite setear esta información de forma local, remota o global según queramos.


Si existe algún error en el reproductor, puedes ver el video en el siguiente LINK.

  • --system flag: lee y modifica en el archivo /etc/gitconfig, este contiene todos los usuarios del sistema y sus repositorios.

  • --global flag: Lee y modifica ~/.gitconfig o ~/.config/git/config, contiene sólo informació del usuario actual o tu usuario.

  • .git/config: Es el archivo de configuración sólo del repositorio actual


Revisemos la carpeta .git/objects/ con:


tree .git/  

Sin embargo aún está vacío, lo sabemos porque el árbol de objects no muestra nada.


Una vez creemos un archivo dentro de nuestro repositorio, deberemos agregarlo con:


git add <filename>

Y volvemos a ejecutar


tree .git/

Nota: En Mac puedes instalar el comando tree con Homebrew: brew install tree

Y verás algo así:


.git
└── objects
|   └─ 0f
|   |   └─ 0dae56...
|   └─ 9f
|   |   └─ d51eba...
|   └─ info
|   └─ pack
...

Este primer objeto que agregamos haciendo el git add a un archivo, es un "blob" file. Estos blob almacenan solo el contenido, es decir si creamos un archivo README.md el cual contenga el texto “Esto es un readme” nuestro blob nos muestra su contenido “Esto es un readme”.


Vamos a probarlo, escribimos:


git cat-file -p 0f0dae56 
> Esto es un readme

ℹ️ Dato Curioso: En Git, un objeto esta compuesto por un hexadecimal único de 40 caracteres. Se toman los primeros 2 caracteres de este, y se usan como directorio, y el resto como nombre de archivo 📝

También podemos pedir el tipo con el flag -t:


git cat-file -t 0f0dae5
> blob

Si existe algún error en el reproductor, puedes ver el video en el siguiente LINK.

blobs

Sólo guarda el contenido de un archivo

tree

Enumera el contenido de un directorio, conecta "blobs" con nombres y refs

commits

Almacena una referencia a una versión específica del código, al parent y contiene al autor


_________________________________________________________________________________________


¡Gracias por leer!

MeltStudio.co/blog

0 views0 comments