Rimuovi le credenziali da Git


624

Sto lavorando con diversi repository, ma ultimamente stavo solo lavorando in quello interno e tutto è stato fantastico.

Oggi ho dovuto impegnarmi e inserire il codice in un altro, ma ho dei problemi.

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed

Non c'è niente che io possa fare, che riporti l'inserimento della password.

Come posso ripristinare le credenziali sul mio sistema in modo che Git mi chieda la password di quel repository?

Ho provato:

  • git config --global --unset core.askpass

per disinserire la password

  • git config credential.helper 'cache --timeout=1'

per evitare la cache delle credenziali ...

Niente sembra funzionare; qualcuno ha un'idea migliore?


Hai un ~/.netrcfile?
Robinst

2
@robinst è un computer Windows e non riesco a trovare quel file, nemmeno da Git Bash ...
balexandre

@balexandre per un computer Windows, preferisco usare il nuovo helper di credenziali (git 1.8.3) netrc, che memorizzerebbe più credenziali in un file crittografato . È meglio che inserire la password ogni volta per ogni sessione, poiché la cache "memorizza" la password solo per un certo tempo. Vedi un esempio completo qui .
VonC,

Non ho .netrc. Ho un file in ~ (C: \ Users \ Myself) chiamato .git-credentials, ma cancellandolo non ha funzionato, sono ancora connesso a Git Shell. Inoltre, il Gestore credenziali del pannello di controllo non sembra memorizzare nulla. I file di configurazione Git locali e globali sembrano ok. Ho ereditato la mia postazione di lavoro da un dipendente che se ne è andato, quindi potrebbe essere che abbia impostato un meccanismo di caching delle credenziali non ortodosso che non ho idea di come disattivare. Spero che questo comportamento NON sia quello predefinito di Git Windows. Nella cache delle credenziali Mac è l'impostazione predefinita, ma almeno viene visualizzata in Accesso portachiavi.
damix911,

Una risposta più completa che funziona anche su Linux, Windows e Mac OS X stackoverflow.com/a/39944557/3906760
MrTux

Risposte:


655

Se questo problema si verifica su un computer Windows, procedere come segue.

  • Vai a Gestione credenziali
  • Vai a Credenziali di Windows
  • Elimina le voci in Credenziali generiche
  • Prova a connetterti di nuovo. Questa volta, dovrebbe richiedere il nome utente e la password corretti.

Vai a Gestione credenziali

Vai a Credenziali di Windows ed elimina le voci in Credenziali generiche


4
Questo è rilevante solo se il tuo credential.helper=manager. Per testare questo tipo git config --list. Se è impostato su, le storecredenziali non vengono archiviate nell'archivio credenziali ma vengono archiviate non crittografate.
Liam,

3
Ho dovuto solo cancellare le credenziali nominate git:https://github.come mi è stato chiesto di inserire il mio nome utente / passaggio la volta successiva che ho clonato un repository utilizzando PyCharm. Avevo più di un account github e quello sbagliato è stato memorizzato nella cache.
dotcomly

22
Se qualcuno lo sta cercando su una macchina localizzata tedesca, è "Anmeldeinformationsverwaltung" sul percorso Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung.
davidenke,

3
In alternativa è possibile modificare l'utente / passaggio in Credential Manager. Questo ha funzionato anche per me
Daniel Lerps,

L'eliminazione delle credenziali ha risolto il mio 403errore tramite Bitbucket.
Eido95,

674

La cache delle credenziali Git esegue un processo daemon che memorizza nella cache le credenziali e le distribuisce su richiesta. Quindi, uccidendo il tuo git-credential-cache - il processo demone butta via tutto questo e si traduce in una nuova richiesta della tua password se continui a usarla come opzione cache.helper.

È inoltre possibile disabilitare l'uso della cache delle credenziali Git mediante git config --global --unset credential.helper. Quindi reimposta questo e continueresti ad avere le credenziali memorizzate nella cache disponibili per altri repository (se presenti). Potrebbe anche essere necessario eseguire git config --system --unset credential.helperquesta operazione se è stato impostato nel file di configurazione del sistema (ad esempio Git per Windows 2).

