Come inserire il comando con password per git pull?


140

Voglio fare questo comando in una riga:

git pull && [my passphrase]

Come farlo?


puoi cambiare la tua passphrase in modo che sia vuota seguendo questa guida: help.github.com/articles/working-with-ssh-key-passphrases
jacerate

1
È possibile eludere la necessità di digitare una passphrase se si esegue l'agente ssh. La prima volta che esegui un pull git, lo fai in modo interattivo e l'agente ssh ricorderà la tua chiave privata e puoi eseguire git pull senza essere richiesto.
Tim Finer,

Risposte:


162

Questo non è esattamente quello che hai chiesto, ma per http (s):

  • puoi inserire la password nel file .netrc (_netrc su windows). Da lì sarebbe prelevato automaticamente. Andrebbe nella tua cartella home con 600 autorizzazioni.
  • potresti anche solo clonare il repository con https://user:pass@domain/repoma questo non è davvero raccomandato in quanto mostrerebbe il tuo utente / passaggio in molti luoghi ...
  • una nuova opzione è utilizzare l' helper delle credenziali . Si noti che le credenziali verranno archiviate in chiaro nella configurazione locale utilizzando l'helper delle credenziali standard. credenziali-helper con Wincred può essere utilizzato anche su Windows.

Esempi di utilizzo per l'helper delle credenziali

  • git config credential.helper store - memorizza le credenziali a tempo indeterminato.
  • git config credential.helper 'cache --timeout=3600'- memorizza per 60 minuti

Per l'accesso basato su ssh, useresti l'agente ssh che fornirà la chiave ssh quando necessario. Ciò richiederebbe la generazione di chiavi sul computer, l'archiviazione della chiave pubblica sul server remoto e l'aggiunta della chiave privata al keystore pertinente.


1
Puoi approfondire la parte SSH? Sto configurando un'istanza EC2 e vorrei che tirasse senza richiedere la mia password e la scalabilità automatica AWS. Questo schema pubblico / privato sembra una buona soluzione.
Pedro Dusso,

1
@PedroDusso suona come questo thread è quello che stai cercando
eis

2
ho finito con l'uso del meccanismo deploy keys, che sembra essere una buona soluzione. Grazie!
Pedro Dusso,

129

Ho trovato un modo per fornire le credenziali per una connessione https sulla riga di comando. Devi solo specificare l'URL completo per git pull e includere le credenziali lì:

git pull https://username:password@mygithost.com/my/repository

Non è necessario clonare il repository con le credenziali prima, ciò significa che le credenziali non finiscono .git/config. (Ma assicurati che la tua shell non ti tradisca e memorizzi la riga di comando in un file cronologico.)


la password non è richiesta e non è sicuro scrivere password in questo modo
meteor

non è questa una delle cose che ho elencato nella risposta accettata, già nel 2012?
eis,

8
@eis: Non esattamente. Il punto è che non è necessario clonare il repository con l'URL che include le credenziali, ma è comunque possibile estrarre dall'URL con le credenziali. L'effetto è che le credenziali non finiscono nel file .git / config.
Holgero,

5
Se si omette la :passwordparte, verrà richiesta la password dopo aver premuto Invio. In questo modo, la tua password non verrà salvata nella cronologia di bash.
Matthias Fischer,

1
Sì @PramodGarg use - nome utente git pull : password@mygithost.com/my/repository.git Branch
PAVITRA

39

Non risponde direttamente alla domanda, ma ho trovato questa domanda durante la ricerca di un modo, in sostanza, di non reinserire la password ogni volta che tiro su un server remoto .

Bene, gitti permette di memorizzare nella cache le tue credenziali per un tempo limitato. È personalizzabile in git confige questa pagina lo spiega molto bene:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

In un terminale, eseguire:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Per personalizzare il timeout della cache, è possibile:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Le credenziali verranno quindi archiviate in memoria per il periodo di tempo richiesto.


5

Si noti che il modo in cui l'helper delle credenziali git "memorizza" memorizzerà le password non crittografate cambia con Git 2.5+ (2 ° trimestre 2014).
Vedi commit 17c7f4d di Junio ​​C Hamano ( gitster)

credential-xdg

Modifica il " store" backend di esempio dell'helper delle credenziali per rispettare le posizioni dei file di configurazione XDG quando specificato.

Il documento ora dice:

Se non specificato:

  • le credenziali verranno cercate da ~/.git-credentialse $XDG_CONFIG_HOME/git/credentials, e
  • le credenziali verranno scritte ~/.git-credentialsse esiste o $XDG_CONFIG_HOME/git/credentialsse esiste e la prima no.

1

Di seguito cmd funzionerà se non abbiamo @ in password: git pull https://username:pass@word@mygithost.com/my/repository se hai @ in password, sostituiscilo con% 40 come mostrato di seguito: git pull https://username:pass%40word@mygithost.com/my/repository

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.