fatal: not a git repository: qué significa y cómo arreglarlo

El error fatal not a git repository explicado para principiantes: por qué aparece, qué es la carpeta .git y cómo solucionarlo en 3 pasos.

fatal: not a git repository: qué significa y cómo arreglarlo

Escribes tu primer comando de git, esperas ver algo útil, y la terminal te suelta esto: fatal: not a git repository (or any of the parent directories): .git. Respira. No has roto nada, no has borrado nada y tu proyecto sigue intacto. Git simplemente no encuentra un repositorio en la carpeta donde estás parado. Para seguirlo solo necesitas tener git instalado y una terminal abierta.

Qué significa “fatal: not a git repository”

El mensaje te está diciendo que git buscó un repositorio y no lo encontró por ningún lado. Vamos a partirlo en dos trozos, porque cada uno cuenta algo distinto.

La primera mitad, fatal: not a git repository, significa “la carpeta en la que estás no es un repositorio de git”. La palabra “fatal” suena dramática, pero en git solo quiere decir “no puedo continuar con este comando”. Tu ordenador funciona perfectamente.

La segunda mitad es la interesante: (or any of the parent directories): .git. Cuando lanzas un comando, git no mira solo la carpeta actual. Sube por el árbol de carpetas (a la carpeta que la contiene, y a la que contiene a esa, y así hasta la raíz del disco) buscando una subcarpeta llamada .git. El mensaje te está diciendo que buscó en tu carpeta actual y en todas sus carpetas padre, y en ninguna había un .git. Por eso se rinde.

Todo gira alrededor de esa carpeta .git. Conviene entender qué es antes de arreglar nada.

La carpeta .git es el repositorio

Comparación entre una carpeta normal, que solo contiene archivos, y un repositorio git, que además contiene la carpeta oculta .git con el historial de commits y ramas
Una carpeta normal frente a un repositorio git: la única diferencia es la carpeta oculta .git

La carpeta oculta .git es el repositorio. Es donde git guarda todo el historial de tu proyecto: cada commit, cada rama, la configuración local. Sin ella, tu carpeta es una carpeta normal con archivos dentro, y git no tiene nada que gestionar.

Piénsalo así: una carpeta con tus archivos es como una habitación con muebles. La carpeta .git es el libro de registro que anota cada vez que mueves un mueble. Si el libro no existe, puedes seguir moviendo muebles, pero nadie está apuntando los cambios. Eso es exactamente lo que pasa cuando ves este error: estás en una habitación sin libro de registro.

Si esta es tu primera semana con git y todavía te preguntas qué es un commit o para qué sirve versionar tu código, empieza por la guía para dar tus primeros pasos con git y vuelve aquí. El resto del post asume que ya sabes que un repositorio guarda el historial de tu proyecto.

Ahora, las causas. Son tres, y casi siempre es la primera.

Causa 1: estás en el directorio equivocado

Esta es la razón número uno, con diferencia. Abriste una terminal nueva, o cambiaste de carpeta sin darte cuenta, y estás fuera de tu proyecto. Tu repositorio existe, pero no donde estás ahora mismo.

Lo primero es ver dónde estás y qué hay a tu alrededor:

# pwd = "print working directory": te dice la ruta de la carpeta actual
pwd
# /Users/sofia

# ls -a lista TODOS los archivos, incluidos los ocultos (los que empiezan por punto)
ls -a
# .  ..  Descargas  Documentos  proyectos

En ese ejemplo estás en tu carpeta personal (/Users/sofia) y no hay ninguna carpeta .git a la vista. Con razón git protesta. Tu proyecto probablemente vive dentro de proyectos. Entra en él y vuelve a mirar:

# cd = "change directory": te mueve a la carpeta que le indiques
cd proyectos/mi-primer-repo

# comprueba de nuevo si ahora sí hay un .git
ls -a
# .  .git  README.md  src

Ahí está el .git. Ahora cualquier comando de git funcionará porque estás dentro del repositorio. El truco mental es simple: antes de ejecutar git, mira dónde estás con pwd y comprueba que ves un .git con ls -a.

Pero, ¿y si haces ls -a en la carpeta correcta y el .git no aparece por ninguna parte? Entonces el repositorio no existe todavía.

Causa 2: nunca inicializaste el repositorio

Si estás seguro de estar en la carpeta de tu proyecto y no hay .git, es que nunca creaste el repositorio. Empezaste a escribir código, guardaste archivos, y diste por hecho que git ya estaba controlando la carpeta. Git no funciona así: hay que crear el repositorio de forma explícita con git init.