Su Windows potresti stare meglio usando l' helper manager ( git config --global credential.helper manager). Questo memorizza le tue credenziali nell'archivio credenziali di Windows che ha un'interfaccia del Pannello di controllo in cui è possibile eliminare o modificare le credenziali archiviate. Con questo negozio, i tuoi dati sono protetti dal tuo login di Windows e possono persistere per più sessioni. L' helper manager incluso in Git per Windows 2.x ha sostituito l' helper wincred precedente che era stato aggiunto in Git per Windows 1.8.1.1. Un aiuto simile chiamato Winstore è disponibile anche online ed è stato utilizzato con GitExtensions in quanto offre un'interfaccia più guidata dalla GUI. L' helper manager offre la stessa interfaccia GUI di Winstore .

Estratto dalla pagina di supporto di Windows 10 in dettaglio il gestore delle credenziali di Windows:

Per aprire Credential Manager, digitare "credential manager" nella casella di ricerca sulla barra delle applicazioni e selezionare il pannello di controllo di Credential Manager .

Quindi selezionare Credenziali di Windows per modificare (= rimuovere o modificare) le credenziali git memorizzate per un determinato URL.


198
Ho trovato il pannello di controllo delle credenziali di Control Panel\User Accounts\Credential ManagerWindows in Windows 7
Steve Pitchers,

2
L'uccisione del processo non lascia tracce da qualche parte, in modo che sia ancora possibile accedere alla password? Secondo il manuale di git sono memorizzati in "testo normale".
Ufo

1
In Windows 8.1 le "Credenziali di Windows" si trovavano in Credenziali generiche e git: gitlab.com o il tuo server git preferito.
Jeff,

5
In Windows 8/10 le Impostazioni account utente dettagliate si trovano nel Pannello di controllo "classico", non nell'app "Impostazioni" (interfaccia utente moderna). Solo per evitare confusione.
DanielH,

1
in Windows 10 Vai a Pannello di controllo \ Tutti gli elementi del pannello di controllo \ Gestione credenziali. Potrebbe esserci una credenziale generica per GitHub. È possibile aggiornare il nome utente e la password lì.
Eldhose Abraham,

156

Riscrivi:

$ git config credential.helper store

E poi ti verrà chiesto di inserire nuovamente le tue credenziali.

AVVERTIMENTO

L'uso di questo aiuto memorizzerà le tue password non crittografate sul disco

Fonte: https://git-scm.com/docs/git-credential-store


37
questo comando non mi chiede di inserire di nuovo le mie credenziali, questo comando non sta facendo nulla
Shirish Herwade

3
@ShirishHerwade prova a usare git pull, poi vedrai una schermata di prompt
ismailcem

2
@jkokorian Per annullare questo comando, eliminare le righe pertinenti da .git/config.
Zenadix,

110

Ho affrontato lo stesso problema del PO. Stava prendendo le mie vecchie credenziali Git archiviate da qualche parte sul sistema e volevo usare Git con le mie nuove credenziali, quindi ho eseguito il comando

$ git config --system --list

Mostrava

credential.helper=manager

Ogni volta che mi esibivo git pushprendeva il mio vecchio nome utente che ho impostato molto tempo fa e volevo usare un nuovo account GitHub per inviare le modifiche. In seguito ho scoperto che le mie vecchie credenziali dell'account GitHub erano archiviate in Pannello di controlloAccount utenteGestione credenzialiGestisci credenziali di Windows .

Gestisci credenziali di Windows

Ho appena rimosso queste credenziali e quando l'ho eseguita mi git pushha chiesto le mie credenziali GitHub, e ha funzionato come un fascino.


Buona illustrazione del recente Git Credential Manager ( github.com/Microsoft/Git-Credential-Manager-for-Windows ) che funziona archiviando le credenziali ( github.com/Microsoft/Git-Credential-Manager-for-Windows/ numeri / ... ) +1
VonC

1
@VonC Mi ci è voluto un giorno per scoprirlo perché non ero a conoscenza di questo meccanismo di archiviazione delle credenziali.
Mourya,

È piuttosto recente. Grazie per averlo menzionato qui.
VonC,

Questa è probabilmente la risposta migliore di quella "accettata", il che per me implica la distruzione di tutte le credenziali. Sicuramente mi ha aiutato.
VictorLegros,

53

Prova a usare il comando seguente.

git credential-manager

Qui puoi ottenere varie opzioni per gestire le tue credenziali (controlla la schermata qui sotto).

Inserisci qui la descrizione dell'immagine

Oppure puoi anche provare direttamente questo comando:

git credential-manager uninstall

