Tentativo di git pull con errore: impossibile aprire .git / FETCH_HEAD: autorizzazione negata


209

Aiutatemi per favore, sto cercando di eseguire questo nel mio terminale:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Quindi provo questo

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Aiutami, non capisco questo problema.


Hai aggiunto la tua chiave pubblica all'account github?
madhead

3
Hai il permesso di scrivere per la directory locale e i file in cui provi a fare pull? Inoltre, probabilmente sudonon aiuta affatto qui poiché ha bisogno dell'accesso alle chiavi ssh (non di root).
Benjamin Bannier,

Ho riscontrato questo problema e risolto concedendo al mio utente le autorizzazioni Modifica e accesso completo a quella cartella (Windows)
Frank,

Risposte:


193

Sembra che il primo non funzioni perché l'utente non ha i permessi per cambiare quella directory e il secondo perché l'utente root non ha le chiavi SSH giuste per accedere a quel repository git.

A seconda di ciò che si sta tentando di fare, potrebbe essere meglio clonare il repository in una directory diversa o forse chownla directory corrente per avere pieno accesso per l'utente


Sto affrontando il problema simile e non sono sicuro di poter www-dataautorizzare il mio utente ad aggiornare la .gitdirectory. Sto chiamando lo script della shell usando php su http nel browser. Dettagli qui
KillABug

13
Questo accade spesso quando dimentichi accidentalmente di aver corso sudo sue di agire come root in un repository. Un semplice sudo chown -R <username> .in quella directory funziona magicamente!
Ray

149

Controlla se disponi di autorizzazioni sufficienti per la .git/directory. Dovresti avere i permessi di scrittura. Puoi impostarli con il seguente comando.

Vai alla cartella del tuo progetto:

chown -R youruser:yourgroup .git/

1
Questo mi dàchown: youruser: Invalid argument
zakdances

43
Dovrebbe esserechown -R youruser .git/
mescola il

1
Ho dovuto chown .git/e la sua cartella principale per farlo funzionare
zadubz,

Questo sembra un problema molto comune .. ok se lavori con un utente diverso e qualcosa da un altro utente hai cambiato le tue autorizzazioni è un po 'complicato.
René Höhle l'

Se chownnon funziona, esegui anche questo comandosudo chmod 0777 -R .git/
Kiran

49

Se vuoi dare il permesso al gruppo,

sudo chmod g+w .git -R

ha funzionato meglio per me.

Per MacOS

sudo chmod -R g+w .git 

29

Questo è un problema di autorizzazione UNIX. Non utilizzare sudoper la clonazione del repository. Non hai le stesse chiavi ssh di root e non dovresti comunque lavorare come root. Prova ls -laa trovare le autorizzazioni sui file e usa chmod(o sudo chown) per risolverli. Spero che aiuti.


Esattamente questo! Mi sono imbattuto in questo problema perché ho dovuto fare sudo cloneper accettare il nuovo accordo di licenza di XCode. La risposta è accettare l'accordo, quindi clonare senza sudo.
Barnaby,


21

La risposta a questo problema assicurati che .git / FETCH_HEAD abbia i privilegi di scrittura e sarai pronto.

Ho avuto questo problema su Windows ed è stato risolto dando autorizzazioni di scrittura.

In unix si può eseguire chmod a+rw .git/FETCH_HEADdal repository del progetto dopo il quale dovrebbe funzionare.


non funziona da .git/FETCH_HEADsolo se il problema con le autorizzazioni è attivo .git.
Cœur

17

Prova in questo modo,

Passaggio 1: controlla prima chi sei? restituirà il nome utente corrente, ad esempio ubuntu

$ whoami 

Passaggio 2: Quindi impostare l'autorizzazione per l'utente corrente, in tal caso, Ubuntu da

sudo chown -R ubuntu .git/

questo funziona per me mentre eseguo l'installazione del discorso su Amazon Lightsail Ubuntu
Jide,

11

Nel mio caso, avevo solo accesso in lettura al file .git / FETCH_HEAD. Ho dovuto fare "sudo chmod g + w .git / FETCH_HEAD" per poter fare una richiesta pull.


non funziona da .git/FETCH_HEADsolo se il problema con le autorizzazioni è attivo .git.
Cœur

Ho dovuto consentire l'accesso in scrittura alla cartella git per il grupposudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, soluzione perfetta.
Rishi Kulshreshtha,

9

Stavo avendo il primo problema (autorizzazione FETCH_HEAD negata) su Windows.

L'ho risolto eseguendo Git Bash come amministratore (tasto destro, esegui come amministratore).


9

Se non ti sei aggiunto al gruppo che possiede .git/, allora dovresti.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Cosa fa questo:

  1. scopre quale gruppo possiede .git/e aggiunge il tuo utente a quel gruppo.
  2. si assicura che i membri del gruppo dispongano delle stesse autorizzazioni del proprietario .git/.
  3. ripete questo per .gitignore, di cui probabilmente avrai bisogno
  4. disconnettersi e riconnettersi per aggiornare le autorizzazioni del file di appartenenza al gruppo

