Recibir "fatal: no es un repositorio git" al intentar agregar de forma remota un repositorio Git

439

Me presento a Git siguiendo este tutorial:

Todo funciona bien hasta la parte donde se agrega el repositorio a mi máquina local:

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(Después de reemplazar USERNAME, NFSNSERVER y REPOAME con los nombres correctos) recibo el error:

fatal: Not a git repository (or any of the parent directories): .git

¿Me pueden ayudar a pasar este paso?

Corey
fuente
2
git initpero también asegúrese de que ninguno de sus subdirectorios tenga su propia .gitcarpeta
James Oravec

Respuestas:

908

¿Inició un repositorio Git local, en el que se supone que se debe agregar este control remoto?

¿Su directorio local tiene una .gitcarpeta?

Tratar git init.

Assaf Lavie
fuente
2
Ya había hecho este paso, pero tuve que hacerlo nuevamente después de configurar mi cuenta del patio del motor instalando el patio del motor.
AVProgrammer
3
Mi .gitcarpeta se ha ido. Es git initlo mismo que eliminar la carpeta del repositorio, y luego git clone .... Todo lo que necesito hacer es unpull
Francisco Corrales Morales
3
@FranciscoCorralesMorales si su .gitcarpeta se ha ido, puede git initvolver a ejecutarla para crear una nueva. Sin embargo, deberá volver a agregar un control remoto antes de poder extraerlo.
3
Recibía el mismo error al enviar cambios desde el sistema local. Intenté git init y funcionó. ¡Gracias!
rbashish
66
el mío tiene .git y ya había hecho git init pero recibo un errorjalal@klein:~/computer_vision/py-faster-rcnn$ git add -A fatal: Not a git repository: caffe-fast-rcnn/../.git/modules/caffe-fast-rcnn
Mona Jalal
85

Obtendrá este error si intenta usar un comando Git cuando su directorio de trabajo actual no está dentro de un repositorio Git. Esto se debe a que, por defecto, Git buscará un .gitdirectorio de repositorio (¿dentro de la raíz del proyecto?), Como lo señala mi respuesta a "Git no mostrará el registro a menos que esté en el directorio del proyecto" :

De acuerdo con la documentación oficial de Linux Kernel Git , ¿ GIT_DIRestá configurada [una variable de entorno] para buscar un .gitdirectorio (en el directorio de trabajo actual?) De forma predeterminada:

Si se establece la GIT_DIRvariable de entorno, entonces especifica una ruta para usar en lugar de la predeterminada .gitpara la base del repositorio.

Necesitará cdingresar al repositorio / copia de trabajo, o no inicializó o clonó un repositorio en primer lugar, en cuyo caso debe inicializar un repositorio en el directorio donde desea colocar el repositorio:

git init

o clonar un repositorio

