Guía rápida de Git (Completa y Visual)
¿Qué es Git?
Git es un sistema de control de versiones que te permite:
- Guardar cambios en tu código
- Volver atrás si algo falla
- Trabajar en equipo
- Crear versiones de tu proyecto
Git trabaja con 3 zonas
- Working Directory --> Donde editas archivos
- Staging Area --> Lo que vas a guardar
- Repository --> historial de commits
Flujo básico de Git
1º Modificas archivos
2º Los añades
3º Guardas cambios
4º Los subes
Fichero .gitignore 
Es un archivo que le dice a Git qué cosas NO debe incluir en el repositorio.
Sirve para evitar subir ficheros y cosas no relevantes o cosas sensibles q no deben estar como:
- dependencias instalabres (node_modules, venv)
- archivos temporales o compilados (dist, build, logs)
- configuraciones personales del editor (.vscode, .idea)
- y sobre todo, secretos (.venv, claves API, tokens)
Cuidado
Si ya subiste un archivo antes, añadirlo al .gitignore NO lo elimina automáticamente del repo.
Para dejar de trackearlo:
o para limpiar todo:
COMANDOS 
Configuración Básica Global 
Para empezar a utilizar git debemos hacer una configuración global que mínimo tiene que incluir 2 cosas:
- Nombre de Usuario
1. Configurar Nombre que salen en los commits
Nota: el archivo que modificamos con este comando se encuentra en /home/[usuario]/.gitconfig
2. Configurar el Email
3. Configurar Alias (Opcional)
Ejemplo
git config --global alias.tree "log --graph --decorate --all --oneline"
[GIT INIT] Iniciar nuestro repositorio
Para ello debemos estar en nuestra carpeta del "Proyecto" que vayamos a realizar
Puedes moverte hacia ella con 'cd /ruta/del/proyecto'
Una vez ahí ya puedes lanzar el siguiente comando:
Con esto te aparecerá en la carpeta del Proyecto una carpeta oculta llamada ".git"
Opcional
Podemos cambiarle el nombre a la rama principal que aparece como "master", esto es algo personal porque luego al implementar con git, por defecto, esta rama se llama "main" además que se está estandarizando que se llame así
Podemos ver con el comando 'git status' el nombre que tiene antes de cambiarlo
Para cambiarlo usaremos este comando:
[GIT STATUS] Visualizar el estado (Staging Area)
Este comando te va a servir para cuando realizes cambios, ver en que estado se encuentran esos cambios.
[GIT ADD] Añadir archivos
En tu editor de código favorito, puedes empezar a crear tus archivos de código para tu Proyecto pero hasta que tu no los añadas al staging area, no podrás crear tus commits.
Commit: "foto" o captura instantánea del estado de tu proyecto en un momento específico, actuando como un punto de guardado seguro.
Por eso para añadirlos está el comando:
Pero también puedes utilizar este comando para añadir todos los archivos que estén sin añadir en en 'git status':
[GIT COMMIT] Crear imágenes
Suele utilizarse después del add, no es obligatorio. Sirve para realizar la imagen.
La forma más cómoda de realizarlo es con el atributo -m para escribir directamente el texto que hace referencia al commit sin tener que abrir ningún editor de texto.
| Tipos de commits
Hay distintos tipos de commits que podemos encontrarlos en esta url conventionalcommits.org
Principalmente hay 2:
- fix: para cambios pequeños
- feat: para cambios más grandes
Se suelen asociar a las versiones. Su apariencia es la siguiente:
[GIT LOG] Visor de eventos de Git
Con este comando lo que puedes hacer es ver que cambios se han ido haciendo sobre los commits, es decir, que commits hay, en cual estoy, que hash identificador tienen...
| Atributos importantes del 'git log'
Hay ciertos atributos que se pueden utilizar junto al log para que nos sea más visual dependiendo de que queramos hacer, algunos de los ejemplos son:
1. Para verlo con línea gráfica.
2. Para verlo en una línea sin autor y ni fecha.
[GIT SWITCH] Para cambiar de rama
Simplemente te ayuda a cambiar de rama sin hacer nada más.
[GIT CHECKOUT]
Este comando tiene muchas funciones y hay tener varias cosas en cuenta. Sirve principalmente para moverte dentro del repositorio.
1. Uso principal: Cambiar de rama.
Aquí hay que tener clara una cosa
| Comando | Para qué sirve |
|---|---|
| git checkout | Hace MUCHAS cosas (cambiar rama, restaurar archivos, moverte a commits) |
| git switch | SOLO cambia de rama (más claro y seguro) |
El commando es:
¡OJO!
Si tienes cambios sin guardar, git puede:
- bloquear el cambio
- o moverlos contigo (dependiendo del caso)
2. Crear o cambiar de rama
Esto hace 2 cosas:
- Crea la rama (-b)
- Se mueve a ella
3. Recuperar archivos
Restaura el archivo a su último commit.
4. Ir a un commit concreto
Te mueves a un commit específico
¡OJO!
Pero debes tener en cuenta que esto crea un estado especial Detached HEAD que significa
- No estas en ninguna rama
- Estás "viendo el pasado"
Nota: el hash puede ser completo o la versión simplificada, podemos verlo con 'git log'
Sirve para:
- Probar versiones antiguas
- Revisar código viejo
- Debuggear
Para volver a la normalidad:
[GIT RESET] ¡CUIDADO! "Volver atrás"
Es un comando peligroso porque puede afectar a 3 cosas: 1. Historial (commits) 2. Staging area 3. Archivos (working directory)
Se encarga de mover el puntero HEAD (donde estás en el historial)
Qué hace:- Quita el archivo del 'git add'
- NO bora cambios
GIT RESET --HARD
Este es otro tipo que es el más peligroso
Qué hace:- Elimina el commit
- Elimina cambios en archivos
- Limpia staging
Nota: si la liamos podemos utilizar 'git reflog'
[GIT BRANCH] Ver, Crear y Gestionar Ramas
1. Ver ramas.
2. Crear una rama.
3. Borrar una rama.
[GIT REBASE] Mover el trabajo
Reaplica los commits encima de otra rama, reescribiendo el historial. Es primo hermano de "merge"
Rebase = "mover el trabajo como si hubiera empezado más tarde"
Nota: Rebase NO mueve commits, los recrea. Por eso:
- Cambian los IDs
- Se "reescribe" la historia
Ejemplo visual:
A ---- B ---- C ---- D' ---- E'
[GIT MERGE] Fusionar una rama con otra
Sirve para unir (fusionar) una rama con otra. Es primo hermano de "rebase"
Merge = juntar historiales sin borrar nada
[GIT DIFF] Ver diferencias de versiones
Sirve para ver las diferencias entre versiones de archivos.
1. Cambios sin añadir (Más común).
2. Cambios ya añadidos.
3. Comparar commits.
4. Comparar ramas
5. Ver cambios en un archivo
[GIT FETCH] Descarga cambios SIN aplicarlos
Sirve para descargar cambios del repositorio remoto SIN aplicarlos en nuestro código
[GIT PUSH] SUBIR commits
Sirve para subir commits al respositorio remoto (por ejemplo, GitHub)
¡IMPORTANTE!
Cuando subes por primera vez una rama, debemos hacer este comando:
Esto hace:
- sube la rama
- la conecta con el remoto
Después ya puedes usar solo
[GIT PULL] BAJAR commits
Sirve para traer cambios del repositorio remoto a nuestro ordenador y además mezclarlos automáticamente con nuestra rama actual.
Idea principal:
git pull= git fetch + git merge
Hace 2 cosas: - Descarga cambios (fetch) - Los mezcla con nuestro código (merge)
GIT PULL --REBASE
Hay otra opción muy buena que es la de juntar En lugar de mezclar, reordena los commits encima del remoto
[GIT REMOTE] Conexión con repos externos
Sirve para conectar tu git con repositorios externos como: GitHub, Azure, DevOps, GitLab, etc.
Para subir un git a remoto haremos el siguiente comando
Cuando es la primera vez que subes código a tu repo en remoto debemos hacer este comando
También podemos cambiar la URL del remoto
Para eliminar el remoto
Para ver info detallada
IMPORTANTE
Clonar el repositorio externo ya crea el 'remote'
git clone URL