Skip to content

Latest commit

 

History

History
160 lines (105 loc) · 5.58 KB

File metadata and controls

160 lines (105 loc) · 5.58 KB

Curso: Dominando Git y la Conexión con la Nube

Introducción

Cuando trabajas en un proyecto real, no todo lo que hay en la carpeta merece estar en Git. Hay archivos que Git no debería tocar: contraseñas, configuraciones privadas, carpetas enormes de dependencias que cualquiera puede descargar por su cuenta...

Para eso existe el archivo .gitignore. Es un fichero de texto donde le dices a Git exactamente qué tiene que ignorar.

El problema sin .gitignore

Vamos a verlo con un ejemplo real. Partimos de mi-proyecto e inicializamos un proyecto Node.js:

npm init -y

Esto crea el archivo package.json. Ahora instalamos una dependencia, por ejemplo parcel, un bundler muy usado:

npm install parcel --save-dev

La instalación crea una carpeta node_modules con cientos de archivos y el archivo package-lock.json. Si hacemos git status vemos el desastre:

Si haces git status, vemos el desastre:

On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        node_modules/
        package.json
        package-lock.json

nothing added to commit but untracked files present

package.json y package-lock.json sí queremos subirlos a Git (describen qué dependencias tiene el proyecto). Pero node_modules no: ocupa muchísimo y cualquiera puede recrearla ejecutando npm install. No tiene sentido incluirla en el repositorio.

Crear el .gitignore

En la raíz del proyecto, creamos un archivo que se llama exactamente .gitignore (con el punto delante, sin extensión):

touch .gitignore

Lo abrimos y añadimos una línea por cada cosa que queremos ignorar:

.gitignore

node_modules/

Guardamos el archivo. Ahora hacemos git status de nuevo:

On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

nothing added to commit but untracked files present

node_modules ha desaparecido del listado. Git ya no la ve. Solo aparece el propio .gitignore, que sí queremos añadir al repositorio para que cualquiera que clone el proyecto tenga las mismas reglas.

Qué puedes poner en el .gitignore

Puedes ignorar archivos concretos, carpetas enteras o patrones. Algunos ejemplos habituales:

# Dependencias
node_modules/

# Variables de entorno y credenciales
.env
.env.local

# Archivos que genera el sistema operativo
.DS_Store       # Mac
Thumbs.db       # Windows

# Carpetas de compilación
dist/
build/

Las líneas que empiezan con # son comentarios: Git las ignora y sirven para que el archivo sea más fácil de leer.

El / al final de una entrada indica que es una carpeta. Sin él también funciona, pero es buena práctica ser explícito.

Los patrones más útiles

Patrón Qué ignora
node_modules/ La carpeta node_modules y todo lo que hay dentro
*.log Todos los archivos con extensión .log
*.log Todos los archivos con extensión .log
dist/ La carpeta dist
.env El archivo .env exacto
*.env Cualquier archivo que acabe en .env
build/*.js Los archivos .js dentro de build (no en subcarpetas)

El archivo .env: un caso especial

El archivo .env merece una mención especial. Es donde los proyectos guardan variables de entorno: claves de API, contraseñas de bases de datos, tokens de servicios externos...

# .env
DB_PASSWORD=micontraseñasecreta
API_KEY=abc123xyz

Este archivo nunca debe entrar en Git. Si lo subes a un repositorio público (o incluso privado al que tenga acceso otra persona), estás exponiendo tus credenciales.

Añade siempre .env al .gitignore antes de crear el archivo.

¿Y si ya lo subí por error?

Si ya hiciste commit de un archivo que no debería estar en Git, añadirlo al .gitignore después no lo elimina del historial. Git ya lo conoce y lo sigue rastreando.

Para dejar de rastrearlo hay que decírselo expresamente:

git rm --cached .env

El flag --cached le dice a Git que deje de hacer seguimiento del archivo pero que no lo borre del disco. A partir de ese commit, el archivo ya no estará en el repositorio.

git add .gitignore
git commit -m "Deja de rastrear .env y añade gitignore"

Aunque hayas hecho esto, el archivo seguirá siendo visible en el historial de commits anteriores. Si subiste credenciales reales, lo más seguro es regenerarlas.

Plantillas de .gitignore

No tienes que escribir el .gitignore desde cero cada vez. GitHub mantiene un repositorio con plantillas para todos los lenguajes y frameworks habituales. Cuando creas un repositorio en GitHub puedes elegir una plantilla directamente desde la interfaz.

Elegir plantilla de .gitignore al crear el repositorio en GitHub

También puedes visitar gitignore.io e introducir las tecnologías que usas. Te genera el .gitignore automáticamente.

Añadir el .gitignore al repositorio

El archivo .gitignore sí debe estar en Git. Así cualquier persona que clone tu proyecto tendrá exactamente las mismas reglas de ignorado desde el principio.

git add .gitignore
git commit -m "Añade .gitignore"