tener - Nombre de usuario y contraseña en comando para git push
¿qué herramienta podemos hacer para tener un mayor control de nuestros proyecto en github? (5)
Es posible clonar un repositorio git, especificando nombre de usuario y contraseña en el comando. Ejemplo:
git clone https://username:[email protected]/file.git
¿Es posible especificar también el nombre de usuario y la contraseña al presionar?
De modo que, por ejemplo, ejecutando
git push origin --all
, todos saldrán pidiendo una contraseña.
Quiero esto en un comando.
(Soy consciente de la capacidad de configurar claves y otras soluciones, pero quiero saber si hay una manera de seguir usando el nombre de usuario y la contraseña con un solo comando). Estoy ejecutando Git Bash en Windows 8.1.
De acuerdo con la
documentación de Git
, el último argumento del comando
git push
puede ser el repositorio al que desea enviar:
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>…]]
Y el parámetro del
repository
puede ser una
URL
o un nombre remoto.
Por lo tanto, puede especificar el nombre de usuario y la contraseña de la misma manera que lo hace en su ejemplo de comando
clone
.
Es posible, pero antes de git 2.9.3 (agosto de 2016), un
git push
imprimiría la url completa utilizada al regresar al repositorio clonado.
¡Eso incluiría su nombre de usuario y contraseña!
Pero no más: vea
commit 68f3c07
(20 de julio de 2016) y
commit 882d49c
(14 de julio de 2016) por
Jeff King (
peff
)
.
(Fusionada por
Junio C Hamano -
gitster
-
en
commit 71076e1
, 08 ago 2016)
push
: anonimizar URL en salida de estadoCommit 47abd85 (fetch: elimina los nombres de usuario de las URL antes de almacenarlos, 17/04/2009, Git 1.6.4) enseña fetch para anonimizar las URL.
El propósito principal era evitar pegar contraseñas en los mensajes de confirmación de fusión, pero como efecto secundario, también evitamos imprimirlos en stderr.El lado de inserción no tiene el problema de combinación de confirmación, pero probablemente debería evitar imprimirlos en stderr . Podemos reutilizar la misma función de anonimato.
Tenga en cuenta que para que esto suceda, las credenciales deberían aparecer en la línea de comando o en un archivo de configuración de git, ninguno de los cuales es particularmente seguro.
Por lo tanto, las personas deberían cambiar a usar ayudantes de credenciales, lo que hace que este problema desaparezca.Pero eso no es excusa para no mejorar la situación de las personas que, por cualquier motivo, terminan usando credenciales incrustadas en la URL.
Git no almacenará la contraseña cuando use URL como esa. En cambio, solo almacenará el nombre de usuario, por lo que solo necesita solicitarle la contraseña la próxima vez. Como se explica en el manual , para almacenar la contraseña, debe usar un auxiliar de credenciales externo. Para Windows, puede usar Windows Credential Store para Git . Este ayudante también se incluye de forma predeterminada en GitHub para Windows .
Al usarlo, su contraseña se recordará automáticamente, por lo que solo necesita ingresarla una vez. Por lo tanto, cuando clone, se le pedirá su contraseña, y luego cada comunicación adicional con el control remoto no le pedirá su contraseña nuevamente. En cambio, el asistente de credenciales proporcionará a Git la autenticación.
Por supuesto, esto solo funciona para la autenticación a través de https;
para el acceso ssh (
[email protected]/repository.git
) usa las claves SSH y las que puede recordar usando
ssh-agent
(o el concurso de PuTTY si está usando plink).
Si puedes hacer
git push https://username:[email protected]/file.git --all
en este caso
https://username:[email protected]/file.git
reemplaza el
origin
en
git push origin --all
Para ver más opciones para
git push
, prueba
git help push
Utilicé el siguiente formato
git push
https://username:[email protected]/file.git
--all
y si su contraseña o nombre de usuario contienen @ reemplácelo con% 40