Artículos

Fundamentos de Git

Git es un sistema de control de versiones distribuido (DVCS), una herramienta para desarrollar y mantener software. Permite desarrollar en pasos incrementales y ofrece una vista del historial del proyecto. Como desarrollador, esto es útil porque, una vez que aprendes sus fundamentos, te resultará más fácil seguir tu trabajo.

Requisitos previos

  • Git instalado localmente
  • Cuenta de Github / Gitlab

Sin entrar en muchos detalles, el modelo de Git tiene dos niveles: área de preparación (Staging) e historial (History). El área de preparación contiene el trabajo actual. El historial registra todos los cambios realizados en el proyecto. Git funciona de manera que, en cualquier momento, existe una copia remota del proyecto, alojada en Github / Gitlab, y varias copias, generalmente en las computadoras de los desarrolladores. Mientras estos trabajan en funciones, los cambios primero se hacen localmente y luego se sincronizan con el repositorio remoto. Esto permite una colaboración eficaz y ofrece protección si algo le ocurre a una computadora que contenía trabajo.

Fundamentos y ejemplo

  • Para empezar, crea un repositorio en Gitlab y clónalo en tu computadora.
  • Estos son los comandos que revisaremos para el flujo básico:
    • git status
    • git add
    • git commit
    • git push

Usemos una función simple de Python como ejemplo. Crea un archivo calculator.py y agrega:

def add(x, y):
    return x + y

print add(5, 3)

Ejecuta git status y verás lo siguiente:

git status
git status

Indica que el archivo no está bajo seguimiento. Agreguémoslo al área de preparación con git add calculator.py

Ejecuta git status nuevamente y ahora el archivo estará bajo seguimiento:

git status (archivo nuevo)
git status (archivo nuevo)

Una vez que el archivo está en el área de preparación, podemos registrar el cambio en el historial con git commit -m “Adding addition function to script”

Ejecutar git status nuevamente muestra que el repositorio no tiene nada en el área de preparación, pero difiere del remoto porque está un commit por delante:

git status
git status

Podemos ver el cambio en el historial ejecutando git log y observando la lista de commits realizados. Para sincronizar nuestros cambios con el repositorio remoto, debemos enviarlos con git push. Ve a la página del repositorio en Gitlab y comprueba que el commit esté presente.

Lista de commits
Lista de commits

Ramas

Una nota sobre las ramas de Git: son referencias al hash de un commit. Esto permite recorrer el proyecto y ver los cambios en ese punto específico del tiempo. Para cambiar de rama, ejecuta git checkout <branch_name>.

Flujo de desarrollo con ramas

En esta sección veremos cómo un equipo registra cambios en un proyecto mediante un flujo de desarrollo con ramas. Cuando un desarrollador comienza a trabajar en una función, el procedimiento es: * Obtener localmente el trabajo más reciente de la rama master * Crear una rama, trabajar en la función y registrar los cambios * Enviar los cambios al repositorio remoto para que otro desarrollador los revise * Después de revisar y probar el código, integrarlo en la rama master

Otros consejos

Alias

Los alias son atajos de palabras que puedes definir. Escribir comandos git puede ser repetitivo, y usar alias te ahorra tiempo. Estos son algunos ejemplos:

# in your .bash_aliases
alias g="git status"
alias gd="git diff"
alias gaa="git add -A"
alias gcm="git commit -m"
alias gco="git checkout"
alias gpoh="git push origin HEAD"

Vista del árbol de Git

Ver el árbol actual de Git ayuda a visualizar el desarrollo del proyecto. Para hacerlo, ejecuta:

"git log --graph --oneline --decorate --all", y agrégalo a un alias, por ejemplo gg (git graph)

Restablecer cambios

A veces querremos revertir cambios. Dos comandos útiles son: * git reset, para quitar cambios del área de preparación * git reset --hard, para eliminar todos tus cambios

Guardar cambios temporalmente

Guardar cambios temporalmente es útil cuando necesitas ir a otra parte del proyecto y tienes modificaciones que todavía no registraste. Por ejemplo, estás desarrollando una función en la rama feature_x y, de repente, aparece un error crítico que debes corregir. Necesitas pasar a la rama master para solucionarlo. Antes de cambiar a master, debes guardar tus cambios; ahí entra el comando stash.

  • git stash, guarda los cambios temporalmente
  • git stash pop, restaura los cambios
  • git stash list, muestra todos los cambios guardados temporalmente

Git Blame

Otra función útil de git es blame. git blame permite ver el último commit que modificó cada línea de un archivo. Esto ayuda a comprender mejor por qué el desarrollador escribió esa línea de código.

git blame <file_name>

Reflexiones finales

Repasamos los fundamentos de git, suficientes para que un principiante empiece y lo use en próximos proyectos. Aprender Git llevará tiempo, pero, cuando sepas lo suficiente, será una herramienta siempre a tu disposición que te ayudará a escribir software con confianza.

Lecturas adicionales

Lecturas relacionadas