Se di recente hai fatto qualcosa del genere (ti sei aggiunto al gruppo che possiede .git/), devi disconnetterti e riconnetterti prima di poter scrivere .git/FETCH_HEADdurante il tuo git pull.


7

Imposta l'autorizzazione per l'utente corrente eseguendo il comando

$ sudo chown -R <username> .git/


6

Vai semplicemente alla tua cartella principale ed esegui questo comando:

chmod a+rw .git/FETCH_HEAD

4

Con Windows 7, quando avevo questo problema era perché avevo nascosto la cartella .git. I permessi andavano bene, era semplicemente nascosto. Mostrando la cartella risolto.


Directory nascosta, che avrebbe sbattuto.
Ian Newland,

4

Ciò risolverà tutte le autorizzazioni nella cartella

sudo chown -R $(whoami) ./

3

Questo ha funzionato per me:

  1. Fare clic con il tasto destro sulla cartella .git
  2. fai clic per ottenere informazioni
  3. imposta l'autorizzazione per il tuo utente
  4. fai clic sull'icona a forma di ingranaggio e fai clic su Applica agli elementi allegati

Niente più permesso negato errori in git. 🎉


2

Guarda il proprietario e il gruppo di .gitdirectory con (prima vai alla directory principale di .git) ll .git, guarda il gruppo e il proprietario della directory, aggiungi il tuo utente al gruppo del proprietario con sudo usermod -a -G yourusername groupsofonwner, quindi disconnetti => login e tutto sta funzionando .

Quindi nei summeries

  1. vai alla directory principale di git

    $cd your path
    
  2. trova il proprietario del gruppo della .gitdirectory

    $ll .git     
    
  3. aggiungi il tuo utente a quel gruppo

    $usermod -a -G yourusername ownergroupofgit
    
  4. Disconnettersi e accedere al sistema per rendere effettiva questa modifica.

  5. Divertirsi ;)


2

Ho avuto quel problema quando la cartella .git è nascosta e anche tutti i file in essa contenuti sono nascosti. Rendi nascosta solo la cartella .git senza l'aggiornamento dei file ricorsivi e funzionerà.


2

I motivi di questo errore potrebbero essere multipli, ma nel mio caso ho aggiornato il ramo con root, quindi quando ho provato ad aggiornarlo con un utente normale mi dà errore.

prova entrambe le soluzioni che uno dovrebbe funzionare per te

1- sudo chmod g+w .git -R

se non funziona, prova la prossima soluzione, spero che risolva il tuo problema

2 - rm -f .git/FETCH_HEAD

1

Ho ricevuto questo messaggio quando ho usato le estensioni git per Windows. La mia correzione era semplicemente chiudere le estensioni git e riaprire come amministratore



1

Questo problema si presenta quando non si concedono autorizzazioni sufficienti per la cartella .git. Risolvere questo problema-

  1. Prima vai alla tua directory di lavoro.
  2. Inserisci questo comando

    sudo chmod a + rw .git -R

Spero che sia d'aiuto..!!


1

Ho avuto esattamente lo stesso errore, ma nel mio caso il problema era il risultato della ricostruzione di Apache dopo un aggiornamento alla versione di PHP. Per farla breve, ho dimenticato di installare il modulo Apache 'suexec'.

Non aveva nulla a che fare con il gruppo o la proprietà. Mi ci sono voluti solo due giorni per capire, qualcuno mi ha sparato ...


1

Nel mio caso avevo un sistema a doppio avvio (Windows 10 e Linux) con cartella di progetto sul disco NTFS. Si è scoperto che su un altro aggiornamento Windows 10 abilitato da solo "avvio rapido" nelle sue impostazioni. Dopo averlo deselezionato in Windows, l '"errore: impossibile aprire .git / FETCH_HEAD: autorizzazione negata" in Linux era sparito.


0

Ho ottenuto questo perché avevo più di 1 account utente nella mia scatola. Ho effettuato l'accesso come utente A ed ero in una directory per l'utente B. L'utente A non aveva l'autorizzazione per le cose dell'utente B. Una volta capito che non ero dove pensavo di essere nel file system, questo errore aveva senso.


0

se si riscontra lo stesso problema nel server Windows, è necessario eseguire la riga di comando con autorizzazioni sufficienti, ad esempio l'autorizzazione dell'amministratore.


0

per l'utente MacOS (se High Sierra o versione successiva) utilizzare questo:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: nei sistemi Dual Boot, disattiva Fast Startup per Windows

Stavo riscontrando questo problema nel mio sistema Ubuntu / Windows a doppio avvio. Non sono riuscito a scrivere nulla in nessuna delle partizioni condivise con Windows (partizioni NTFS).

Recentemente ho reinstallato entrambi e ho dimenticato di disattivare "Fast Startup" in Windows. Tutto è tornato alla normalità dopo il riavvio di Windows, la disattivazione e il riavvio.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.