Je travaille avec Git pour pousser les modifications dans un référentiel partagé sur HTTP/WebDAV, et Git demande un mot de passe pour chaque opération qui accède à la télécommande HTTP. Existe-t-il un moyen de faire de Git cache le mot de passe/que le serveur distant ne m'invite pas?
Le serveur Web distant doit être un Apache et peut éventuellement être reconfiguré si nécessaire.
La façon est d'utiliser ~/.netrc comme décrit à l'étape 3 de cette documentation Git :
Ensuite, ajoutez ce qui suit à votre $ HOME/.netrc (vous pouvez vous en passer, mais il vous sera demandé de saisir votre mot de passe beaucoup de fois):
machine <servername> login <username> password <password>
... et définissez les autorisations:
chmod 600 ~/.netrc
À partir de git 1.7.9, il semble que la voie à suivre serait l'API native d'assistance d'identification. Git est livré avec un texte en clair stockage des informations d'identification ou un temporaire moins pratique mais plus sécurisé cache des informations d'identification . Il est également possible d'utiliser des assistants d'identification tiers. Jusqu'à présent, je suis au courant de n assistant pour le Windows Credential Store natif , et celui qui s'intègre avec le trousseau OS X . (La version Git livrée par Homebrew a un binaire, tout comme d'autres distributions OS X Git. Github fournit également un binaire autonome .)
En règle générale, il devrait suffire de configurer une fois l'aide à l'identification:
git config --global credential.helper wincred
Ou au lieu de wincred
, utilisez celui qui convient à votre plate-forme. (Si le nom de l'exécutable d'assistance est git-credential-wincred
, la valeur à laquelle vous définissez l'option sera wincred
, etc.)
Les aides aux informations d'identification prennent également en charge la nécessité de disposer d'ensembles d'informations d'identification distincts pour les différents référentiels sur le même hôte.
Exécutez cette commande dans votre référentiel:
git config credential.helper store
Poussez ensuite vers le serveur une fois:
git Push
Les informations d'identification que vous utilisez pour envoyer au serveur seront enregistrées dans ~/.git-credentials
.
Instructions tirées de ce guide ici .
Pourquoi ne pouvez-vous pas simplement utiliser un mot de passe dans une URL distante?
$ git config remote.Origin.url = http://username:password@Origin_link.com/repository.git