git clone <remote-url>
cd <repository>
Comunidad
fuente
13
+1 por mencionar GIT_DIR. dentro de los ganchos en un repositorio desnudo, GIT_DIR se establece en '.' en lugar de '.git'.
commonpike
+1 para git init. Después de leer su respuesta, he usado esto varias veces en los repositorios que yo hice clon, pero no fueron reconocidos. Por lo tanto, parece ser seguro cuando se ejecuta desde un árbol de directorios que se supone que es un git repository, tiene todos los archivos en el directorio git, pero afirma que no lo esfatal: Not a git repository (or any parent up to mount point
ElderDelp
34

Mi problema fue que, para algunos problemas con mi sistema operativo, cualquier comando en mi repositorio local terminaba con "fatal: No es un repositorio git (o cualquiera de los directorios principales): .git", con el comando fsck incluido.

El problema era un archivo HEAD vacío .

Pude encontrar el nombre real de la sucursal en la que he trabajado en .git / refs / heads y luego hice esto:

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

Funcionó.

Marcin TP Łuczyński
fuente
2
Mi archivo HEAD estaba dañado por alguna razón, así que tuve que restaurarlo y solucioné el problema
Steven
1
Eres un gran amigo Ahorré una tonelada de mi tiempo
Vaibhav Sah
Este fue mi problema también. Gracias
Carlos Rafael Ramirez
3
Tenía Visual Studio abierto durante un git rebase y Visual Studio notó un cambio de archivo y poco después tuve una pantalla azul de la muerte. Después de reiniciar .git / HEAD se llenó con NULLS y cuando los reemplacé con un hash completo (5621afeffbabed40e3f386676068c45643644b7d) leído desde algún lugar como .git \ refs \ remotes \ origin \ master, git comenzó a funcionar nuevamente, también necesité stackoverflow.com/questions / 1115854 / ... ya que esto me dijo que eliminara .git / index y necesitaba eliminar .git / index.lock antes de hacer git reset. Bien ahora
Ivan
1
Casi pierdo la esperanza de recuperar mi trabajo. Solo copié y pegué tu solución e hizo magia. Gracias
Mukesh Kumar
17

NOTA: esto no responde al problema común, que era el problema de OP, sino a un problema diferente en el que puede aparecer este mensaje de error. No tenía ganas de hacer una nueva pregunta solo para escribir esta respuesta, dime si debería hacer eso en su lugar: P

Llegué a una situación, muy probablemente debido a cierta corrupción de cierto bloqueo que tuve, que recibí este error incluso cuando .gitexistía.

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

Como no tenía nada que realmente necesitara preservación, simplemente fui con una forma ficticia e hice ...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

Sin embargo, todavía no funciona, como por ejemplo, git logvuelve fatal: bad default revision 'HEAD'. Sin embargo, los controles remotos estaban allí, así que lo hice git fetch --ally luego solo git reset --hard origin/masterpara llegar al estado en el que estaba el repositorio anteriormente.

Tenga en cuenta que si hay algunos cambios no confirmados, puede verlos git status, git diffetc. Entonces sologit diff yourfile > patch antes de ejecutar el reinicio.

Al menos para mí reflog ( git reflog) desapareció por completo. Por lo tanto, si realiza el restablecimiento y hubo algunos cambios que deseaba evitar, no estoy seguro de que pueda recuperarlos después del restablecimiento. Por lo tanto, asegúrese de tener todos los cambios que no puede perder respaldados, en última instancia, simplemente copiando el clon antes de intentar esto.

Smar
fuente
Tengo el problema Y probé de la manera que mencionó @Smar, pero el mismo resultado fue "fatal ...". Entonces, ¿qué sigue para hacer? ¿cualquier sugerencia?
Caos
1
Este problema ocurrió mientras usaba Visual Studio git inity git fetch --allsolucionó el problema.
Morse
7
$ git status
fatal: Not a git repository:

Simplemente escriba lo siguiente en su cmd o git shell o cualquier otra terminal:

$ git init
der_michael
fuente
6

Este problema se me ocurrió después de mover la ubicación de un proyecto git en el sistema de archivos. Cuando ejecuté algunos comandos git, se produjo el error, por ejemplo:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

Encontré en /home/rospasta/path_old/gitprojecta/.travis/.gitel camino absoluto de la antigua ubicación del proyecto fue escrito. La actualización manual de esta ruta de la nueva ubicación me resolvió el problema.

Entonces mi problema puede o no ser un problema de git, pero HTH.

IsaacS
fuente
5

En caso de que ayude a alguien más, recibí este mensaje de error después de eliminar accidentalmente .git / objects /

fatal: no es un repositorio de git (ni ninguno de los directorios principales): .git

Restaurarlo resolvió el problema.

eduherminio
fuente
4

En la línea de comandos / CLI, obtendrá este error si su directorio actual NO es el repositorio. Por lo tanto, primero debe incluir el CD en el repositorio.

Sid Smith
fuente
4

Probablemente sea demasiado tarde, pero otra solución que podría ayudar a futuros visitantes. Primero elimine el .gitdirectorio anterior -

rm .git

Luego inicialice el repositorio git nuevamente

git init
kevthanewversi
fuente
66
Cabe señalar que esto destruye todos los metadatos de git como commits. Conservará sus datos, pero Git "comenzará de nuevo"; esto puede no ser algo bueno.
Joseph A.
1
@JosephA .: tienes razón, eso es subóptimo. ¿Hay alguna solución mejor que pueda sugerir? Me sale el fatalerror a pesar de que .gitexiste la carpeta.
Hassan Baig
Pero oye, ¿los commits ya no están en el repositorio remoto? ¿O para qué necesitarías realmente los commits en tu HD / local para ...? @JosephA.
kevthanewversi
Porque estoy pensando que todavía puedes hacer cosas como git revert, git reset sin tener la información de confirmación localmente ... ¿verdad? @JosephA.
kevthanewversi
1
¡Esto está borrando todo! Probablemente la peor forma de resolver esto.
Richard Lalancette
4

Parece que no vas a tu carpeta específica. Por ejemplo, si estoy trabajando en un proyecto llamado bugsBunny y está guardado en la carpeta d: / work: code, entonces primero debes ir a esa carpeta usando cd d: / work / code / bugsBunny, luego de eso puede continuar usando sus comandos git.

Vikrant Singh
fuente
4

Incluso yo tuve el mismo problema. Escribí un script de shell que hará una copia de seguridad de todos mis códigos en mi repositorio git los días hábiles de una semana a las 17:55 utilizando crontab. Al ver los registros de cron, encontré el problema mencionado anteriormente.

el problema anterior se produce solo cuando intenta ejecutar comandos git desde un directorio que no es gir (es decir, desde otro directorio que no es la copia de trabajo). para arreglar esto, agregue -C <git dir>el comando git que está ejecutando de manera tal que git statusserá git -C /dir/to/git statusy git add -Aserá git -C /dir/to/git -A.

Mani
fuente
3

En mi caso, utilicé Tortoise SVN y cometí el error de usar también las funciones Visual Studio GIT al mismo tiempo. Eso hizo que Visual Studio bloqueara el archivo HEAD dentro de la carpeta .git para que ni VS ni Tortoise pudieran acceder al repositorio y recibí el error "fatal: No es un repositorio git ..." de ambas aplicaciones.

Solución:

  1. Vaya dentro de la carpeta .git y cambie el nombre de "HEAD.lock" a solo "HEAD"
  2. Decide una aplicación de administrador GIT y no toques la otra
Adrian Rosca
fuente
3

Para eso necesita ingresar un comando que falta en los comandos de bitbucket

Por favor, intente con git init.

VIKAS KOHLI
fuente
2

en mi caso, tuve el mismo problema mientras probaba cualquier comando git (por ejemplo, estado git) usando cmd de windows. entonces, lo que hago es instalar git para la ventana https://windows.github.com/ en las variables ambientales, agregar la ruta de clase del git en la variable "PATH". generalmente el git se instalará en C: / user / "username" / appdata / local / git / bin agregue esto en la RUTA en la variable ambiental

y una cosa más en el cmd vaya a su repositorio git o cd donde está su clon en su ventana, generalmente se almacenarán en los documentos en github cd Document / Github / yourproject después de eso, puede tener cualquier comando git

gracias

keyo
fuente
2

Vaya a su carpeta de origen donde está almacenado el repositorio local, por ejemplo, el mío se encuentra en c: / GitSource, haga clic derecho mientras está en la carpeta, haga clic en git bash aquí, luego git status ...

wesley7
fuente
2

GIT_DIR debe estar desarmado: unset GIT_DIR

okwap
fuente
2

En mi caso, el archivo .git / HEAD estaba dañado (solo contenía puntos). Así que lo edité y reemplacé su contenido con:

ref: refs/heads/master

y comenzó a funcionar nuevamente.

cryss
fuente
1

Para mí, esto estaba relacionado con la propiedad malformada en mi .git/camino. rootpropiedad .git/HEADy .git/index, evitando que el jenkinsusuario ejecute el trabajo.

Hugh Esco
fuente
1
Esto no parece ser reproducible en la línea de comando. Después de configurar la propiedad de .git/HEADy .git/indexpara root:root, todavía puedo agregar controles remotos sin error. Cuando cambio la propiedad de todo el .gitdirectorio para root, me sale un error diferente: error: could not lock config file .git/config: Permission denied.
Kyle Strand
1

El error a continuación parece que Gits no encontró el archivo .git en el directorio actual, por lo que arrojó un mensaje de error.

Por lo tanto, cambie de directorio a directorio de repositorio donde haya extraído el código de git y luego ejecute este comando.

  • $ git pago
Ajay Kumar
fuente
1

En mi caso, descubrí que git en Windows se volvió sensible a mayúsculas y minúsculas para la letra de la unidad desde algún punto.

Después de actualizar git binary en Windows, los comandos cli que solían funcionar se detuvieron. por ejemplo, la ruta en el script era D : \ bla \ file.txt mientras que el comando git aceptaba solo d : \ bla \ file.txt

ilano
fuente
1

git funcionaba bien para ser y, de repente, comenzó a mostrar este fatal: Not a git repository (or any of the parent directories): .gitmensaje.

Para mí, no estoy seguro de qué estaba dañado en la carpeta .git, lo hice git clone ** newfoldery copié toda la carpeta .git a mi carpeta corrupta / antigua donde estaba haciendo cambios antes de que git comenzara a mostrar un mensaje de error.

Todo volvió a la normalidad y git también reconoció mis archivos modificados / sin organizar.

Neel
fuente
0

restaurar el .git/ORIG_HEADy otros archivos de repositorio raíz .git

Recibí este error después de restaurar desde la copia de seguridad, aparentemente los archivos contenidos en la raíz del directorio .git no llegaron al destino, pero todas las subcarpetas lo hicieron al principio, pensé que el repositorio estaba intacto.

Lo arreglé restaurando los archivos raíz.

AndrewD
fuente
0

Tuve este problema con el complemento Jenkins Git después de problemas de autenticación con GitLab. Jenkins informaba 'hudson.plugins.git.GitException: [...] stderr: GitLab: no se pudo encontrar el proyecto que estaba buscando. fatal: no se pudo leer desde el repositorio remoto.

Sin embargo, si hice un 'git clone' o 'git fetch' directamente desde el cuadro de Jenkins (línea de comando) funcionó sin problemas.

El problema se resolvió eliminando todo el directorio / workspace en la carpeta de trabajos de Jenkins para ese trabajo en particular, p. Ej.

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

Presumiblemente, la carpeta local .git se había quedado obsoleta / corrupta?

GreensterRox
fuente
0

Esto también puede deberse a los permisos. Verifique los permisos del propietario / grupo y asegúrese de tener los permisos adecuados para acceder a esos datos. En mi caso, me encontré con este error al ejecutar "git status" en un repositorio cuya propiedad se estableció en root: root. Ejecutar "git status" como root resolvió mi problema. Alternativamente, si no desea que la propiedad del usuario / grupo sea root: root, asigne el repositorio a algo a lo que tenga acceso.

EliT
fuente
0

Tuve este problema y lo solucioné agregando el archivo README.md

Supun Kavinda
fuente