
¿Qué es Git y por qué deberías importarte?
Imagina que estás escribiendo un documento importante. Haces cambios, guardas, al día siguiente te arrepientes de algo y quieres volver a como estaba ayer. O estás trabajando con alguien más y los dos editáis el mismo archivo a la vez.
Git es una máquina del tiempo para tu código. Guarda el historial de cada cambio, te deja volver atrás, trabajar en paralelo sin liarla y sincronizar tu trabajo con otros. No es solo para equipos: aunque trabajes solo, Git te da red de seguridad y orden.
Y sí, Git ≠ GitHub. Git es la herramienta que corre en tu máquina. GitHub (o GitLab, Bitbucket) es donde subes tu código a la nube para hacer backup, compartirlo o colaborar. Primero aprendes Git local, luego lo remoto. Vamos por partes.
Paso 1: Instalar Git (Windows, Mac, Linux)
Windows
- Ve a git-scm.com/download/win
- Descarga el instalador (64-bit para casi todos hoy día)
- Ejecútalo y dale a "Next" en casi todo excepto en estas dos pantallas:
Durante la instalación: elige tu editor (VS Code si lo tienes) y en la pantalla de "Default branch name" selecciona "main".
Resto de opciones: deja los valores por defecto. Termina la instalación.
Mac
Si tienes Homebrew (deberías):
brew install gitO descarga el instalador desde git-scm.com.
Linux (Ubuntu/Debian)
sudo apt update && sudo apt install gitVerifica que funciona
Abre tu terminal (PowerShell, CMD, Terminal, Git Bash...) y escribe:
git --versionDeberías ver algo como git version 2.45.0. Si sale, listo.
Paso 2: Configura tu identidad (solo una vez)
Git necesita saber quién eres para firmar cada commit. Ejecuta:
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.comUsa el mismo email que usarás en GitHub/GitLab luego. Para ver tu config:
git config --listPaso 3: Inicializa tu primer repositorio
Ve a la carpeta de tu proyecto (o crea una de prueba):
cd mis-proyectos
mkdir mi-primer-repo
cd mi-primer-repo
git initVerás: Initialized empty Git repository in .../.git/
Esa carpeta .git (oculta) es donde Git guarda TODO el historial. No la borres. No la toques. Es tu base de datos.
Paso 4: El ciclo básico — add, commit, status, log
Este es el flujo que repetirás mil veces. Crea un archivo de prueba:
echo "# Mi Proyecto" > README.md1. git status — ¿qué pasa?
git statusTe dice: "Hay archivos sin rastrear (untracked)". Git los ve, pero aún no los vigila.
2. git add — prepara los cambios
git add README.mdO para añadir todo de golpe:
git add .Ahora el archivo está en el staging area (zona de preparación). Es como meter cosas en una caja antes de cerrarla y etiquetarla.
3. git commit — guarda la instantánea
git commit -m "Primer commit: añado README"El flag -m es el mensaje. Escribe mensajes claros: qué hiciste y por qué. Tu yo del futuro te lo agradecerá.
4. git log — mira el historial
git log --oneline --graph --decorateVerás tu commit con su hash único, autor, fecha y mensaje. --oneline lo hace legible; --graph dibuja ramas (útil luego).
Paso 5: Haz cambios y repite el ciclo
Modifica el README:
echo "Aprendiendo Git paso a paso" >> README.mdVuelve al ciclo:
git status # verás "modified: README.md"
git add README.md # o git add .
git commit -m "Actualizo README con descripción"
git log --oneline # ahora ves DOS commitsTruco pro: git add -A añade todo (nuevos, modificados, borrados). git commit -am "msg" añade y commitea en uno (solo archivos ya rastreados).
Paso 6: Deshacer cosas (porque pasará)
¿Añadiste algo por error al staging?
git reset HEAD archivo.txt # lo saca del staging, mantiene cambios
git restore --staged archivo.txt # forma moderna (Git 2.23+)¿Quieres tirar los cambios locales de un archivo?
git restore archivo.txt # vuelve al último commit (CUIDADO: pierdes cambios)¿El último commit tenía error en el mensaje?
git commit --amend -m "Mensaje corregido"¿Quieres volver al commit anterior y tirar el último?
git reset --hard HEAD~1 # PELIGROSO: borra historial y cambiosRegla de oro: reset --hard solo en commits tuyos que NO hayas subido a remoto. Si ya hiciste push, usa git revert (crea commit nuevo que deshace el anterior).
Paso 7: Ramas — trabajar en paralelo sin miedo
Por defecto estás en main (antes master). Las ramas te dejan experimentar, arreglar bugs o hacer features sin tocar lo que funciona.
Crear y cambiar de rama
git branch nueva-funcionalidad # crea rama
git switch nueva-funcionalidad # cambia a ella (Git 2.23+)
# o el clásico: git checkout nueva-funcionalidadCorto: git switch -c nueva-funcionalidad crea y cambia en uno.
Ver tus ramas
git branch # locales
git branch -a # todas (incluye remotas)Trabajas en tu rama, commiteas normal
# haces cambios...
git add .
git commit -m "Añado feature X"Volver a main y traer los cambios (merge)
git switch main
git merge nueva-funcionalidadSi no hay conflictos, Git hace un "fast-forward" y listo. Si hay conflictos (editaste lo mismo en ambas ramas), Git te lo dice y toca resolver a mano en los archivos marcados. Luego git add . y git commit.
Borrar rama ya mergeada
git branch -d nueva-funcionalidadPaso 8: Conectar con GitHub (lo justo para empezar)
GitHub es el "remoto": un servidor donde guardas tu repo para backup, compartir o colaborar. GitLab y Bitbucket funcionan igual.
- Crea cuenta en github.com
- Crea un repo nuevo (botón "New repository"), nómbralo igual que tu carpeta local, NO marques "Add a README" ni ".gitignore" ni licencia (ya los tienes tú)
- GitHub te dará comandos. Conecta tu repo local:
git remote add origin https://github.com/TU_USUARIO/TU_REPO.git
git branch -M main # asegura que tu rama principal se llama main
git push -u origin main # sube por primera vez (-u vincula la rama)Te pedirá usuario/contraseña. Usa un Personal Access Token, no tu password. En GitHub: Settings → Developer settings → Personal access tokens → Generate new token (classic) → scopes: repo, workflow. Guárdalo seguro.
Después del primer push, solo necesitas:
git push # sube commits
git pull # baja cambios de otros (o tuyos desde otra máquina)Resumen: tu chuleta diaria
| Comando | Para qué sirve |
|---|---|
git init | Inicia repo en carpeta actual |
git status | Estado de archivos (modificados, en staging, sin rastrear) |
git add . | Prepara todos los cambios para commit |
git commit -m "msg" | Guarda instantánea con mensaje |
git log --oneline | Historial resumido |
git switch -c rama | Crea y cambia a nueva rama |
git switch main | Vuelve a rama principal |
git merge rama | Trae cambios de otra rama a la actual |
git push | Sube commits al remoto |
git pull | Baja commits del remoto |
git restore archivo | Descarta cambios locales en archivo |
git commit --amend | Corrige último commit (mensaje o añade archivos) |
Consejos que me habría gustado saber al principio
- Commit temprano, commit a menudo. Commits pequeños y atómicos (un cambio lógico = un commit) son más fáciles de revisar, revertir y entender.
- Mensajes en presente imperativo: "Añade botón de login" no "Añadí..." ni "Adding...". Estándar de la industria.
- No subas basura. Crea
.gitignoredesde el día 1:node_modules,.env,dist,.DS_Store,*.log. - Aprende
git diff. Antes de commitear,git diffte muestra qué vas a guardar.git diff --stagedlo que ya está en staging. - Aliases = velocidad. En tu
~/.gitconfig:
Luego solo escribes[alias] st = status co = checkout br = branch lg = log --oneline --graph --decorate --all cm = commit -m aa = add -Agit st,git lg,git cm "msg".
¿Y ahora qué?
Ya tienes lo básico para sobrevivir. Lo siguiente (en próximos posts): GitHub/GitLab de verdad (Pull Requests, Issues, code review, CI/CD), flujos de ramas reales (Git Flow, GitHub Flow, trunk-based), y trucos avanzados (rebase interactivo, cherry-pick, bisect, hooks).
Mientras tanto: usa Git en cada proyecto. Aunque sea solo tú. Aunque sea un "hola mundo". El músculo se hace repitiendo.
¿Listo para subir de nivel tu código?
Mantente al día con las últimas tendencias, trucos de optimización y guías prácticas que publicamos cada semana.
¡Explorar más artículos!