2013-04-17 15 views
29

ho bisogno di disattivare l'assistente credenziali per OS X: git credential-osxkeychaindisable git credenziale-osxkeychain

E 'disattivato sia nel file di configurazione globale e in quello locale, infatti ha mai ben abilitato. Tuttavia, continua a memorizzare i miei dettagli di accesso github.
Sono su un laptop, quindi non voglio l'accesso automatico senza password ai miei repository.
I utilizza le chiavi ssh. Questo è un nuovo computer e l'intera configurazione del sistema è ancora in corso.
Per ora ho usato il https arbitri pronti contro termine, e l'aiutante di credenziali continua a calci in

Questi sono i miei file conf:.


git config --edit =>

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = false 
[remote "origin"] 
    url = https://github.com/user/repo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[branch "develop"] 
    remote = origin 
    merge = refs/heads/develop 
[branch "deploy"] 
    remote = origin 
    merge = refs/heads/deploy 

git config --global --edit =>

[user] 
    email = **************** 
    name = tom 
[color] 
    ui = true 
[core] 
    editor = subl -w 
[github] 
    user = tompave 
[merge] 
    conflictstyle = diff3 
[push] 
    default = simple 

Inoltre, l'esecuzione di git config --global credential.helper non restituisce nulla (ed è vero).

Tuttavia, l'esecuzione di git config credential.helper restituisce osxkeychain!

Com'è possibile? Non riesco a vederlo nel file di configurazione locale, dove è impostato?

Ho provato a installarlo localmente per vedere cosa sarebbe successo, e lo ha fatto nello repodir/.git/config. Poi ho cancellato la voce ... ma l'helper è ancora qui e attivo.

Posso chiaramente vedere la sua entrata nel portachiavi OS X.
Posso eliminarlo e quindi git chiederà nuovamente la password ... ma non appena lo digito (diciamo, per uno git fetch), la voce nel portachiavi viene ripristinata.

risposta

57

Per aiutare a rintracciare l'impostazione, mi piacerebbe provare a utilizzare:

git config --local credential.helper 
git config --global credential.helper 
git config --system credential.helper 

Il primo verifica la configurazione repo locale, la seconda è la tua ~/.gitconfig, e il terzo è basato su cui è installato git .A seconda di quale si arriva mostrando di nuovo l'assistente delle credenziali, è possibile provare a utilizzare l'opzione equivalente --unset:

git config --local --unset credential.helper 
git config --global --unset credential.helper 
git config --system --unset credential.helper 

L'ultimo potrebbe non funzionare se non si dispone di autorizzazioni appropriate. Quindi potrebbe essere necessario eseguire l'ultimo sotto sudo affinché funzioni correttamente. FWIW, potresti aver installato per le immagini git pre-compilate per Mac OS X. Se fai il gatto /usr/local/git/etc/gitconfig, vedrai che imposta l'helper delle credenziali per te. Quindi l'ultimo comando di cui sopra potrebbe aiutare a risolvere quel problema.

+0

suona come la mia risposta, ma con più comemnds pratico, quindi +1 – VonC

+0

Grazie. interpretava erroneamente l'output, poiché pensavo che 'git config' considerasse le opzioni locali ... e non fosse a conoscenza di' --system'. ora il comando 'git config --system --edit' mostra chiaramente l'opzione osxkeychain Giudicando dall'output, sembra che 'git config --edit' sia interpretato con l'opzione' --local' abilitata di default – tompave

+0

Una 'git config' spoglia * li * guarda * tutto ciò, ma quando si va a cambiarne uno, un semplice 'git config' andrà per quello locale. È necessario uno di' --global' o '--system' quando si desidera modificare qualcosa di diverso dal git locale configura – jszakmeister

1

La configurazione stessa (git config --unset credential.helper) non è sufficiente.
Assicurati di interrompere qualsiasi processo git-credential-osxkeychain (come described here), o vedere se il problema persiste dopo un riavvio.

Inoltre, quando si utilizza GitHub per Mac, verificare se vi è una configurazione utilizzata internamente da questo strumento.
Ricordare che il solo git config controllerà il file di configurazione di sistema, globale e locale.

Nota: con git 2.9, è possibile impostare semplicemente credential.helper su "stringa vuota" per disabilitarlo: vedere "How do I disable git's credential helper for a single repository?".

+0

Penso che tu abbia perso qualcosa VonC. Il tuo link non va da nessuna parte. :-( – jszakmeister

+0

@jszakmeister collegamento risolto – VonC

+0

Grazie, mio ​​male, ho pensato che 'git config' avrebbe controllato quello locale ... – tompave

16

Le altre risposte sono state molto utili. Il credential.helper non si è mostrato per me in nessuna delle voci (specificando --local, --global, ecc.) E si è sempre mostrato su 'git config -l'. Usando il comando --show-origin ha dimostrato che proveniva da un file specifico per OS X.

$ git config --show-origin --get credential.helper 
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig osxkeychain 
+0

GRAZIE per il '--show-origin'. Ho dovuto usare 'git config --list --show-origin' per vedere dove l'helper di osxkeychain è stato referenziato e cambiare quella configurazione. – luk2302

+0

Quindi, come potrei disabilitare il portachiavi da lì? –

+1

@ A.Lau utilizzando 'sudo vi WhatEverLocationIsShownAfter" file: "' e rimuovendo la riga che imposta l'helper delle credenziali. – luk2302