Ciò avvierà nuovamente la richiesta di password per ogni richiesta di interazione del server.


11
Perché sto ricevendo -git: 'credential-manager' is not a git command. See 'git --help'.
Saikat,

2
Non sono sicuro, perché non funziona per te, ma anche nell'ultima versione di Git, è disponibile. Si prega di fare riferimento a questo link per ulteriori informazioni - git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Himanshu Aggarwal

3
Ottenuto removal failed. U_U Press any key to continue... fatal: InvalidOperationException encountered. Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.(con la bella U_Uemoji dal nulla :))
Jeromej il

1
L'unica soluzione che ha funzionato per me su Windows con GitBash.
alain.janinm,

forse a parte, ma ho installato git tramite choco, e questo metodo di [disinstallazione] mi è stato utile per estrarre un repository su un computer distribuito senza memorizzare le credenziali
beep_check

32

Ho trovato qualcosa che ha funzionato per me. Quando ho scritto il mio commento all'OP non ero riuscito a controllare il file di configurazione del sistema:

git config --system -l

mostra a

credential.helper=!github --credentials

linea. L'ho disinserito con

git config --system --unset credential.helper

e ora le credenziali sono state dimenticate.


2
Inoltre, potrebbe essere necessario eseguire il comando suggerito in modo simile da 2-3 volte se sono stati configurati un paio di helper di credenziali. git config --global --unset credential.helpere forse solo git config --unset credential.helpernel tuo repository se in qualche modo lo avessi impostato esplicitamente lì.
dragon788,

grazie per la soluzione. Solo un dettaglio: nel mio caso ho dovuto lanciare il prompt dei comandi come amministratore
A.Joly

30

Nel mio caso, Git utilizza Windows per archiviare le credenziali.

Tutto quello che devi fare è rimuovere le credenziali archiviate archiviate nel tuo account Windows:

Menu credenziali di Windows


1
In cosa differisce da questa risposta ? o questo ?
Liam,

20
git config --list

mostrerà credential.helper = manager(questo è su una macchina Windows)

Per disabilitare questo nome utente / password memorizzati nella cache per la cartella git locale corrente, basta inserire

git config credential.helper ""

In questo modo, git richiederà ogni volta la password, ignorando ciò che è salvato all'interno di "manager".


Ho l'errore di seguito, git: 'credential-' is not a git command. See 'git --help'.ma per sicurezza sto annullando questa risposta perché è l'unico che mi ha fatto richiedere una nuova password. Mi chiedo, tuttavia, se questo non è solo mascherare il problema (la password è davvero rimossa?)
ribamar

No: sì rm -rf ~/.git-credentials. Si noti che può variare ( git help credential-store)
ribamar

scusa, davvero non funziona. chiederà di nuovo la password e la memorizzerà di nuovo. rimuoverei il mio voto se permesso.
Ribamar,

git config --unset credential.helpercancella la voce. Questa risposta la imposta semplicemente su stringa vuota e produce l'errore che @ribamar ha descritto nei commenti.
Dark Castle,

15

In Windows 2003 Server con "wincred" *, nessuna delle altre risposte mi ha aiutato. Ho dovuto usare cmdkey.

  • cmdkey /list elenca tutte le credenziali archiviate.
  • cmdkey /delete:Target elimina le credenziali con il nome "Destinazione".

cmdkey / list;  cmdkey / delete: Target

(* Per "wincred" intendo git config --global credential.helper wincred)


Sì, cmdkeyè la controparte della riga di comando delle credenziali di Windows descritte nella risposta scelta.
nicobo,

15

Questo errore appare quando si utilizzano più account Git sullo stesso computer.

Se stai usando macOS, puoi rimuovere le credenziali salvate di github.com .

Seguire i passaggi seguenti per rimuovere le credenziali di github.com .

  1. Apri Accesso portachiavi
  2. Trova Github
  3. Seleziona github.com e fai clic destro su di esso
  4. Elimina "github.com"
  5. Prova di nuovo a Push o Pull per git e ti verranno chieste le credenziali.
  6. Immettere credenziali valide per l'account del repository.
  7. Fatto

    inserisci qui la descrizione dell'immagine


Grazie, questo funziona perfettamente su mac os
babygame0ver

13

Devi accedere con i rispettivi github usernameepassword

Per cancellare il nome utente e la password in Windows

Pannello di controllo \ Account utente \ Gestione credenziali

Modifica le credenziali di Windows

