Nom d'utilisateur et mot de passe en commande pour git push
Il est possible de cloner un dépôt git, en spécifiant le nom d'utilisateur et le mot de passe dans la commande. Exemple:
git clone https://username:password@myrepository.biz/file.git
Est-il possible de spécifier également le nom d'utilisateur et le mot de passe lors de la poussée? De sorte que, par exemple, l'exécution de git push origin --all
affichera alors demander un mot de passe. Je veux ceci en une seule commande.
(je suis conscient de la possibilité de configurer des clés et d'autres solutions, mais je veux savoir s'il existe un moyen de continuer à utiliser le nom d'utilisateur et le mot de passe avec une seule commande. Je suis exécution de Git Bash sur Windows 8.1.
4 réponses
Oui, vous pouvez faire
git push https://username:password@myrepository.biz/file.git --all
Dans ce cas, https://username:password@myrepository.biz/file.git
remplacer les origin
dans git push origin --all
Pour voir plus d'options pour git push
, Essayez git help push
Selon la documentation Git , le dernier argument de la commande git push
peut être le référentiel vers lequel vous voulez pousser:
git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
[<repository> [<refspec>…]]
Et le paramètre repository
peut être une URL ou un nom distant.
Vous pouvez donc spécifier le nom d'utilisateur et le mot de passe de la même manière que dans votre exemple de commande clone
.
Git ne stockera pas le mot de passe lorsque vous utilisez des URL comme ça. Au lieu de cela, il va simplement stocker le nom d'utilisateur, donc il n'a besoin que de vous demander le mot de passe la prochaine fois. Comme expliqué dans le manuel , pour stocker le mot de passe, vous devez utiliser un credential helper externe. Pour Windows, vous pouvez utiliser le magasin D'informations d'identification Windows pour Git . Cette aide est également incluse par défaut dans GitHub pour Windows .
Lorsque vous l'utilisez, votre mot de passe sera automatiquement rappelez-vous, donc vous avez seulement besoin de l'entrer une fois. Ainsi, lorsque vous clonez, il vous sera demandé votre mot de passe, puis chaque autre communication avec la télécommande ne vous demandera pas votre mot de passe à nouveau. Au lieu de cela, l'Assistant d'informations d'identification fournira à Git L'authentification.
Cela ne fonctionne bien sûr que pour l'authentification via https; pour l'accès ssh (git@host.com/repository.git
), vous utilisez des clés SSH et celles dont vous vous souvenez en utilisant ssh-agent
(ou Putty pageant si vous utilisez plink).
C'est possible mais, avant git 2.9.3 (août 2016), un git push
imprimerait l'url complète utilisée lors du renvoi au repo cloné.
Cela inclurait votre nom d'utilisateur et votre mot de passe!
, Mais pas plus: Voir commettre 68f3c07 (20 Juillet 2016), et commettre 882d49c (14 Juillet 2016) par Jeff King (peff
).
(Fusionné par Junio C Hamano -- gitster
-- dans commettre 71076e1, 08 Août 2016)
push
: anonymiser L'URL dans l'état sortieCommit 47abd85 (fetch: supprimer les noms d'Utilisateur des url avant de les stocker, 2009-04-17, git 1.6.4) enseigné fetch pour anonymiser les URL.
Le but principal était d'éviter de coller des mots de passe dans les messages merge-commit, mais comme effet secondaire, nous évitons également de les imprimer sur stderr.Le côté push n'a pas le problème merge-commit, mais Il devrait probablement éviter de les imprimer sur stderr. Nous pouvons réutiliser la même fonction d'anonymisation.
Notez que pour que cela se produise, les informations d'identification doivent apparaître soit sur la ligne de commande, soit dans un fichier de configuration git, dont aucune n'est particulièrement sécurisée.
Donc, les gens devraient passer à l'aide d'aides d'identification à la place, ce qui fait disparaître ce problème.Mais ce n'est pas une excuse pour ne pas améliorer la situation des personnes qui, pour une raison quelconque, finissent par utiliser des informations d'identification intégrées dans L'URL.