Ricezione “fatale: non un repository git” quando si tenta di aggiungere in remoto un repository Git

Mi sto presentando a Git seguendo questo tutorial:

  • ottenere jekyll in esecuzione su almostfreespeech.net

Tutto funziona bene fino alla parte in cui il repository viene aggiunto alla mia macchina locale:

git remote add nfsn ssh://[email protected]/home/private/git/REPONAME.git 

(Dopo aver sostituito USERNAME, NFSNSERVER e REPOAME con i nomi corretti), ricevo l’errore:

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

Puoi aiutarmi a superare questo passaggio?

Hai avviato un repository Git locale, nel quale dovrebbe essere aggiunto questo telecomando?

La tua directory locale ha una cartella .git ?

Prova git init .

Questo errore verrà visualizzato se si tenta di utilizzare un comando Git quando la directory di lavoro corrente non si trova all’interno di un repository Git. Questo perché, per impostazione predefinita, Git cercherà una directory di repository .git (all’interno della radice del progetto?), Come indicato dalla mia risposta a “Git non mostrerà il registro a meno che non sia nella directory del progetto” :

Secondo la documentazione ufficiale di Linux Kernel Git , GIT_DIR è [una variabile d’ambiente] impostata per cercare una directory .git (nella directory di lavoro corrente?) Per impostazione predefinita:

Se la variabile di ambiente GIT_DIR è impostata, specifica un percorso da utilizzare al posto del .git predefinito per la base del repository.

Avrai bisogno di inserire cd nel repository / copia di lavoro, o non hai inizializzato o clonato un repository in primo luogo, nel qual caso devi inizializzare un repository nella directory in cui vuoi posizionare il repository:

 git init 

o clonare un repository

 git clone  cd  

NOTA: questo non risponde al problema comune, che era il problema dell’OP, ma a diversi problemi in cui questo messaggio di errore può apparire. Non avevo voglia di fare una nuova domanda solo per scrivere questa risposta, dimmi se dovrei farlo invece: P

Sono arrivato alla situazione, molto probabilmente a causa di qualche corruzione di alcuni crash che ho avuto, che ho avuto questo errore anche quando esisteva .git .

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

Dal momento che non avevo nulla che necessitasse di preservare, sono andato alla cieca e ho fatto …

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

Non funziona comunque, come per esempio git log ritorna fatal: bad default revision 'HEAD' . I remoti erano lì, quindi ho fatto git fetch --all e poi solo git reset --hard origin/master per arrivare allo stato che era il repository precedente.

Nota che se ci sono alcune modifiche non vincolate, puoi vederle con git status , git diff e così via. Quindi basta git diff yourfile > patch prima di eseguire il reset.

Almeno per me il reflog ( git reflog ) è scomparso completamente. Quindi, se esegui il reset, e ci sono state alcune modifiche che volevi prevenire, non sono sicuro che potrai ripristinarle dopo il reset più. Quindi, assicurati di avere tutte le modifiche che non puoi perdere, in ultima analisi, semplicemente copiando il clone prima di provare questo.

Il mio problema era che per qualche intoppo con il mio sistema operativo qualsiasi comando sul mio repository locale terminava con “fatale: non un repository git (o nessuna delle directory madri): .git”, con il comando fsck incluso.

Il problema era il file HEAD vuoto .

Sono stato in grado di trovare il nome effettivo del ramo su cui ho lavorato in .git / refs / heads e poi ho fatto questo:

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

Ha funzionato.

Nella riga di comando / CLI, si otterrà questo errore se la directory corrente NON è il repository. Quindi, devi prima CD nel repository.

Questo problema mi è successo dopo aver spostato la posizione di un progetto git sul filesystem. Quando ho eseguito alcuni comandi git, si è verificato l’errore, ad esempio:

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

Ho trovato in /home/rospasta/path_old/gitprojecta/.travis/.git è stato scritto il percorso assoluto della vecchia posizione del progetto. L’aggiornamento manuale di questo percorso della nuova posizione ha risolto il problema per me.

Quindi il mio problema potrebbe o non potrebbe essere un problema git, ma HTH.

Probabilmente troppo tardi, ma un’altra soluzione che potrebbe aiutare i futuri visitatori. Prima cancella la vecchia directory .git

 rm .git 

Quindi inizializzare nuovamente il repository git

 git init 

Sembra che tu non stia andando alla tua cartella specifica. Ad esempio, se sto lavorando su un progetto chiamato bugsBunny e viene salvato nella cartella d: / work: code, quindi prima devi andare in quella cartella usando cd d: / work / code / bugBunny, poi dopo puoi continuare a usare i tuoi comandi git.

 $ git status fatal: Not a git repository: 

Digita quanto segue nel tuo cmd o git shell o in qualsiasi altro terminale:

 $ git init 

Per questo è necessario inserire un comando che manca dai comandi di bitbucket