Rimuovi l'utente esistente e ora vai al prompt dei comandi scrivi il comando push mostra un pop-up github per inserire il username/ emaile password.

Ora siamo in grado di spingere il codice dopo aver cambiato l'utente.


13

Ho avuto lo stesso errore quando facevo un 'git pull' ed è così che l'ho risolto.

  1. Cambia repository in HTTPS
  2. Esegui comando git config --system --unset credential.helper
  3. Esegui comando git config --system --add credential.helper manager
  4. Comando di prova git pull
  5. Inserisci le credenziali nella finestra di accesso che si apre.
  6. Git pull completato correttamente.

--sistema? Che dire di --global? Che dire di nessuna portata? Cosa significa l'ambito di impostazione?
masterxilo,

Solo con il passaggio 1 ho risolto il mio problema.
zzxwill,

11

Rimuovi questa riga dal tuo file .gitconfig che si trova nella cartella dell'utente attualmente connesso a Windows:

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"

Questo ha funzionato per me e ora quando spingo sul telecomando chiede nuovamente la mia password.


11

Devi aggiornarlo nel tuo Credential Manager.

Vai a Pannello di controllo> Account utente> Gestione credenziali> Credenziali di Windows. Vedrai le credenziali di Git nell'elenco (ad es. Git: https: //). Cliccaci sopra, aggiorna la password ed esegui il comando git pull / push dal tuo Git bash e non genererà più messaggi di errore.



10

Usando l'ultima versione di git per Windows su Windows 10 Professional e ho avuto un problema simile per cui ho due account GitHub diversi e anche un account Bitbucket, quindi le cose sono diventate un po 'confuse per VS2017, estensioni git e git bash.

Ho prima verificato come git stava gestendo le mie credenziali con questo comando (esegui git bash con comandi elevati o ottieni errori):

git config --list

Ho trovato la voce Credential Manager, quindi ho fatto clic sul pulsante START> digitato Credential Manager e ho fatto clic con il pulsante sinistro del mouse sull'icona sicura gialla di Credential Manager che ha avviato l'app. Ho quindi fatto clic sulle schede delle credenziali di Windows e ho trovato la voce per il mio account git corrente che si trovava a essere Bit-bucket, quindi ho eliminato questo account.

Ma questo non ha funzionato, quindi il passo successivo è stato quello di disimpostare le credenziali e l'ho fatto dalla directory del repository sul mio laptop che contiene il progetto GitHub che sto cercando di inviare al telecomando. Ho digitato il seguente comando:

git config --system --unset credential.helper

Quindi ho fatto un push git e mi è stato richiesto un nome utente GitHub che ho inserito (quello corretto di cui avevo bisogno) e quindi la password associata e tutto è stato inserito correttamente.

Non sono sicuro di quanto del problema possa andare avanti la maggior parte delle persone probabilmente lavora al di fuori del repository, ma devo lavorare su diversi e utilizzando provider diversi, quindi potrei riscontrare di nuovo questo problema.


ha funzionato per me .. grazie
Krishnamoorthy Acharya il

8

Nel mio caso, non sono riuscito a trovare le credenziali salvate in Gestione credenziali di Windows (Windows 7).

Sono stato in grado di ripristinare le mie credenziali eseguendo

git config --global credential.helper wincred

Onestamente, è stata una grandine Mary vedere se avrebbe cancellato le mie credenziali e funzionava davvero.


Questo ha funzionato per me; NON avevo una voce nel Gestore credenziali da eliminare.
bdwakefield,

7

È possibile rimuovere la riga credential.helper=!github --credentialsdal seguente file C:\Program Files\Git\mingw64\etc\gitconfigper rimuovere le credenziali per git


7
  1. Vai a C:\Users\<current-user>
  2. controlla il .git-credentialsfile
  3. Elimina il contenuto o modifica secondo le tue esigenze
  4. Riavvia il tuo terminale

l'unica soluzione che ha funzionato per me
Wachburn


6

Se vuoi che git dimentichi le vecchie credenziali salvate e reinserisca username e password, puoi farlo usando il comando seguente:

git credential-cache exit

Dopo aver eseguito il comando sopra, se si tenta di inviare qualcosa, verrà fornita l'opzione per immettere nome utente e password.


3

