6 min read

Qué es Git y cómo empezar a usarlo desde cero

Qué es Git y cómo empezar a usarlo desde cero

Si has oído hablar de Git pero nunca has entendido bien para qué sirve o te has perdido con los comandos, esta guía es para ti. Vamos a empezar desde el principio: qué problema resuelve Git, cómo funciona y qué hace cada comando que vas a usar en el día a día.


El problema que resuelve Git

Imagina que estás escribiendo código para un proyecto. Funciona bien, así que decides hacer cambios para añadir una nueva funcionalidad. A mitad del camino algo se rompe y no sabes cómo volver al estado anterior. O peor: trabajas con otra persona en el mismo proyecto y los dos modificáis el mismo fichero a la vez. ¿Cómo juntáis los cambios sin pisaros?

Ese es exactamente el problema que resuelve Git: es un sistema de control de versiones que guarda el historial completo de cambios de tu proyecto. Puedes volver a cualquier punto anterior, ver qué cambió y cuándo, y trabajar en equipo sin que nadie se pise el trabajo de los demás.


Instalación

En Ubuntu:

sudo apt update
sudo apt install -y git

Verifica que está instalado:

git --version

Configuración inicial

Antes de nada, dile a Git quién eres. Usará este nombre y email para identificar tus cambios:

git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"

Esto solo hace falta hacerlo una vez.


Cómo piensa Git

Antes de ver los comandos, hay un concepto que lo cambia todo: Git no guarda "los cambios que hiciste" — guarda fotografías completas de tu proyecto en momentos concretos. Cada vez que haces un commit (ya veremos qué es), Git hace una foto de todos tus ficheros en ese instante y la guarda.

Eso significa que puedes viajar en el tiempo: volver a cualquier foto anterior, comparar dos fotos, o trabajar en varias líneas de tiempo en paralelo (las ramas).

Las tres zonas

Git tiene tres zonas que es importante distinguir:

