Otrzymywanie „krytycznego: nie repozytorium git” podczas próby zdalnego dodania repozytorium Git

439

Przedstawiam się Gitowi, wykonując ten samouczek:

Wszystko działa dobrze do momentu dodania repo do mojej lokalnej maszyny:

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

(Po zastąpieniu USERNAME, NFSNSERVER i REPOAME poprawnymi nazwami) pojawia się błąd:

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

Czy możesz mi pomóc przejść ten krok?

Corey
źródło
2
git initale upewnij się również, że żaden z podkatalogów nie ma własnego .gitfolderu
James Oravec

Odpowiedzi:

908

Czy zainicjowałeś lokalne repozytorium Git, do którego ten pilot ma zostać dodany?

Czy twój katalog lokalny ma .gitfolder?

Spróbować git init.

Assaf Lavie
źródło
2
Zrobiłem już ten krok, ale musiałem to zrobić ponownie po skonfigurowaniu konta stoczni silnikowej i zainstalowaniu stoczni silnikowej.
AVProgrammer,
3
mój .gitfolder zniknął. To git initsamo co usunięcie folderu repozytorium, a następnie git clone .... Wszystko, co muszę zrobić, topull
Francisco Corrales Morales
3
@FranciscoCorralesMorales, jeśli twój .gitfolder zniknął, możesz uruchomić git initponownie, aby utworzyć nowy. Musisz jednak ponownie dodać pilota, aby móc z niego wyciągnąć.
3
Otrzymałem ten sam błąd podczas przesyłania zmian z systemu lokalnego. Próbowałem git init i zadziałało. Dzięki!
rbashish
6
mój ma .git i już zrobiłem git init, ale dostaję błądjalal@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

Ten błąd pojawi się, jeśli spróbujesz użyć polecenia Git, gdy bieżący katalog roboczy nie znajduje się w repozytorium Git. Jest tak, ponieważ domyślnie Git będzie szukał .gitkatalogu repozytorium (wewnątrz katalogu głównego projektu?), Jak wskazano w mojej odpowiedzi na „Git nie wyświetli dziennika, chyba że jestem w katalogu projektu” :

Zgodnie z oficjalną dokumentacją Git jądra systemu Linux , GIT_DIRczy [zmienna środowiskowa] .gitjest domyślnie ustawiona na wyszukiwanie katalogu (w bieżącym katalogu roboczym?):

Jeśli GIT_DIRzmienna środowiskowa jest ustawiona, określa ścieżkę, która ma być używana zamiast domyślnej .gitdla podstawy repozytorium.

Musisz albo przejść cddo repozytorium / kopii roboczej, albo nie zainicjowałeś ani nie sklonowałeś repozytorium w pierwszej kolejności, w takim przypadku musisz zainicjować repozytorium w katalogu, w którym chcesz umieścić repozytorium:

git init

lub klonowanie repozytorium