Ciò che finalmente risolto questo problema per me è stato l'uso del desktop GitHub, andare alle impostazioni del repository e rimuovere user: pass @ dall'URL del repository. Quindi, ho tentato di eseguire un push dalla riga di comando e mi sono state richieste le credenziali di accesso. Dopo aver messo quelli in tutto è tornato alla normalità. Sia Visual Studio che la riga di comando funzionano e, naturalmente, il desktop GitHub.

Desktop GitHub-> Repository-> Impostazioni repository-> Scheda Remota

Cambia repository remoto primario (origine) da:

https: //pork@muffins@github.com/MyProject/MyProject.git

Per:

https://github.com/MyProject/MyProject.git

Fai clic su "Salva"

Le credenziali verranno cancellate.


Ripristinare l'origine sullo stesso dalla riga di comando su Windows ha risolto il mio problema. Sto usando GitLab quindi non ho potuto usare GitHub Desktop per questo.
David Vargas,

3

Per utenti macOS:

Questo errore appare quando si utilizzano più account Git sullo stesso computer.

Seguire i passaggi seguenti per rimuovere le credenziali di github.com.

  1. Vai al Finder
  2. Vai su Applicazioni
  3. Vai alla cartella Utilità
  4. Apri Accesso portachiavi
  5. Seleziona github.com e fai clic destro su di esso

    Elimina "github.com"

Prova di nuovo a Push o Pull per git e ti verranno chieste le credenziali. Immettere credenziali valide per l'account del repository. Fatto


3

Per Windows 10, vai al percorso seguente,

Pannello di controllo \ Account utente \ Gestione credenziali

Ci saranno 2 schede in questa posizione,

  1. Credenziali Web e 2. Credenziali di Windows.

Fai clic sulla scheda Credenziali di Windows e qui puoi vedere le tue credenziali github memorizzate, sotto l'intestazione "Credenziali generiche".

Puoi rimuoverli da qui e provare a ripetere la clonazione: chiederà nome utente / password ora poiché abbiamo appena rimosso le credenziali archiviate dai sistemi Windows 10


2

Per cancellare i gestori delle credenziali Git per la cache di Windows:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

o

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

2

Prova questo quando nulla come menzionato sopra funziona per te.

git config credential.helper 'cache --timeout=30'

ciò rimuoverà la cache ogni 3 secondi e richiederà nome utente e password. È possibile rieseguire il comando con valori di timeout aumentati.


1

Nel nostro caso, la cancellazione della password nel file .git-credentials dell'utente ha funzionato per noi.

c:\users\[username]\.git-credentials

Sì, molte altre persone lo hanno già affermato numerose volte
Liam,

1

Sulla base della risposta più votata di @ patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):

La sua risposta usa ma non spiega le configurazioni "local" vs. "global" vs. "system". La documentazione ufficiale di GIT per loro è qui e vale la pena di leggerla.

Ad esempio, sono su Linux e non uso una configurazione di sistema , quindi non uso mai un --systemflag, ma di solito ho bisogno di differenziare tra --locale le --globalconfigurazioni.

Il mio caso d'uso è che ho due criteri di Github; uno per lavoro e uno per gioco.

Ecco come gestirò il problema:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store

Vale anche la pena notare che ci sono modi per evitare del tutto questo problema, ad esempio, è possibile utilizzare quelli ~/.ssh/configcon le chiavi SSH associate per Github (uno per lavoro, uno per gioco) e host remoti di conseguenza personalizzati per risolvere anche la contestualizzazione dell'autenticazione.


1

Per aggiungere a @ericbn 's https://stackoverflow.com/a/41111629/579827 qui ci sono comandi di esempio che ho inserito in uno script corro per aggiornare tutte le mie password ogni volta che si rinnovano. Probabilmente non è utilizzabile così com'è in quanto è piuttosto specifico, ma mostra l'utilizzo della vita reale di cmdkey.exe.

⚠ Questo è uno script di shell eseguito in Cygwin

⚠ Funziona perché utilizzo i repository git privati ​​che eseguono l'autenticazione con la stessa password (probabilmente non si desidera eseguire il loop over con le stesse credenziali, ma è possibile riutilizzare questo /listcomando di esempio per estrarre un elenco di credenziali già registrate) ⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done

0

Se si esegue l'autenticazione utilizzando la coppia di chiavi, è possibile eliminare o spostare la chiave privata o interrompere l'agente chiave e provare.


2
sta usando https, quindi non c'è nessuna chiave coinvolta qui
CharlesB
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.