┌─────────────────┐    git add    ┌─────────────┐   git commit  ┌──────────────┐
│  Tu carpeta     │ ──────────►  │   Staging   │ ────────────► │  Historial   │
│  (tus ficheros) │              │  (zona de   │               │  (commits)   │
│                 │              │  preparación│               │              │
└─────────────────┘              └─────────────┘               └──────────────┘

Tu carpeta es donde trabajas normalmente, editas ficheros, escribes código.

Staging es una zona intermedia donde preparas qué va a incluir la próxima foto. Puedes elegir qué ficheros incluir y cuáles no.

Historial es donde se guardan las fotos (commits) de forma permanente.

El flujo siempre es el mismo: editas ficheros → los preparas con git add → los guardas con git commit.


Crear tu primer repositorio

Un repositorio es simplemente una carpeta que Git controla. Para convertir una carpeta en repositorio:

mkdir mi-proyecto
cd mi-proyecto
git init

Git crea una carpeta oculta .git dentro de tu proyecto. Ahí guarda todo el historial. No la toques.


Los comandos básicos explicados uno a uno

git status — ¿qué está pasando?

Es el comando que más usarás. Te dice en qué estado están tus ficheros:

git status

Te muestra:

  • Ficheros modificados que aún no has preparado para el commit
  • Ficheros preparados en staging listos para el commit
  • Ficheros nuevos que Git no está rastreando todavía

Úsalo constantemente. Antes y después de cada comando, hasta que entiendas bien qué está ocurriendo.


git add — preparar cambios

Mueve los cambios de tu carpeta al staging. No guarda nada todavía — solo prepara qué va a entrar en la próxima foto.

git add fichero.txt          # Preparar un fichero concreto
git add carpeta/             # Preparar toda una carpeta
git add .                    # Preparar todos los cambios

Si ejecutas git status después de git add, verás los ficheros en verde — están en staging, listos para el commit.


git commit — guardar la foto

Guarda permanentemente los cambios que están en staging. Cada commit necesita un mensaje que describa qué cambió:

git commit -m "Añadir página de inicio"

El mensaje es importante: debe explicar qué hace ese cambio, no cómo lo hace. En el futuro te lo agradecerás cuando busques en el historial.

Después de un commit, el staging queda vacío y los cambios están guardados en el historial.


git log — ver el historial

Muestra todos los commits que has hecho:

git log

Cada commit tiene un identificador único (hash), el autor, la fecha y el mensaje. Si el historial es largo, sal con la tecla q.

Para una versión más compacta:

git log --oneline

git diff — ver qué ha cambiado

Muestra exactamente qué líneas han cambiado en tus ficheros:

git diff                     # Cambios en tu carpeta que no están en staging
git diff --staged            # Cambios que están en staging

Las líneas en verde con + son añadidas. Las rojas con - son eliminadas.


Deshacer cosas

Uno de los mayores miedos cuando se empieza con Git es hacer algo mal sin poder deshacerlo. La realidad es que Git está diseñado para que casi todo tenga vuelta atrás.

Descartar cambios en un fichero

Si has modificado un fichero y quieres volver a como estaba en el último commit:

git restore fichero.txt

Cuidado: este comando descarta los cambios sin posibilidad de recuperarlos.

Sacar un fichero del staging

Si has hecho git add por error y quieres sacarlo del staging (sin borrar los cambios):

git restore --staged fichero.txt

Modificar el último commit

Si te has olvidado de añadir algo al último commit o el mensaje tiene una errata:

git add fichero-olvidado.txt
git commit --amend -m "Mensaje corregido"

Solo funciona bien si el commit aún no lo has subido a ningún servidor remoto.


Ramas: trabajar en paralelo

Una rama es una línea de trabajo independiente. Por defecto trabajas en la rama main. Cuando quieres añadir una nueva funcionalidad sin tocar lo que ya funciona, creas una rama nueva:

main:     A ── B ── C
                     \
nueva-rama:           D ── E

Los commits D y E están en la rama nueva y no afectan a main hasta que decidas fusionarlos.

Crear y cambiar de rama

git branch                           # Ver todas las ramas (* indica la actual)
git checkout -b nombre-de-la-rama    # Crear una rama y cambiar a ella
git checkout main                    # Volver a main

Fusionar ramas

Cuando terminas el trabajo en una rama y quieres incorporarlo a main:

git checkout main
git merge nombre-de-la-rama

Git fusiona los cambios automáticamente. Si dos ramas han modificado la misma línea del mismo fichero, aparece un conflicto que tendrás que resolver a mano — Git marca el fichero con indicadores para que veas exactamente dónde está la discrepancia.


Conectar con GitHub

Hasta aquí todo es local — el historial está solo en tu máquina. GitHub es un servidor donde puedes subir tu repositorio para tenerlo en la nube, compartirlo o trabajar en equipo.

Subir tu repositorio a GitHub

  1. Crea un repositorio nuevo en github.com (sin inicializarlo)
  2. Conecta tu repositorio local con el remoto:
git remote add origin https://github.com/tuusuario/tu-repo.git
git push -u origin main

origin es el nombre que le damos al remoto (es el estándar, podrías llamarlo de otra forma). El -u establece la conexión por defecto para futuros pushes.

Los tres comandos del trabajo con remoto

git push    # Subir tus commits locales a GitHub
git pull    # Bajar los cambios de GitHub e incorporarlos a tu rama
git clone https://github.com/usuario/repo.git    # Descargar un repositorio completo

El fichero .gitignore

Hay ficheros que no quieres que Git rastree nunca: contraseñas, claves de API, carpetas de dependencias, ficheros temporales. Para eso existe el .gitignore: un fichero en la raíz de tu proyecto donde listas qué ignorar.

nano .gitignore

Ejemplo básico:

# Variables de entorno con contraseñas o claves (nunca subas esto)
.env

# Dependencias de Node.js
node_modules/

# Ficheros del sistema operativo
.DS_Store
Thumbs.db

# Logs
*.log

Git ignorará completamente cualquier fichero o carpeta que aparezca aquí.

Regla importante: nunca subas un fichero .env con contraseñas o claves de API a GitHub, especialmente en repositorios públicos. Una vez subido, aunque lo borres después, queda en el historial.

El flujo de trabajo del día a día

Resumiendo todo lo anterior, así es como se trabaja con Git en el día a día:

# 1. Ver en qué estado está todo
git status

# 2. Hacer cambios en tus ficheros...

# 3. Preparar los cambios
git add .

# 4. Guardar la foto con un mensaje claro
git commit -m "Descripción de qué has hecho"

# 5. Subir a GitHub
git push

Y cuando trabajas en equipo o desde otra máquina:

# Bajar los últimos cambios antes de empezar a trabajar
git pull

Referencia rápida de comandos

Comando Qué hace
git init Convierte una carpeta en repositorio
git status Muestra el estado actual
git add . Prepara todos los cambios
git commit -m "..." Guarda una foto con mensaje
git log --oneline Muestra el historial compacto
git diff Muestra qué ha cambiado
git restore fichero Descarta cambios en un fichero
git branch Lista las ramas
git checkout -b rama Crea una rama y cambia a ella
git merge rama Fusiona una rama en la actual
git push Sube commits a GitHub
git pull Baja cambios de GitHub
git clone url Descarga un repositorio

Conclusión

Git deja de dar miedo en cuanto entiendes que todo gira alrededor de tres pasos: modificar ficheros, prepararlos con git add y guardarlos con git commit. El resto — ramas, remotos, historial — son herramientas construidas sobre esa base.

La mejor forma de afianzarlo es usarlo en un proyecto real, aunque sea pequeño. Con el tiempo los comandos se vuelven automáticos y empiezas a entender cuándo y por qué usarlos, no solo cómo.

Te dejo el vídeo con un resumen visual: