550 Stimmen

Git: Beim Versuch, ein Git-Repository aus der Ferne hinzuzufügen, wird "fatal: Not a git repository" angezeigt

Ich führe mich in Git ein, indem ich diesem Tutorial folge:

Alles funktioniert einwandfrei, bis zu dem Punkt, an dem das Repo zu meinem lokalen Rechner hinzugefügt wird:

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

(Nachdem ich USERNAME, NFSNSERVER und REPONAME durch die richtigen Namen ersetzt habe) erhalte ich folgende Fehlermeldung:

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

Können Sie mir helfen, diesen Schritt zu überwinden?

1128voto

Assaf Lavie Punkte 67504

Haben Sie ein lokales Git-Repository initiiert, in das dieses Remote hinzugefügt werden soll?

Verfügt Ihr lokales Verzeichnis über eine .git Ordner?

Versuchen Sie git init .

101voto

Sie erhalten diese Fehlermeldung, wenn Sie versuchen, einen Git-Befehl zu verwenden, obwohl sich Ihr aktuelles Arbeitsverzeichnis nicht in einem Git-Repository befindet. Das liegt daran, dass Git standardmäßig nach einem .git Repository-Verzeichnis (innerhalb des Root-Projekts?), wie es von meine Antwort auf "Git zeigt kein Protokoll an, wenn ich nicht im Projektverzeichnis bin" :

Según el offizielle Linux-Kernel-Git-Dokumentation , GIT_DIR ist [eine Umgebungsvariable] so eingestellt, dass sie nach einem .git Verzeichnis (im aktuellen Arbeitsverzeichnis?) standardmäßig:

Wenn die GIT_DIR Umgebungsvariable gesetzt ist, gibt sie einen Pfad an, der anstelle des Standardpfades .git für die Basis der Repository.

Sie müssen entweder cd in das Repository/die Arbeitskopie zu kopieren, oder Sie haben gar kein Repository initialisiert oder geklont. In diesem Fall müssen Sie ein Repository in dem Verzeichnis initialisieren, in dem Sie das Repository ablegen wollen:

git init

oder ein Repository klonen

git clone <remote-url>
cd <repository>

57voto

Mein Problem war, dass aufgrund einiger Probleme mit meinem Betriebssystem jeder Befehl für mein lokales Repository mit "fatal: Not a git repository (or any of the parent directories): .git", einschließlich des Befehls fsck.

Das Problem war leere HEAD-Datei .

Ich konnte den Namen des aktuellen Zweigs, an dem ich gearbeitet habe, in .git/refs/heads finden und habe dann Folgendes getan:

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

Es hat funktioniert.

23voto

Smar Punkte 7125

HINWEIS: Dies ist keine Antwort auf das allgemeine Problem, das das Problem des Auftraggebers war, sondern auf ein anderes Problem, bei dem diese Fehlermeldung auftreten kann. Ich hatte keine Lust, eine neue Frage zu stellen, nur um diese Antwort aufzuschreiben, sag mir, ob ich das stattdessen tun sollte :P

Ich kam in die Situation, wahrscheinlich aufgrund einer Beschädigung eines bestimmten Absturzes, dass ich diesen Fehler auch dann bekam, wenn .git existierte.

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

Da ich nichts hatte, was wirklich konserviert werden musste, habe ich einfach den Dummy-Weg genommen und...

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

Es funktioniert aber immer noch nicht, wie zum Beispiel git log gibt zurück. fatal: bad default revision 'HEAD' . Fernbedienungen waren also habe ich git fetch --all und dann einfach git reset --hard origin/master um mich in den Zustand zu versetzen, in dem sich die Rückgabe zuvor befand.

Beachten Sie, dass Sie einige nicht übertragene Änderungen mit git status , git diff und so weiter. Dann einfach git diff yourfile > patch bevor Sie den Reset durchführen.

Zumindest für mich reflog ( git reflog ) vollständig verschwunden. Wenn Sie also einen Reset durchführen und einige Änderungen verhindern wollten, bin ich mir nicht sicher, ob Sie diese nach dem Reset wiederherstellen können. Stellen Sie also sicher, dass Sie alle Änderungen, die Sie nicht verlieren dürfen, gesichert haben, indem Sie den Klon kopieren, bevor Sie dies versuchen.

8voto

$ git status
fatal: Not a git repository:

Geben Sie einfach das Folgende in Ihre cmd- oder git-Shell oder ein anderes Terminal ein:

$ git init

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X