# Estás dentro de la carpeta de tu proyecto
cd mi-proyecto

# git init crea la carpeta .git y convierte esta carpeta en un repositorio
git init
# Initialized empty Git repository in /Users/sofia/mi-proyecto/.git/

Ese mensaje, Initialized empty Git repository in ..., es la confirmación de que ya tienes un repositorio. La palabra “empty” (vacío) es normal: significa que aún no hay commits, no que hayas perdido archivos. git init solo añade la carpeta .git; tu código no se toca. Tras esto, git status ya responderá con normalidad.

Un detalle importante sobre cuándo usar git init: solo cuando de verdad quieras empezar un repositorio nuevo en esa carpeta. Si lo que buscabas era trabajar sobre un proyecto que ya existía en otro sitio, git init no es la respuesta, porque te crearía un repositorio vacío en vez de traerte el original con su historial. Para el flujo completo de arrancar un repo desde cero paso a paso, tienes la guía de cómo crear tu primer repositorio con git.

Queda una tercera causa, típica de cuando descargas código de otra persona.

Causa 3: el clon no llegó a buen puerto

Cuando copias un repositorio de GitHub a tu máquina usas git clone, y aquí hay una trampa clásica. git clone <url> no vuelca los archivos en tu carpeta actual: crea una subcarpeta nueva con el nombre del repositorio y mete todo ahí dentro, incluido el .git. Si ejecutas git justo después sin entrar en esa subcarpeta, sigues fuera del repositorio.

# git clone descarga el repo y crea la carpeta "mi-repo" con todo dentro
git clone https://github.com/usuario/mi-repo.git
# Cloning into 'mi-repo'...

# ERROR clásico: lanzas git aquí, pero sigues FUERA de mi-repo
git status
# fatal: not a git repository (or any of the parent directories): .git

# La solución: entra en la carpeta que git clone acaba de crear
cd mi-repo
git status
# On branch main ...

Fíjate en la línea Cloning into 'mi-repo'...: te está diciendo el nombre exacto de la carpeta que creó. Ese es el sitio al que tienes que entrar con cd. Casi siempre, el error tras un clon es ese cd que faltaba.

La otra posibilidad es que el clon se cortara a medias (se cayó la red, cerraste la terminal) y la carpeta quedara incompleta. Si entras y sigue sin haber .git, borra esa carpeta a medias y vuelve a clonar desde cero.

Las tres causas de un vistazo

Árbol de decisión que empieza en el error fatal not a git repository y se ramifica en tres causas (directorio equivocado, repositorio nunca inicializado, clon sin terminar) con su arreglo correspondiente
Sigue la rama que encaje con tu situación para identificar tu causa exacta y el comando que la arregla: cd a la carpeta, git init o git clone

Cuando te salte el error, no adivines. Confírmalo con un comando y aplica el arreglo que toca:

CausaCómo lo confirmasCómo lo arreglas
Estás en el directorio equivocadopwd te muestra una ruta que no es tu proyecto, o ls -a no muestra .gitcd a la carpeta correcta del proyecto
Nunca inicializaste el repositorioEstás en la carpeta correcta pero ls -a no muestra .git en ningún sitiogit init para crear el repositorio
El clon no terminó o no entrasteAcabas de clonar y git clone imprimió Cloning into '...'cd a la carpeta clonada; si está incompleta, vuelve a clonar

Comprueba de un vistazo si estás dentro de un repo

Antes de lanzar cualquier comando de git, tener el hábito de comprobar dónde estás te ahorra este error para siempre. Hay tres formas de hacerlo, de la más informativa a la más rápida.

La más común es git status. Si estás dentro de un repo, te cuenta en qué rama estás y qué archivos han cambiado. Si no, te devuelve el mismo fatal: not a git repository. Si quieres entender bien todo lo que te dice esa salida (rama, staging, archivos sin seguimiento), lo desgloso en el post sobre cómo leer la salida de git status.

Cuando solo quieres un sí o un no, sin más ruido, usa git rev-parse:

# Imprime "true" si estás dentro del árbol de trabajo de un repositorio
git rev-parse --is-inside-work-tree
# true

Devuelve true cuando estás dentro de un repositorio y false (o el error fatal) cuando no. Es la comprobación que uso en scripts, porque su respuesta es fácil de leer para otro programa. Y la tercera, la más manual de todas, ya la conoces: ls -a y busca el .git con tus propios ojos.

