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 statusgit addgit commitgit 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:

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:

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:

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.

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 temporalmentegit stash pop, restaura los cambiosgit 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.