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é?
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
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.
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.
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
credential.${remote}
etcredential.helper
. Y a-t-il une documentation que vous pourriez signaler car c'est la première fois que je lis à ce sujet.${remote}
est la partie protocole et nom d'hôte de l'URI que vous souhaitez cloner,helper
pointe vers un programme d'assistance.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
git config --global --unset credentials.helper
git config --unset credential.helper
Créer un fichier d'informations d'identification pour chaque dépôt: (à l'intérieur de chaque dépôt)
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.
la source