Comment entrer une commande avec mot de passe pour git pull?

140

Je veux faire cette commande en une seule ligne:

git pull && [my passphrase]

Comment faire?

Anton Medvedev
la source
vous pouvez changer votre phrase de passe pour qu'elle soit vide en suivant ceci: help.github.com/articles/working-with-ssh-key-passphrases
jacerate
1
Vous pouvez éviter de saisir une phrase de passe si vous exécutez l'agent ssh. La première fois que vous faites un git pull, vous le faites de manière interactive, et l'agent ssh se souviendra de votre clé privée et vous pouvez exécuter git pull sans y être invité.
Tim Finer

Réponses:

162

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

  • vous pouvez mettre le mot de passe dans le fichier .netrc (_netrc sous Windows). De là, il serait ramassé automatiquement. Il irait dans votre dossier personnel avec 600 autorisations.
  • vous pouvez également simplement cloner le dépôt avec, https://user:pass@domain/repomais ce n'est pas vraiment recommandé car cela montrerait votre utilisateur / pass dans de nombreux endroits ...
  • une nouvelle option consiste à utiliser l' assistant d'identification . Notez que les informations d'identification seraient 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é sur Windows.

Exemples d'utilisation de l'assistant d'identification

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

Pour l'accès basé sur ssh, vous utiliserez l'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é.

eis
la source
1
Pouvez-vous élaborer sur la partie SSH? Je suis en train de configurer une instance EC2 et j'aimerais qu'elle tire sans demander mon mot de passe et l'autoscale AWS. Ce schéma public / privé semble être une bonne solution.
Pedro Dusso
1
@PedroDusso sonne comme si ce fil est ce que vous recherchez
eis
2
J'ai fini d'utiliser le mécanisme de déploiement des clés, qui semble être une bonne solution. Merci!
Pedro Dusso
129

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 de git pull et d'y inclure les informations d'identification:

git pull https://username:password@mygithost.com/my/repository

Vous n'avez pas besoin de faire cloner le référentiel avec les informations d'identification auparavant, cela signifie que vos informations d'identification ne se retrouvent pas .git/config. (Mais assurez-vous que votre shell ne vous trahit pas et stocke la ligne de commande dans un fichier d'historique.)

Holgero
la source
mot de passe n'est pas requis, et il n'est pas sûr d'écrire le mot de passe de cette façon
météore
n'est-ce pas l'une des choses que j'ai énumérées dans la réponse acceptée, déjà en 2012?
eis
8
@eis: Pas exactement. Le fait est que vous n'avez pas besoin de cloner le référentiel avec l'URL qui inclut les informations d'identification, mais que vous pouvez toujours extraire de l'URL avec les informations d'identification. L'effet est que les informations d'identification ne se retrouvent pas dans le fichier .git / config.
holgero
5
Si vous omettez la :passwordpartie, vous serez invité à entrer le mot de passe après avoir appuyé sur Entrée. De cette façon, votre mot de passe ne sera pas enregistré dans l'historique bash.
Matthias Fischer
1
Oui @PramodGarg use - git pull username: [email protected]/my/repository.git Branch
PAVITRA
39

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

Eh bien, gitvous permet de mettre en cache vos informations d'identification pendant une durée limitée. Il est personnalisable git configet cette page l'explique très bien:

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

Dans un terminal, exécutez:

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

Pour personnaliser le délai d'expiration du cache, vous pouvez faire:

$ 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 ensuite stockées en mémoire pendant la durée demandée.

Jivan
la source
5

Notez que la façon dont l'assistant d'informations d'identification git «stockera» les changements de mots de passe non chiffrés avec Git 2.5+ (Q2 2014).
Voir commit 17c7f4d par Junio ​​C Hamano ( gitster)

credential-xdg

Ajustez le storebackend de l'exemple " " de l'assistant d'identification pour honorer les emplacements des fichiers de configuration XDG lorsqu'ils sont spécifiés.

Le doc dit maintenant:

Si non spécifié:

  • les informations d'identification seront recherchées à partir de ~/.git-credentialset $XDG_CONFIG_HOME/git/credentials, et
  • les informations d'identification seront écrites ~/.git-credentialssi elle existe, ou $XDG_CONFIG_HOME/git/credentialssi elle existe et que la première n'existe pas.
VonC
la source
1

Ci-dessous cmd fonctionnera si nous n'avons pas @ dans le mot de passe: git pull https://username:pass@[email protected]/my/repository Si vous avez @ dans le mot de passe, remplacez-le par% 40 comme indiqué ci-dessous: git pull https://username:pass%[email protected]/my/repository

Sagar Deshmukh
la source