Nome utente e password nel comando per git push


107

È possibile clonare un repository git, specificando nome utente e password nel comando. Esempio:

git clone https://username:password@myrepository.biz/file.git

È possibile specificare anche il nome utente e la password quando si preme? In modo che, ad esempio, l'esecuzione git push origin --allproduca la richiesta di una password. Lo voglio in un comando.

(Sono consapevole della possibilità di impostare chiavi e altre soluzioni, ma voglio sapere se esiste un modo per continuare a utilizzare nome utente e password con un comando.) Sto eseguendo Git Bash su Windows 8.1.


Trovate una soluzione per git commit?
Nam Vu

Risposte:


157

Sì, puoi farlo

git push https://username:password@myrepository.biz/file.git --all

in questo caso https://username:password@myrepository.biz/file.gitsostituire originingit push origin --all

Per vedere più opzioni per git push, provagit help push


13
Nota che questo memorizzerà nome utente e password in testo non crittografato nella configurazione git.
colpisci il

4
invece della semplice password puoi usare l'hash della password
Vasiliy Vanchuk

1
@VasiliyVanchuk Che tipo di hash usi? Funziona per Github?
Raphi

14
cosa succede se la password contiene @?
Rahul Sharma

1
Consiglio di allegare il percorso completo con ' ', ad esempio:git push 'https://username:password@myrepository.biz/file.git'
AlikElzin-kilaka


3

Secondo la documentazione di Git , l'ultimo argomento del git pushcomando può essere il repository a cui vuoi eseguire il push:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

E il repositoryparametro può essere un URL o un nome remoto.

Quindi puoi specificare nome utente e password nello stesso modo in cui fai nel tuo esempio di clonecomando.


2
Sembra adatto, ma quando aggiungo il repository git con nome utente e password come argomento, come esempio, viene comunque richiesta la password.
Jake

3

Git non memorizzerà la password quando usi URL del genere. Invece, memorizzerà solo il nome utente, quindi deve solo chiederti la password la prossima volta. Come spiegato nel manuale , per memorizzare la password, è necessario utilizzare un helper di credenziali esterno . Per Windows, puoi usare l' Archivio credenziali di Windows per Git . Questo helper è incluso anche per impostazione predefinita in GitHub per Windows .

Quando lo usi, la tua password verrà automaticamente ricordata, quindi dovrai inserirla solo una volta. Quindi, quando cloni, ti verrà richiesta la password, e quindi ogni ulteriore comunicazione con il telecomando non ti richiederà di nuovo la password. Invece, l'helper delle credenziali fornirà a Git l'autenticazione.

Questo ovviamente funziona solo per l'autenticazione tramite https; per ssh access ( git@host.com/repository.git) usi le chiavi SSH e quelle che puoi ricordare di usare ssh-agent(o lo spettacolo di PuTTY se stai usando plink).


4
"Sono consapevole della possibilità di impostare chiavi e altre soluzioni, ma voglio sapere se esiste un modo per continuare a utilizzare nome utente e password con un solo comando".
Marvin

@Marvin Sono a conoscenza di questa osservazione, tuttavia non volevo solo inviare una risposta di due frasi, quindi ho incluso informazioni per altri utenti che potrebbero non essere interessati solo a connettersi tramite HTTPS.
colpisci il

4
Tuttavia, ancora non risponde alla sua domanda.
Marvin

3

È possibile ma, prima di git 2.9.3 (agosto 2016), a git pushstampava l'URL completo utilizzato quando si rimanda al repository clonato.
Ciò includerebbe il tuo nome utente e password!

Ma non di più: vedi commit 68f3c07 (20 luglio 2016) e commit 882d49c (14 luglio 2016) di Jeff King ( peff) .
(Fuso da Junio ​​C Hamano - gitster- in commit 71076e1 , 8 agosto 2016)

push: rende anonimo l'URL nell'output di stato

Commit 47abd85 (fetch: rimuove i nomi utente dagli URL prima di memorizzarli, 17-04-2009, Git 1.6.4) ha insegnato a fetch per rendere anonimi gli URL.
Lo scopo principale era quello di evitare di inserire le password nei messaggi merge-commit, ma come effetto collaterale, evitiamo anche di stamparle su stderr.

Il lato push non ha il problema del merge-commit, ma probabilmente dovrebbe evitare di stamparli su stderr . Possiamo riutilizzare la stessa funzione di anonimizzazione.

Si noti che affinché ciò avvenga, le credenziali dovrebbero apparire sulla riga di comando o in un file git config, nessuno dei quali è particolarmente sicuro.
Quindi le persone dovrebbero passare a utilizzare gli helper delle credenziali, il che elimina il problema.

Ma non è una scusa per non migliorare la situazione per le persone che per qualsiasi motivo finiscono per utilizzare le credenziali incorporate nell'URL.


1

Per chiunque abbia problemi con password con caratteri speciali, ometti la password e te la chiederà:

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git
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.