¿Cómo ingresar el comando con contraseña para git pull?

140

Quiero hacer este comando en una línea:

git pull && [my passphrase]

¿Cómo hacerlo?

Anton Medvedev
fuente
puede cambiar su frase de contraseña para que esté vacía siguiendo esto: help.github.com/articles/working-with-ssh-key-passphrases
jacerate
1
Puede evitar la necesidad de escribir una frase de contraseña si ejecuta el agente ssh. La primera vez que realiza un git pull, lo hace de forma interactiva, y el agente ssh recordará su clave privada y puede ejecutar git pull sin que se le solicite.
Tim Finer

Respuestas:

162

Esto no es exactamente lo que solicitó, sino para http (s):

  • puede poner la contraseña en el archivo .netrc (_netrc en windows). Desde allí sería recogido automáticamente. Iría a su carpeta de inicio con 600 permisos.
  • también podría clonar el repositorio, https://user:pass@domain/repopero eso no es realmente recomendable, ya que mostraría su usuario / pase en muchos lugares ...
  • Una nueva opción es utilizar el asistente de credenciales . Tenga en cuenta que las credenciales se almacenarían en texto sin cifrar en su configuración local utilizando el asistente de credenciales estándar. credential-helper con wincred también se puede usar en windows.

Ejemplos de uso para credencial auxiliar

  • git config credential.helper store - almacena las credenciales indefinidamente.
  • git config credential.helper 'cache --timeout=3600'- almacena por 60 minutos

Para el acceso basado en ssh, usaría el agente ssh que proporcionará la clave ssh cuando sea necesario. Esto requeriría generar claves en su computadora, almacenar la clave pública en el servidor remoto y agregar la clave privada al almacén de claves correspondiente.

eis
fuente
1
¿Puedes dar más detalles sobre la parte SSH? Estoy configurando una instancia EC2, y me gustaría que se extraiga sin solicitar mi contraseña y la escala automática de AWS. Este esquema público / privado parece una buena solución.
Pedro Dusso
1
@PedroDusso parece que este hilo es lo que buscas
eis
2
Terminé usando el mecanismo de implementación de claves, que parece ser una buena solución. ¡Gracias!
Pedro Dusso
129

Encontré una forma de proporcionar credenciales para una conexión https en la línea de comando. Solo necesita especificar la URL completa para git pull e incluir las credenciales allí:

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

No necesita clonar el repositorio con las credenciales antes, esto significa que sus credenciales no terminan en .git/config. (Pero asegúrese de que su shell no lo traicione y almacene la línea de comando en un archivo de historial).

holgero
fuente
no se requiere contraseña, y esto no es seguro para escribir la contraseña de esta manera
meteorito
¿No es esta una de las cosas que enumeré en la respuesta aceptada, ya en 2012?
eis
8
@eis: No exactamente. El punto es que no necesita clonar el repositorio con la URL que incluye las credenciales, pero aún puede extraer de la URL con credenciales. El efecto es que las credenciales no terminan en el archivo .git / config.
holgero
55
Si omite la :passwordparte, se le pedirá la contraseña después de presionar enter. De esa manera, su contraseña no se guardará en el historial de bash.
Matthias Fischer
1
Sí @PramodGarg use - git pull nombre de usuario: contraseñ[email protected]/my/repository.git Branch
PAVITRA
39

No responde la pregunta directamente, pero encontré esta pregunta al buscar una forma de, básicamente, no volver a ingresar la contraseña cada vez que accedo a un servidor remoto .

Bueno, le gitpermite almacenar en caché sus credenciales durante un tiempo finito. Es personalizable git configy esta página lo explica muy bien:

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

En una terminal, ejecute:

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

Para personalizar el tiempo de espera de caché, puede hacer lo siguiente:

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

Sus credenciales se almacenarán en la memoria durante el tiempo solicitado.

Jivan
fuente
5

Tenga en cuenta que la forma en que el asistente de credenciales git "almacena" almacenará las contraseñas no cifradas cambia con Git 2.5+ (Q2 2014).
Ver commit 17c7f4d por Junio ​​C Hamano ( gitster)

credential-xdg

Ajuste el " store" backend de muestra del asistente de credenciales para respetar las ubicaciones del archivo de configuración XDG cuando se especifique.

El documento ahora dice:

Si no se especifica:

  • se buscarán credenciales desde ~/.git-credentialsy $XDG_CONFIG_HOME/git/credentials, y
  • las credenciales se escribirán ~/.git-credentialssi existe o $XDG_CONFIG_HOME/git/credentialssi existe y la primera no.
VonC
fuente
1

Debajo de cmd funcionará si no tenemos una contraseña @: git pull https://username:pass@[email protected]/my/repository si tiene una contraseña @, reemplácela por% 40 como se muestra a continuación: git pull https://username:pass%[email protected]/my/repository

Sagar Deshmukh
fuente