como configurar o nome de usuário e senhas para diferentes repositórios git?

9
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = [email protected]
[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

Agora, quero colocar minhas credenciais do git para github, gitlab e gitorious, para que não precise procurar as credenciais no navegador. Como isso pode ser feito, é automatizado?

Estou executando o zsh

    
por shirish 08.01.2017 / 03:02

2 respostas

10

Usando o SSH

A abordagem comum para lidar com a autenticação do git é delegá-lo ao SSH. Normalmente, você define sua chave pública SSH no repositório remoto ( por exemplo, no GitHub ) e, em seguida, usa que sempre que você precisar autenticar. Você pode usar um agente de chave, é claro, manipulado pelo ambiente de área de trabalho ou manualmente com ssh-agent e ssh-add .

Para evitar precisar especificar o nome de usuário, você também pode configurá-lo no SSH, em ~/.ssh/config ; por exemplo eu tenho

Host git.opendaylight.org
  User skitt

e depois eu posso clonar usando

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

(observe a ausência de um nome de usuário).

Usando gitcredentials

Se a abordagem SSH não se aplica ( por exemplo você está usando um repositório acessado via HTTPS), o git tem seu próprio jeito de lidar com credenciais, usando gitcredentials (e normalmente git-credential-store ). Você especifica seu nome de usuário usando

git config credential.${remote}.username yourusername

e o auxiliar de credencial usando

git config credential.helper store

(especifique --global se você quiser usar esta configuração em qualquer lugar).

Então, na primeira vez que você acessar um repositório, o git pedirá sua senha e ela será armazenada (por padrão, em ~/.git-credentials ). Acessos subseqüentes ao repositório usarão a senha armazenada em vez de perguntar a você.

    
por 08.01.2017 / 11:07
1

Para aqueles que acham isso depois - eu tive dificuldades com isso e finalmente fiz o trabalho

link

  1. Desativar globalmente:
    git config --global --unset credentials.helper
  2. Desativar localmente: (em cada repo) %código%
  3. Criar um arquivo de credencial para cada repo: (dentro de cada repo)

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

Não estou dizendo que é a melhor maneira ou a única maneira - mas funcionou para mim depois de várias horas frustrantes.

    
por 11.05.2018 / 19:48

Tags