come impostare username e password per diversi repository git?


17
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = xxxx@xxxx.xxx
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

Ora voglio mettere le mie credenziali git per github, gitlab e gitorious così ogni volta che non devo cercare le credenziali nel browser. Come può essere fatto in modo che sia automatizzato?

Sto correndo zsh

Risposte:


21

Usando SSH

L'approccio comune per la gestione dell'autenticazione git è delegarlo a SSH. In genere si imposta la chiave pubblica SSH nel repository remoto ( ad es. Su GitHub ), quindi la si utilizza ogni volta che è necessario eseguire l'autenticazione. Ovviamente puoi usare un agente chiave, gestito dall'ambiente desktop o manualmente con ssh-agente ssh-add.

Per evitare di dover specificare il nome utente, è possibile configurarlo anche in SSH, in ~/.ssh/config; per esempio ho

Host git.opendaylight.org
  User skitt

e quindi posso clonare usando

git clone ssh://git.opendaylight.org:29418/aaa

(notare l'assenza di un nome utente lì).

utilizzando gitcredentials

Se l'approccio SSH non si applica ( ad es. Stai usando un repository a cui si accede tramite HTTPS), git ha il suo modo di gestire le credenziali, usando gitcredentials(e in genere git-credential-store). È possibile specificare il nome utente utilizzando

git config credential.${remote}.username yourusername

e l'helper delle credenziali utilizzando

git config credential.helper store

(specificare --globalse si desidera utilizzare questa configurazione ovunque).

Quindi la prima volta che accedi a un repository, git chiederà la tua password e verrà memorizzata (per impostazione predefinita in ~/.git-credentials). Gli accessi successivi al repository useranno la password memorizzata invece di chiederti.


1
puoi approfondire un po 'su credential.${remote} e credential.helper. C'è della documentazione che potresti segnalare in quanto questa è la prima volta che sto leggendo a riguardo.
shirish

Ho collegato alle manpage della mia risposta, questa è la documentazione. ${remote}è il protocollo e il nome host parte dell'URI che si desidera clonare, helperpunta a un programma di supporto.
Stephen Kitt,

1
C'è anche un capitolo di Pro Git sull'argomento.
Stephen Kitt,

7

Per quelli che lo trovano in seguito, ho avuto difficoltà con questo e alla fine l'ho fatto funzionare

https / credentials.helper / Ubuntu

  1. Disinserito a livello globale:
    git config --global --unset credentials.helper
  2. Disinserito localmente: (in ciascun repository) git config --unset credential.helper
  3. Crea file di credenziali per ciascun repository: (all'interno di ciascun repository)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

Non dire che è il modo migliore o l'unico - ma ha funzionato per me dopo diverse ore frustranti.


sembra essere simile a ciò che Stephen Kitt ha condiviso sopra.
shirish,

2
@shirish non proprio, il terzo punto era quello di cui avevo bisogno - opzione per specificare dove si trovano i file.
Mārtiņš Briedis,

@shirish; Inoltre, le istruzioni di Kitts non specificano la non impostazione delle credenziali, che è stata una componente cruciale per me poiché le avevo già impostate a livello globale.
SteveJ,

Ho anche avuto difficoltà con questo in quanto non è come se tutti i repository git. otterrai dalla stessa fonte / negozio. Il secondo è migliore, ma molto più frustante per funzionare nella realtà. Grazie ancora per averlo condiviso. @SteveJ
shirish,
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.