git clone <remote-url>
cd <repository>
Społeczność
źródło
13
+1 za wzmiankę o GIT_DIR. w ramach przechwytywania w nagim repozytorium GIT_DIR jest ustawiony na „.” zamiast „.git”.
commonpike
+1 dla git init. Po przeczytaniu odpowiedzi na swoje pytanie, kiedyś to wiele razy na repozytoriach, że zrobił klona, ale nie zostały rozpoznane. Wygląda na to, że jest bezpieczny, gdy jest uruchamiany z drzewa katalogów, które powinno być git repository, ma wszystkie pliki w katalogu git, ale twierdzi, że nie jestfatal: Not a git repository (or any parent up to mount point
ElderDelp
34

Mój problem polegał na tym, że w przypadku niektórych problemów z moim systemem operacyjnym dowolne polecenie w moim lokalnym repozytorium zakończyło się słowem „fatal: Nie repozytorium git (ani żadnego z katalogów nadrzędnych): .git”, z dołączoną komendą fsck.

Problemem był pusty plik HEAD .

Byłem w stanie znaleźć rzeczywistą nazwę oddziału, nad którym pracowałem w .git / refs / heads, a następnie zrobiłem to:

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

Zadziałało.

Marcin TP Łuczyński
źródło
2
Mój plik HEAD został z jakiegokolwiek powodu uszkodzony, więc kazałem mu przywrócić go i naprawiłem problem
Steven,
1
Jesteś wielkim kumplem. Zaoszczędziłem mnóstwo czasu
Vaibhav Sah
To też był mój problem. Dzięki
Carlos Rafael Ramirez
3
Miałem Visual Studio otwarte podczas git rebase, a Visual Studio zauważyło zmianę pliku i wkrótce potem miałem niebieski ekran śmierci. Po ponownym uruchomieniu .git / HEAD został wypełniony wartościami NULLS, a kiedy zastąpiłem je pełnym hashem (5621afeffbabed40e3f386676068c45643644b7d) odczytanym gdzieś w rodzaju .git \ refs \ remotes \ origin \ master, git zaczął działać ponownie Potrzebowałem też stackoverflow.com/questions / 1115854 /… ponieważ to kazało mi usunąć .git / index i musiałem usunąć .git / index.lock przed wykonaniem resetu git. W porządku
Ivan
1
Prawie straciłem nadzieję na odzyskanie pracy. Po prostu kopiuję i wklejam twoje rozwiązanie i to zrobiło magię. Dzięki
Mukesh Kumar
17

UWAGA: nie jest to odpowiedź na typowy problem, który był problemem OP, ale na inny problem, w którym może pojawić się ten komunikat o błędzie. Nie miałem ochoty zadawać nowych pytań, żeby zapisać tę odpowiedź, powiedz, czy powinienem to zrobić zamiast tego: P.

Doszedłem do sytuacji, najprawdopodobniej z powodu zepsucia niektórych wypadków, które miałem, że dostałem ten błąd, nawet gdy .gitistniał.

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

Ponieważ nie miałem niczego, co naprawdę wymagałoby konserwacji, po prostu poszedłem obojętnie i ...

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

Nadal nie działa, jak na przykład git logzwraca fatal: bad default revision 'HEAD'. Były tam jednak piloty , więc zrobiłem to, git fetch --alla potem tylko po to, git reset --hard origin/masteraby przejść do stanu, w jakim było repo.

Zauważ, że jeśli istnieje jakieś niezatwierdzone zmiany, można zobaczyć je git status, git diffi tak dalej. Następnie tuż git diff yourfile > patchprzed uruchomieniem resetowania.

Przynajmniej dla mnie reflog ( git reflog) całkowicie zniknął. Dlatego jeśli wykonasz reset, a były pewne zmiany, którym chciałeś zapobiec, nie jestem pewien, czy możesz je odzyskać po resecie. Upewnij się więc, że masz kopię zapasową wszystkich zmian, których nie możesz utracić, ostatecznie kopiując klon przed wypróbowaniem tego.

Smar
źródło
Mam problem. I spróbowałem w sposób wspomniany przez @Smar, ale ten sam wynik „fatal ....”. Co dalej? jakieś sugestie?
Chaos
1
Ten problem wystąpił podczas korzystania z programu Visual Studio git initi git fetch --allnaprawiono go.
Morse
7
$ git status
fatal: Not a git repository:

Po prostu wpisz następujące polecenie w powłoce cmd lub git lub dowolnym innym terminalu:

$ git init
der_michael
źródło
6

Ten problem pojawił się po przeniesieniu lokalizacji projektu git w systemie plików. Gdy uruchomiłem kilka poleceń git, wystąpił błąd, np .:

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

Znalazłem w /home/rospasta/path_old/gitprojecta/.travis/.gitabsolutnej ścieżce starej lokalizacji projektu został napisany. Ręczne zaktualizowanie tej ścieżki nowej lokalizacji rozwiązało problem.

Więc mój problem może, ale nie musi być problemem git, ale HTH.

Izaak
źródło
5

Jeśli to pomaga komuś innemu, ten komunikat o błędzie pojawia się po przypadkowym usunięciu .git / objects /

fatal: Nie repozytorium git (ani żadnego z katalogów nadrzędnych): .git

Przywrócenie go rozwiązało problem.

eduherminio
źródło
4

W wierszu poleceń / CLI pojawi się ten błąd, jeśli bieżący katalog NIE jest repozytorium. Musisz więc najpierw włożyć CD do repozytorium.

Sid Smith
źródło
4

Prawdopodobnie za późno, ale inne rozwiązanie, które może pomóc przyszłym użytkownikom. Najpierw usuń stary .gitkatalog -

rm .git

Następnie ponownie zainicjuj repozytorium git

git init
kevthanewversi
źródło
6
Należy zauważyć, że to niszczy wszystkie metadane git, takie jak zatwierdzenia. Będziesz przechowywać swoje dane, ale Git „zacznie od nowa” - to może nie być dobra rzecz.
Joseph A.,
1
@JosephA .: masz rację, to nie jest optymalne. Czy istnieje lepsze rozwiązanie, które możesz zasugerować? Pojawia się fatalbłąd, mimo że .gitfolder istnieje.
Hassan Baig
Ale hej, czy zatwierdzenia nie są już na zdalnym repozytorium? Lub do czego naprawdę potrzebujesz commits na HD / lokalnie do ...? @JosephA.
kevthanewversi
Bo myślę, że nadal możesz robić rzeczy takie jak git revert, git reset bez posiadania informacji o zatwierdzeniu lokalnie ... prawda? @JosephA.
kevthanewversi
1
To wszystko wyciera! Prawdopodobnie najgorszy sposób na rozwiązanie tego problemu.
Richard Lalancette
4

Wygląda na to, że nie idziesz do określonego folderu. Na przykład, jeśli pracuję nad projektem o nazwie bugsBunny i jest on zapisany w folderze d: / work: code, więc najpierw musisz przejść do tego folderu za pomocą cd d: / work / code / bugsBunny, a następnie może nadal używać poleceń git.

Vikrant Singh
źródło
4

Nawet ja miałem ten sam problem. Napisałem skrypt powłoki, który wykona kopię zapasową wszystkich moich kodów na moim repozytorium git w dni robocze w tygodniu o 17:55 za pomocą crontab. widząc dzienniki crona znalazłem wyżej wspomniany problem.

powyższy problem pojawia się tylko wtedy, gdy próbujesz wykonać polecenia git z katalogu innego niż gir (tj. z innego katalogu, który nie jest kopią roboczą). aby naprawić ten dodatek -C <git dir>w wykonywanym poleceniu git w taki sposób, git statusaby był git -C /dir/to/git statusi git add -Abędzie git -C /dir/to/git -A.

Mani
źródło
3

W moim przypadku użyłem Tortoise SVN i popełniłem błąd, używając jednocześnie funkcji Visual Studio GIT. To spowodowało, że Visual Studio zablokował plik HEAD w folderze .git, aby ani VS, ani Tortoise nie miały dostępu do repozytorium, i wystąpił błąd „fatal: Not a git repo ...” z obu aplikacji.

Rozwiązanie:

  1. Wejdź do folderu .git i zmień nazwę „HEAD.lock” na „HEAD”
  2. Zdecyduj się na jedną aplikację administracyjną GIT i nie dotykaj drugiej
Adrian Rosca
źródło
3

W tym celu należy wprowadzić jedno polecenie, którego brakuje w poleceniach bitbucket

Spróbuj git init.

VIKAS KOHLI
źródło
2

w moim przypadku miałem ten sam problem podczas wypróbowywania dowolnych poleceń git (np. status git) za pomocą Windows cmd. więc po zainstalowaniu git dla okna https://windows.github.com/ w zmiennych środowiskowych dodaj ścieżkę klas git do zmiennej „PATH”. zazwyczaj git zostanie zainstalowany na C: / user / "username" / appdata / local / git / bin dodaj to do PATH w zmiennej środowiskowej

i jeszcze jedna rzecz na cmd przejdź do repozytorium git lub płyty CD, gdzie klon znajduje się w twoim oknie, zwykle będą one przechowywane w dokumentach pod github cd Document / Github / twój projekt, po czym możesz mieć dowolne polecenia git

Dziękuję Ci

keyo
źródło
2

Przejdź do folderu źródłowego, w którym przechowywane jest lokalne repo, przykład mój znajduje się w c: / GitSource, kliknij prawym przyciskiem myszy w folderze, kliknij tutaj git bash, a następnie status git ...

wesley7
źródło
2

GIT_DIR powinien być rozbrojony: unset GIT_DIR

okwap
źródło
2

W moim przypadku plik .git / HEAD był uszkodzony (zawierał tylko kropki). Zredagowałem go i zastąpiłem jego treść:

ref: refs/heads/master

i znów zaczęło działać.

cryss
źródło
1

Dla mnie było to związane ze zniekształconą własnością na mojej .git/ścieżce. rootbędący własnością użytkownika .git/HEADi .git/indexuniemożliwiający mu jenkinsuruchomienie zadania.

Hugh Esco
źródło
1
Nie wydaje się to powtarzalne w wierszu poleceń. Po ustawieniu własności .git/HEADi .git/indexdo root:root, nadal jestem w stanie dodać piloty bez błędu. Kiedy zmienić właściciela całego .gitkatalogu do roototrzymuję inny błąd: error: could not lock config file .git/config: Permission denied.
Kyle Strand
1

Poniższy błąd wydaje się, że Gits nie znalazł pliku .git w bieżącym katalogu, więc zgłasza komunikat o błędzie.

Dlatego zmień katalog na katalog repozytorium, w którym masz kod z git, a następnie uruchom tę komendę.

  • $ git kasa
Ajay Kumar
źródło
1

W moim przypadku okazało się, że git w Windows stał się wrażliwy na wielkość liter dla litery dysku.

Po aktualizacji git binary w Windows polecenia cli, które kiedyś działały, zostały zatrzymane. na przykład ścieżka w skrypcie to D : \ bla \ file.txt, podczas gdy polecenie git akceptuje tylko d : \ bla \ file.txt

ilane
źródło
1

git działał dobrze na be i nagle zaczął to pokazywać fatal: Not a git repository (or any of the parent directories): .git komunikat.

Dla mnie nie jestem pewien, co zostało uszkodzone w folderze .git, zrobiłem to git clone ** newfolder i skopiowałem cały folder .git do mojego uszkodzonego / starego folderu, w którym wprowadzałem zmiany, zanim git zaczął wyświetlać komunikat o błędzie ..

Wszystko wróciło do normy i git rozpoznał także moje zmienione / nieaktualizowane pliki.

Neel
źródło
0

przywróć .git/ORIG_HEADi inne główne pliki repozytoriów .git

Wystąpił ten błąd po przywróceniu z kopii zapasowej, najwyraźniej pliki zawarte w katalogu głównym katalogu .git nie dotarły do ​​celu, ale wszystkie podfoldery zrobiły to na początku, myślałem, że repo jest nienaruszone.

Naprawiłem to, przywracając pliki root.

AndrewD
źródło
0

Miałem ten problem z wtyczką Jenkins Git po problemach z uwierzytelnianiem w GitLab. Jenkins zgłaszał „hudson.plugins.git.GitException: [...] stderr: GitLab: Nie można znaleźć projektu, którego szukasz. fatal: Nie można odczytać ze zdalnego repozytorium. ”

Jednak jeśli zrobiłem „git clone” lub „git fetch” bezpośrednio z pola Jenkinsa (linia poleceń), działałoby to bez problemu.

Problem został rozwiązany przez usunięcie całego katalogu / workspace w folderze zadań Jenkins dla tego konkretnego zadania, np

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

Prawdopodobnie lokalny folder .git stał się nieaktualny / uszkodzony?

GreensterRox
źródło
0

Może to również wynikać z uprawnień. Sprawdź uprawnienia właściciela / grupy i upewnij się, że masz odpowiednie uprawnienia dostępu do tych danych. W moim przypadku ten błąd wystąpił podczas uruchamiania „statusu git” w repozytorium, którego własność ustawiono na root: root. Uruchamianie „statusu git” jako root rozwiązało mój problem. Alternatywnie, jeśli nie chcesz, aby własność użytkownika / grupy była rootem: root, przejdź do repozytorium do czegoś, do czego masz dostęp.

EliT
źródło
0

Miałem ten problem i naprawiłem go, dodając plik README.md

Supun Kavinda
źródło