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

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

shirish
la source

Réponses:

21

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 devez vous authentifier. Vous pouvez bien sûr utiliser un agent clé, géré par votre environnement de bureau ou manuellement avec ssh-agentet 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).

En utilisant 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 --globalsi 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.

Stephen Kitt
la source
1
pouvez-vous élaborer un peu sur credential.${remote} et credential.helper. Y a-t-il une documentation que vous pourriez signaler car c'est la première fois que je lis à ce sujet.
shirish
J'ai lié aux pages de manuel dans ma réponse, c'est la documentation. ${remote}est la partie protocole et nom d'hôte de l'URI que vous souhaitez cloner, helperpointe vers un programme d'assistance.
Stephen Kitt
1
Il y a aussi un chapitre de Pro Git sur le sujet.
Stephen Kitt
7

Pour ceux qui découvrent cela plus tard - j'ai eu des difficultés avec cela et j'ai finalement réussi à le faire fonctionner

https / credentials.helper / Ubuntu

  1. Désactiver globalement:
    git config --global --unset credentials.helper
  2. Désactiver localement: (Dans chaque repo) 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.

SteveJ
la source
semble être similaire à ce que Stephen Kitt a partagé ci-dessus.
shirish
2
@shirish pas vraiment, le troisième point était celui dont j'avais besoin - option pour spécifier où se trouvent les fichiers.
Mārtiņš Briedis
@shirish; De plus, les instructions de Kitts ne spécifient pas de définir les informations d'identification, ce qui était un composant crucial pour moi car je les avais déjà définies globalement.
SteveJ
J'ai également eu du mal avec cela car ce n'est pas comme si tous les git repos. vous obtiendrez proviendrait de la même source / magasin. Le second est meilleur mais beaucoup plus frustrant de travailler en réalité. Merci encore pour le partage. @SteveJ
shirish