web-dev-qa-db-fra.com

comment configurer le nom d'utilisateur et les mots de passe pour différents git repos?

─[$] 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

Maintenant, je veux mettre mes informations d'identification git pour github, gitlab et gitorious afin que chaque fois je n'ai pas à rechercher les informations d'identification sur le navigateur. Comment cela peut-il être fait pour qu'il soit automatisé?

Je cours zsh

20
shirish

Utilisation de SSH

L'approche courante pour gérer l'authentification git consiste à la déléguer à SSH. En règle générale, vous définissez votre clé publique SSH dans le référentiel distant ( par exemple sur GitHub ), puis vous l'utilisez chaque fois que vous en avez besoin pour authentifier. Vous pouvez bien sûr utiliser un agent clé, géré par votre environnement de bureau ou manuellement avec ssh-agent et ssh-add.

Pour éviter d'avoir à spécifier le nom d'utilisateur, vous pouvez également le configurer dans SSH, dans ~/.ssh/config; par exemple j'ai

Host git.opendaylight.org
  User skitt

puis je peux cloner en utilisant

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

(notez l'absence d'un nom d'utilisateur ici).

Utilisation de gitcredentials

Si l'approche SSH ne s'applique pas ( par exemple vous utilisez un référentiel accessible via HTTPS), git a sa propre façon de gérer les informations d'identification, en utilisant gitcredentials (et généralement git-credential-store ). Vous spécifiez votre nom d'utilisateur en utilisant

git config credential.${remote}.username yourusername

et l'aide aux informations d'identification à l'aide

git config credential.helper store

(spécifiez --global si vous souhaitez utiliser cette configuration partout).

Ensuite, la première fois que vous accédez à un référentiel, git vous demandera votre mot de passe, et il sera stocké (par défaut dans ~/.git-credentials). Les accès ultérieurs au référentiel utiliseront le mot de passe stocké au lieu de vous le demander.

21
Stephen Kitt

Pour ceux qui trouvent cela plus tard - j'ai eu des difficultés avec cela et j'ai finalement fait fonctionner

https/credentials.helper/Ubuntu

  1. Désactiver globalement:
    git config --global --unset credentials.helper
  2. Désactiver localement: (dans chaque dépôt) git config --unset credential.helper
  3. Créer un fichier d'informations d'identification pour chaque dépôt: (à l'intérieur de chaque dépôt)

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

Je ne dis pas que c'est la meilleure ou la seule façon - mais cela a fonctionné pour moi après plusieurs heures frustrantes.

7
SteveJ