web-dev-qa-db-fra.com

Nom d'utilisateur et mot de passe en commande pour git push

Il est possible de cloner un référentiel git en spécifiant le nom d'utilisateur et le mot de passe dans la commande. Exemple:

git clone https://username:[email protected]/file.git

Est-il possible de spécifier également le nom d'utilisateur et le mot de passe lors du transfert? Par exemple, si vous exécutez git Push Origin --all, vous obtenez un mot de passe. Je veux cela dans une 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 un nom d'utilisateur et un mot de passe avec une seule commande.) J'exécute Git Bash sous Windows 8.1.

77
Jake

Oui tu peux faire

git Push https://username:[email protected]/file.git --all

dans ce cas, https://username:[email protected]/file.git remplace la Origin dans git Push Origin --all

Pour voir plus d'options pour git Push, essayez git help Push

117
number5

J'ai utilisé le format ci-dessous

git Push https://username:[email protected]/file.git --all

et si votre mot de passe ou votre nom d'utilisateur contient @, remplacez-le par% 40

11
Hamidreza

Selon le documentation Git , le dernier argument de la commande git Push peut être le référentiel auquel vous voulez envoyer le message:

    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 un 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
Alexey Orlenko

C'est possible, mais avant git 2.9.3 (août 2016), un git Push afficherait l'intégralité de l'URL utilisée lors du repositionnement sur le référentiel cloné.
Cela inclurait votre nom d’utilisateur et votre mot de passe!

Mais pas plus: voir commit 68f3c07 (20 juil. 2016), et commit 882d49c (14 juil. 2016) par Jeff King (peff) .
(Fusionnée par Junio ​​C Hamano - gitster - dans commit 71076e1 , 8 août 2016)

Push: anonymiser l'URL dans la sortie d'état

Commit 47abd85 (fetch: Supprimez les noms d'utilisateur des URL avant de les stocker, 2009-04-17, Git 1.6.4) appris à récupérer pour rendre anonyme les URL.
Le but principal était d'éviter de coller des mots de passe dans les messages de fusion-validation, mais comme effet secondaire, nous évitons également de les imprimer au format stderr.

Le côté Push n’a pas le problème de fusion-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, qui ne sont pas particulièrement sécurisées.
Ainsi, les personnes devraient passer à l'aide d'assistants d'identification, ce qui permet de résoudre 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 à l'URL.

3
VonC

Git ne stockera pas le mot de passe lorsque vous utilisez des URL de ce type. Au lieu de cela, il ne stockera que le nom d'utilisateur, de sorte qu'il ne vous reste plus qu'à vous demander le mot de passe la prochaine fois. Comme expliqué dans le manuel , pour stocker le mot de passe, vous devez utiliser un assistant d'identification externe . Pour Windows, vous pouvez utiliser le Windows Credential Store for Git . Cet assistant est également inclus par défaut dans GitHub pour Windows .

Lors de son utilisation, votre mot de passe sera automatiquement mémorisé. Vous ne devez donc le saisir qu'une fois. Ainsi, lorsque vous clonerez, votre mot de passe vous sera demandé. Chaque nouvelle communication avec la télécommande ne vous demandera plus de saisir votre mot de passe. Au lieu de cela, l'assistant d'identification fournira l'authentification à Git.

Cela ne fonctionne bien entendu que pour l'authentification via https; Pour un accès SSH ([email protected]/repository.git), vous utilisez les clés SSH et celles que vous pouvez vous rappeler en utilisant ssh-agent (ou le spectacle de PuTTY si vous utilisez plink).

3
poke