Beim Versuch, ein Git-Repo per Fernzugriff hinzuzufügen, wird "fatal: Kein Git-Repository" angezeigt

439

Ich stelle mich Git vor, indem ich diesem Tutorial folge:

Alles funktioniert einwandfrei bis zu dem Teil, in dem das Repo meinem lokalen Computer hinzugefügt wird:

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

(Nach dem Ersetzen von USERNAME, NFSNSERVER und REPOAME durch die richtigen Namen) erhalte ich die folgende Fehlermeldung:

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

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

Corey
quelle
2
git initStellen Sie aber auch sicher, dass keines Ihrer Unterverzeichnisse einen eigenen .gitOrdner hat
James Oravec

Antworten:

908

Haben Sie ein lokales Git-Repository initiiert, zu dem diese Fernbedienung hinzugefügt werden soll?

Hat Ihr lokales Verzeichnis einen .gitOrdner?

Versuchen Sie es git init.

Assaf Lavie
quelle
2
Ich hatte diesen Schritt bereits ausgeführt, musste ihn jedoch erneut ausführen, nachdem ich mein Maschinenhofkonto eingerichtet hatte, auf dem der Maschinenhof installiert war.
AVProgrammer
3
Mein .gitOrdner ist weg. Entspricht git initdem Löschen des Repository-Ordners und dann git clone .... Alles was ich tun muss ist einpull
Francisco Corrales Morales
3
@FranciscoCorralesMorales Wenn Ihr .gitOrdner nicht mehr vorhanden ist, können Sie ihn git initerneut ausführen , um einen neuen zu erstellen . Sie müssen eine Fernbedienung erneut hinzufügen, bevor Sie sie abrufen können.
3
Beim Senden von Änderungen vom lokalen System wurde der gleiche Fehler angezeigt. Versuchte Git Init und es hat funktioniert. Vielen Dank!
Rbashish
6
meins hat .git und ich hatte bereits git init gemacht, aber ich bekomme einen Fehlerjalal@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

Diese Fehlermeldung wird angezeigt, wenn Sie versuchen, einen Git-Befehl zu verwenden, wenn sich Ihr aktuelles Arbeitsverzeichnis nicht in einem Git-Repository befindet. Das liegt daran, dass Git standardmäßig nach einem .gitRepository-Verzeichnis sucht (innerhalb des Projektstamms?), Wie aus meiner Antwort auf "Git zeigt kein Protokoll an, wenn ich mich nicht im Projektverzeichnis befinde" hervorgeht :

Gemäß der Dokumentation offiziellen Linux - Kernel Git , GIT_DIRist [eine Umgebungsvariable] auf , suchen nach einem .gitVerzeichnis (in dem aktuellen Arbeitsverzeichnis?) Standardmäßig:

Wenn die GIT_DIRUmgebungsvariable festgelegt ist, gibt sie einen Pfad an, der anstelle des Standardpfads .gitfür die Basis des Repositorys verwendet werden soll.

Sie müssen entweder cdin das Repository / die Arbeitskopie wechseln oder Sie haben ein Repository überhaupt nicht initialisiert oder geklont. In diesem Fall müssen Sie ein Repo in dem Verzeichnis initialisieren, in dem Sie das Repo platzieren möchten:

git init

oder klonen Sie ein Repository