Per favore prova git init.

Nel mio caso ho usato Tortoise SVN e ho commesso l’errore di utilizzare contemporaneamente le funzioni GIT di Visual Studio. Ciò ha consentito a Visual Studio di bloccare il file HEAD all’interno della cartella .git in modo che né VS né Tortoise potessero accedere al repository e ho ricevuto l’errore “fatale: non un repository git …” da entrambe le applicazioni.

Soluzione:

  1. Entra nella cartella .git e rinomina “HEAD.lock” in “HEAD”
  2. Decidi per un’applicazione di amministrazione GIT e non toccare l’altra

Anche io ho avuto lo stesso problema. Ho scritto uno script di shell che eseguirà il backup di tutti i miei codici sul mio repository git nei giorni lavorativi di una settimana alle 17:55 usando crontab. vedendo i log di cron ho trovato il problema sopra citato.

il problema precedente arriva solo quando si sta tentando di eseguire comandi git da una directory non-gir (cioè da un’altra dir che non è la copia di lavoro). per aggiustare questo add -C nel comando git che stai eseguendo in modo che git status stato git -C /dir/to/git status sia git -C /dir/to/git status e git add -A sarà git -C /dir/to/git -A

nel mio caso, ho avuto lo stesso problema mentre provavo qualsiasi comando git (es. stato git) usando windows cmd. quindi quello che faccio è dopo aver installato git per la finestra https://windows.github.com/ nelle variabili ambientali, aggiungere il percorso di class del git sul “PATH” varaiable. di solito il git verrà installato su C: / user / “username” / appdata / local / git / bin aggiungilo sul PATH nella variabile ambientale

e un’altra cosa sul cmd vai al tuo repository git o cd in cui i tuoi cloni sono nella tua finestra di solito saranno memorizzati sui documenti sotto github cd Document / Github / yourproject dopo di che puoi avere qualsiasi comando git

grazie

Sotto l’errore sembra che Gits non abbia trovato il file .git nella directory corrente, quindi lancia un messaggio di errore.

Pertanto, passare alla directory directory del repository in cui si verifica il codice da git e quindi eseguire questo comando.

  • $ git checkout

Vai alla tua cartella di origine dove è memorizzato il repository locale, esempio il mio si trova in c: / GitSource, tasto destro del mouse mentre nella cartella, fare clic su git bash qui, quindi git status ….

Per me, questo era legato alla proprietà malformata nel mio .git/ percorso. root posseduto .git/HEAD e .git/index , impedendo all’utente jenkins di eseguire il lavoro.

GIT_DIR dovrebbe essere distriggersto: unset GIT_DIR

Nel mio caso ho scoperto che git in windows è diventato case sensitive per la lettera di unità da un certo punto.

Dopo aver aggiornato git binary in Windows, i comandi cli che prima funzionavano erano fermi. per esempio il percorso nello script era D : \ bla \ file.txt mentre il comando git accettava solo d : \ bla \ file.txt

git stava lavorando bene per essere e all’improvviso ha iniziato a mostrarlo fatal: Not a git repository (or any of the parent directories): .git message.

Per me non sono sicuro di cosa sia stato danneggiato nella cartella .git, ho fatto git clone ** newfolder e git clone ** newfolder copiato l’intera cartella .git nella mia cartella danneggiata / vecchia dove stavo apportando delle modifiche prima che git iniziasse a mostrare un messaggio di errore ..

Tutto è tornato alla normalità e git ha anche riconosciuto i miei file modificati / non salvati.

ripristinare il file .git/ORIG_HEAD e altri file repo .git root

Ho ricevuto questo errore dopo aver ripristinato il backup, apparentemente i file contenuti nella directory principale .git non sono arrivati ​​alla destinazione, ma tutte le sottocartelle l’hanno fatto inizialmente, ho pensato che il repository fosse intatto.

L’ho risolto ripristinando i file di root.

Ho avuto questo problema con il plugin Git Jenkins dopo i problemi di autenticazione con GitLab. Jenkins stava segnalando ‘hudson.plugins.git.GitException: […] stderr: GitLab: il progetto che stavi cercando non è stato trovato. fatale: imansible leggere dal repository remoto. ‘

Tuttavia se ho fatto un ‘git clone’ o ‘git fetch’ direttamente dalla casella di Jenkins (riga di comando) ha funzionato senza problemi.

Il problema è stato risolto eliminando l’intera directory / spazio di lavoro nella cartella dei lavori di Jenkins per quel particolare lavoro, ad es

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

Presumibilmente la cartella .git locale era diventata stantia / corrotta?

Nel caso in cui aiuti qualcun altro, ho ricevuto questo messaggio di errore dopo aver eliminato accidentalmente .git / objects /

fatale: non un repository git (o nessuna delle directory madri): .git

Il ripristino ha risolto il problema.