Errores comunes

Un puñado de despistes provocan este error una y otra vez. Estos son los que más veo en gente que empieza.

Ejecutar git init en tu carpeta personal

El más peligroso. Ves el error, lees por ahí que git init lo arregla, y lo lanzas sin mirar dónde estás. Si estabas en tu carpeta home (/Users/sofia), acabas de convertir toda tu carpeta personal en un repositorio git. A partir de ahí, cualquier comando de git que lances en cualquier subcarpeta creerá que pertenece a ese repo gigante. Antes de escribir git init, haz pwd y confirma que estás justo en la carpeta del proyecto que quieres versionar.

Hacer git init dentro de un repo que ya existía

Si por despiste ejecutas git init en una carpeta que ya era un repositorio, git no te lo impide y no rompe nada (te dirá Reinitialized existing Git repository ...), pero el mensaje debería ponerte en alerta: creías estar creando algo nuevo y ya existía. Y si lo haces dentro de una subcarpeta de un repo, creas un repositorio anidado, una fuente de confusión difícil de depurar más adelante.

Creer que el repositorio está roto

El error no significa que tu repositorio esté corrupto ni que hayas perdido commits. Significa que git no lo encuentra desde donde estás. Casi siempre el repo está perfecto, solo que dos carpetas más arriba. Antes de entrar en pánico o de borrar nada, comprueba con pwd y ls -a si simplemente estás en el sitio equivocado.

Descomprimir un ZIP y esperar historial

Si descargaste tu proyecto como un archivo ZIP en vez de clonarlo, ese ZIP trae los archivos pero no la carpeta .git. Es un proyecto sin historial de git. Por eso git status falla: técnicamente no hay repositorio. Si necesitas el historial, clona con git clone en lugar de descargar el ZIP.

Checklist para no volver a caer

  • Antes de un comando de git, ejecuto pwd para confirmar en qué carpeta estoy
  • Compruebo con ls -a que la carpeta contiene un .git
  • Uso git init solo cuando quiero empezar un repositorio nuevo en esa carpeta
  • Tras un git clone, entro con cd en la carpeta que el clon acaba de crear
  • Si dudo, uso git rev-parse --is-inside-work-tree para un sí/no rápido
  • No ejecuto git init a ciegas en mi carpeta personal

Estos primeros comandos se aprenden mucho mejor con las manos que leyéndolos. Si quieres practicar git init, git clone y git status guiado paso a paso, con ejercicios que te corrigen sobre la marcha, tienes el curso Git de cero a profesional, pensado justo para cuando estás en este punto.

Y si prefieres que te avise cuando publique nuevas guías de git y de trabajo con IA para principiantes, déjame tu correo:

Un concepto nuevo cada semana

Preguntas Frecuentes

¿git init borra mis archivos?

No. git init solo crea la carpeta oculta .git y convierte tu carpeta en un repositorio. Tus archivos y tu código se quedan exactamente igual. La documentación oficial lo confirma: ejecutar git init es seguro y no sobrescribe lo que ya está ahí.

Hice git init sin querer y ahora tengo un repo donde no lo quería, ¿cómo lo deshago?

Un repositorio es simplemente su carpeta .git, así que basta con borrar esa carpeta. Estando dentro de la carpeta afectada, ejecuta:

# Borra solo la carpeta .git y deja intactos tus archivos
rm -rf .git

Eso elimina el historial de git, pero deja intactos tus archivos. Ten mucho cuidado de estar en la carpeta correcta antes de lanzar ese comando y de escribir .git y no otra cosa, porque rm -rf borra sin preguntar.

¿Por qué no veo la carpeta .git en mi explorador de archivos?

Porque está oculta. Todos los archivos y carpetas cuyo nombre empieza por punto (.git, .gitignore) están ocultos por defecto. En la terminal la ves con ls -a. En el explorador de archivos de tu sistema tendrás que activar la opción de “mostrar archivos ocultos”.

Descargué el proyecto en un ZIP y git no funciona, ¿por qué?

Para confirmar que la culpa es del ZIP y no un despiste tuyo, ejecuta ls -a nada más descomprimirlo, dentro de la carpeta del proyecto. Si no aparece ningún .git, es la descarga: un ZIP nunca lo incluye, así que no hay repositorio que valga. Cuando lo confirmes, clona el proyecto con git clone <url> y tendrás el historial que al ZIP le faltaba.