git clone <remote-url>
cd <repository>
Gemeinschaft
quelle
13
+1 für die Erwähnung von GIT_DIR. Innerhalb von Hooks in einem Bare-Repo wird GIT_DIR auf '.' gesetzt. anstelle von '.git'.
Commonpike
+1 für git init. Nach Ihrer Antwort zu lesen, habe ich dieses Bild mehrmals auf Repositories , dass ich tat Klon, wurde aber nicht erkannt. Es scheint also sicher zu sein, wenn es von einem Verzeichnisbaum ausgeführt wird, der a sein soll git repository, alle Dateien im Git-Verzeichnis enthält, aber behauptet, dies nicht zu seinfatal: Not a git repository (or any parent up to mount point
ElderDelp
34

Mein Problem war, dass bei einigen Problemen mit meinem Betriebssystem jeder Befehl in meinem lokalen Repository mit "fatal: Kein Git-Repository (oder eines der übergeordneten Verzeichnisse): .git" endete, einschließlich des Befehls fsck.

Das Problem war eine leere HEAD-Datei .

Ich konnte den tatsächlichen Filialnamen finden, an dem ich in .git / refs / head gearbeitet habe, und dann habe ich Folgendes getan:

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

Es funktionierte.

Marcin TP Łuczyński
quelle
2
Meine HEAD-Datei war aus irgendeinem Grund beschädigt, also musste ich sie wiederherstellen und das Problem
Steven
1
Du bist ein großartiger Kumpel.
Spart
Dies war auch mein Problem. Vielen Dank
Carlos Rafael Ramirez
3
Ich hatte Visual Studio während einer Git-Rebase geöffnet und Visual Studio bemerkte eine Dateiänderung und kurz darauf hatte ich einen blauen Bildschirm des Todes. Nachdem der Neustart von .git / HEAD mit NULLS gefüllt war und ich sie durch einen vollständigen Hash (5621afeffbabed40e3f386676068c45643644b7d) ersetzte, der von irgendwo wie .git \ refs \ remotes \ origin \ master gelesen wurde, begann git wieder zu funktionieren. Ich brauchte auch stackoverflow.com/questions / 1115854 /… da dies mir sagte, dass ich .git / index löschen soll und ich .git / index.lock entfernen musste, bevor ich git zurücksetzen konnte. Gut jetzt
Ivan
1
Ich habe fast meine Hoffnung verloren, meine Arbeit zurückzubekommen. Ich kopiere einfach Ihre Lösung und füge sie ein. Danke
Mukesh Kumar
17

HINWEIS: Dies entspricht nicht dem allgemeinen Problem, das das Problem von OP war, sondern einem anderen Problem, bei dem diese Fehlermeldung möglicherweise auftritt. Ich hatte keine Lust, eine neue Frage zu stellen, nur um diese Antwort aufzuschreiben. Sagen Sie mir, ob ich das stattdessen tun sollte: P.

Ich kam zu der Situation, höchstwahrscheinlich aufgrund einer Beschädigung eines bestimmten Absturzes, dass ich diesen Fehler auch dann bekam, wenn er .gitexistierte.

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, ging ich einfach mit dem Dummy-Weg und tat ...

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

Funktioniert aber immer noch nicht, wie zum Beispiel git logzurückkehrt fatal: bad default revision 'HEAD'. Fernbedienungen waren jedoch da, also tat ich es git fetch --allund nur git reset --hard origin/masterum mich in den Zustand zu versetzen , in dem sich das Repo zuvor befand.

Beachten Sie, dass , wenn es einige unbestätigten Änderungen ist, können Sie sie mit sehen git status, git diffund so weiter. Dann kurz git diff yourfile > patchvor dem Zurücksetzen.

Zumindest für mich ist reflog ( git reflog) komplett verschwunden. Wenn Sie den Reset durchführen und einige Änderungen verhindern wollten, bin ich mir nicht sicher, ob Sie sie nach dem Zurücksetzen wieder erhalten können. Stellen Sie also sicher, dass Sie alle Änderungen, die Sie nicht verlieren können, gesichert haben, indem Sie den Klon kopieren, bevor Sie dies versuchen.

Smar
quelle
Ich habe das Problem. Und habe versucht, wie @Smar erwähnt, aber das gleiche Ergebnis "fatal ....". Also, was soll ich als nächstes tun? irgendein Vorschlag?
Chaos
1
Dieses Problem trat während der Verwendung von Visual Studio auf git initund git fetch --allhat das Problem behoben .
Morse
7
$ git status
fatal: Not a git repository:

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

$ git init
der_michael
quelle
6

Dieses Problem trat mir auf, nachdem ich den Speicherort eines Git-Projekts im Dateisystem verschoben hatte. Wenn ich einige Git-Befehle ausgeführt habe, ist der Fehler aufgetreten, z.

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

Ich fand im /home/rospasta/path_old/gitprojecta/.travis/.gitabsoluten Pfad, dass der alte Ort des Projekts geschrieben wurde. Das manuelle Aktualisieren dieses Pfads des neuen Speicherorts hat das Problem für mich behoben.

Mein Problem kann also ein Git-Problem sein oder auch nicht, aber HTH.

IsaacS
quelle
5

Falls es jemand anderem hilft, habe ich diese Fehlermeldung erhalten, nachdem ich versehentlich .git / objects / gelöscht habe

fatal: Kein Git-Repository (oder eines der übergeordneten Verzeichnisse): .git

Das Wiederherstellen löste das Problem.

eduherminio
quelle
4

In der Befehlszeile / CLI wird dieser Fehler angezeigt, wenn Ihr aktuelles Verzeichnis NICHT das Repository ist. Sie müssen also zuerst eine CD ins Repo legen.

Sid Smith
quelle
4

Wahrscheinlich zu spät, aber eine andere Lösung, die zukünftigen Besuchern helfen könnte. Löschen Sie zuerst das alte .gitVerzeichnis -

rm .git

Dann initialisiere das Git Repo erneut

git init
kevthanewversi
quelle
6
Es ist zu beachten, dass dadurch alle Git-Metadaten wie Commits zerstört werden. Sie werden Ihre Daten behalten, aber Git wird "neu anfangen" - dies ist möglicherweise keine gute Sache.
Joseph A.
1
@JosephA.: Du hast recht, das ist suboptimal. Gibt es eine bessere Lösung, die Sie vorschlagen können? Ich erhalte die fatalFehlermeldung, obwohl der .gitOrdner vorhanden ist.
Hassan Baig
Aber hey, sind die Commits nicht schon auf dem Remote-Repo? Oder wofür würden Sie die Commits auf Ihrer HD / lokal wirklich brauchen ...? @ JosephA.
Kevthanewversi
Coz Ich denke, Sie können immer noch Dinge wie git revert, git reset tun, ohne die Commit-Informationen lokal zu haben ... richtig? @ JosephA.
Kevthanewversi
1
Das wischt alles ab! Wahrscheinlich der schlechteste Weg, um dies zu lösen.
Richard Lalancette
4

Es scheint, als würden Sie nicht zu Ihrem spezifischen Ordner gehen. Wenn ich beispielsweise an einem Projekt mit dem Namen bugsBunny arbeite und es im Ordner d: / work: code gespeichert ist, müssen Sie zuerst mit cd d: / work / code / bugsBunny in diesen Ordner wechseln und danach kann deine Git-Befehle weiter verwenden.

Vikrant singh
quelle
4

Sogar ich hatte das gleiche Problem. Ich habe ein Shell-Skript geschrieben, das alle meine Codes an Werktagen der Woche um 17:55 Uhr mit crontab auf meinem Git-Repo sichert. Als ich die Protokolle von Cron sah, fand ich das oben erwähnte Problem.

Das obige Problem tritt nur auf, wenn Sie versuchen, Git-Befehle aus einem Nicht-Gir-Verzeichnis auszuführen (dh aus einem anderen Verzeichnis, das nicht die Arbeitskopie ist). Um dies zu beheben, fügen Sie -C <git dir>den Befehl git hinzu, den Sie so ausführen, dass er sein git statuswird git -C /dir/to/git statusund sein git add -Awird git -C /dir/to/git -A.

Mani
quelle
3

In meinem Fall habe ich Tortoise SVN verwendet und den Fehler gemacht, gleichzeitig auch die Visual Studio GIT-Funktionen zu verwenden. Dadurch sperrte Visual Studio die HEAD-Datei im .git-Ordner, sodass weder VS noch Tortoise auf das Repo zugreifen konnten, und ich bekam von beiden Anwendungen den Fehler "Schwerwiegend: Kein Git-Repo ...".

Lösung:

  1. Gehen Sie in den Ordner .git und benennen Sie "HEAD.lock" in "HEAD" um.
  2. Entscheiden Sie sich für eine GIT-Administratoranwendung und berühren Sie die andere nicht
Adrian Rosca
quelle
3

Dazu müssen Sie einen Befehl eingeben, der in Bitbucket-Befehlen fehlt

Bitte versuchen Sie es mit git init.

VIKAS KOHLI
quelle
2

In meinem Fall hatte ich das gleiche Problem, als ich alle git - Befehle (z. B. git status) mit Windows cmd ausprobierte. Nachdem ich git für das Fenster https://windows.github.com/ in den Umgebungsvariablen installiert habe , füge den Klassenpfad des gits in die Variable "PATH" ein. Normalerweise wird das Git unter C: / user / "username" / appdata / local / git / bin installiert. Fügen Sie dies auf dem PATH in der Umgebungsvariablen hinzu

und eine weitere Sache auf dem cmd gehen Sie zu Ihrem Git-Repository oder Ihrer CD, wo sich Ihr Klon in Ihrem Fenster befindet. Normalerweise werden sie in den Dokumenten unter github cd Document / Github / yourproject gespeichert. Danach können Sie beliebige git-Befehle haben

Vielen Dank

keyo
quelle
2

Gehen Sie zu Ihrem Quellordner, in dem das lokale Repo gespeichert ist. Mein Beispiel befindet sich in c: / GitSource. Klicken Sie mit der rechten Maustaste, während Sie sich im Ordner befinden. Klicken Sie hier auf git bash und dann auf git status.

wesley7
quelle
2

GIT_DIR sollte nicht gesetzt sein: unset GIT_DIR

okwap
quelle
2

In meinem Fall war die Datei .git / HEAD beschädigt (enthielt nur Punkte). Also habe ich es bearbeitet und seinen Inhalt ersetzt durch:

ref: refs/heads/master

und es fing wieder an zu arbeiten.

Cryss
quelle
1

Für mich hing dies mit missbräuchlichem Eigentum auf meinem .git/Weg zusammen. rootim Besitz .git/HEADund .git/indexverhindert, dass der jenkinsBenutzer den Job ausführt.

Hugh Esco
quelle
1
Dies scheint in der Befehlszeile nicht reproduzierbar zu sein. Nachdem ich den Besitz von .git/HEADund festgelegt .git/indexhabe root:root, kann ich weiterhin fehlerfrei Fernbedienungen hinzufügen. Wenn ich den Besitz des gesamten .gitVerzeichnisses auf ändere root, wird ein anderer Fehler angezeigt : error: could not lock config file .git/config: Permission denied.
Kyle Strand
1

Der folgende Fehler scheint, als hätte Gits die .git-Datei nicht im aktuellen Verzeichnis gefunden, sodass eine Fehlermeldung ausgegeben wird.

Wechseln Sie daher in das Verzeichnis in das Repository-Verzeichnis, in dem Sie den Code von git auschecken müssen, und führen Sie diesen Befehl aus.

  • $ git checkout
Ajay Kumar
quelle
1

In meinem Fall stellte ich fest, dass Git in Windows ab einem bestimmten Zeitpunkt zwischen Groß- und Kleinschreibung für den Laufwerksbuchstaben unterschied.

Nach dem Upgrade von git binary in Windows wurden die CLI-Befehle, die früher funktionierten, gestoppt. Der Pfad im Skript war beispielsweise D : \ bla \ file.txt, während der Befehl git nur d : \ bla \ file.txt akzeptierte

ilane
quelle
1

git funktionierte einwandfrei und plötzlich zeigte es diese fatal: Not a git repository (or any of the parent directories): .gitNachricht.

Da ich nicht sicher bin, was im .git-Ordner beschädigt ist, habe ich git clone ** newfolderden gesamten .git-Ordner in meinen beschädigten / alten Ordner kopiert, in dem ich Änderungen vorgenommen habe, bevor git eine Fehlermeldung anzeigt.

Alles wurde wieder normal und Git erkannte auch meine geänderten / nicht bereitgestellten Dateien.

Neel
quelle
0

Stellen Sie die .git/ORIG_HEADund andere Root-.git-Repo-Dateien wieder her

Ich habe diesen Fehler nach dem Wiederherstellen aus dem Backup erhalten. Anscheinend haben es die im Stammverzeichnis von .git enthaltenen Dateien nicht zum Ziel geschafft, aber alle Unterordner haben dies getan. Zuerst dachte ich, das Repo sei intakt.

Ich habe es behoben, indem ich die Root-Dateien wiederhergestellt habe.

AndrewD
quelle
0

Ich hatte dieses Problem mit dem Jenkins Git-Plugin nach Authentifizierungsproblemen mit GitLab. Jenkins berichtete 'hudson.plugins.git.GitException: [...] stderr: GitLab: Das gesuchte Projekt konnte nicht gefunden werden. fatal: Konnte nicht aus dem Remote-Repository lesen. '

Wenn ich jedoch einen 'Git-Klon' oder 'Git-Abruf' direkt über die Jenkins-Box (Befehlszeile) durchgeführt habe, hat dies ohne Probleme funktioniert.

Das Problem wurde behoben, indem das gesamte Verzeichnis / workspace im Jenkins-Jobordner für diesen bestimmten Job gelöscht wurde , z

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

Vermutlich war der lokale .git-Ordner veraltet / beschädigt?

GreensterRox
quelle
0

Dies kann auch an Berechtigungen liegen. Überprüfen Sie die Eigentümer- / Gruppenberechtigungen und stellen Sie sicher, dass Sie über ausreichende Berechtigungen für den Zugriff auf diese Daten verfügen. In meinem Fall bin ich auf diesen Fehler gestoßen, als ich "git status" in einem Repo ausgeführt habe, dessen Besitz auf root: root festgelegt war. Das Ausführen von "Git Status" als Root löste mein Problem. Wenn Sie nicht möchten, dass der Benutzer- / Gruppenbesitz root: root ist, können Sie das Repo alternativ in etwas zerlegen, auf das Sie Zugriff haben.

EliT
quelle
0

Ich hatte dieses Problem und habe es durch Hinzufügen der Datei README.md behoben

Supun Kavinda
quelle