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.

54
demandé sur Jake 2015-04-21 18:20:07

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

86
répondu number5 2015-04-21 15:28:40

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.

3
répondu Alexey Orlenko 2015-04-21 15:31:30

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).

3
répondu poke 2015-04-21 15:33:54

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 sortie

Commit 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.

3
répondu VonC 2016-08-11 09:02:47