web-dev-qa-db-fra.com

Comment entrer commande avec mot de passe pour git pull?

Je veux faire cette commande en une seule ligne:

git pull && [my passphrase]

Comment faire?

122
Anton Medvedev

Ce n'est pas exactement ce que vous avez demandé, mais pour http (s):

  • vous pouvez mettre le mot de passe dans un fichier .netrc (_netrc sous Windows). De là, il serait ramassé automatiquement. Il irait à votre dossier personnel avec 600 autorisations.
  • vous pouvez aussi simplement cloner le dépôt avec https://user:pass@domain/repo mais ce n'est pas vraiment recommandé car cela montrerait votre utilisateur/votre passe dans beaucoup d'endroits ...
  • une nouvelle option consiste à utiliser le assistant d'identification . Notez que les informations d'identification seront stockées en texte clair dans votre configuration locale à l'aide de l'assistant d'informations d'identification standard. credential-helper avec wincred peut également être utilisé sous windows.

Exemples d'utilisation pour assistant d'identification

  • git config credential.helper store - stocke les identifiants indéfiniment.
  • git config credential.helper 'cache --timeout=3600'- stocke pendant 60 minutes

Pour un accès basé sur ssh, vous utiliseriez un agent ssh qui fournira la clé ssh en cas de besoin. Cela nécessiterait de générer des clés sur votre ordinateur, de stocker la clé publique sur le serveur distant et d'ajouter la clé privée au fichier de clés approprié.

135
eis

J'ai trouvé un moyen de fournir des informations d'identification pour une connexion https sur la ligne de commande. Il vous suffit de spécifier l'URL complète à git et d'y inclure les informations d'identification:

git pull https://username:[email protected]/my/repository

Il n'est pas nécessaire que le référentiel soit cloné avec les informations d'identification auparavant, cela signifie que vos informations d'identification ne se retrouvent pas dans .git/config. (Mais assurez-vous que votre Shell ne vous trahit pas et stocke la ligne de commande dans un fichier d'historique.)

97
holgero

Ne répond pas directement à la question, mais j'ai trouvé cette question lorsque je cherchais un moyen de de ne pas ressaisir le mot de passe chaque fois que je tire sur un serveur distant .

Bien, git vous permet de mettre en cache vos identifiants pour une durée limitée. Il est personnalisable dans git config et cette page l'explique très bien:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Dans un terminal, lancez:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Pour personnaliser le délai de mise en cache, vous pouvez effectuer les opérations suivantes:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Vos informations d'identification seront alors stockées en mémoire pour la durée demandée.

31
Jivan

Notez que la manière dont "l'aide" de l'assistant des informations d'identification git "stocke" stocke les mots de passe non chiffrés change avec Git 2.5+ (T2 2014).
Voir commit 17c7f4d par Junio ​​C Hamano (gitster)

credential-xdg

Ajustez l'exemple de back-end "store" de l'assistant d'identification pour respecter les emplacements des fichiers de configuration XDG, le cas échéant.

Le doc dit maintenant:

Si non spécifié:

  • les références seront recherchées dans ~/.git-credentials et $XDG_CONFIG_HOME/git/credentials, et
  • les informations d'identification seront écrites dans ~/.git-credentials s'il existe, ou $XDG_CONFIG_HOME/git/credentials s'il existe et que l'ancien n'existe pas.
4
VonC