Nombre de usuario y contraseña al command para git push

Es posible clonar un repository de git, especificando nombre de usuario y contraseña en el command. Ejemplo:

git clone https://username:password@myrepository.biz/file.git

¿Es posible también especificar el nombre de usuario y la contraseña al presionar? De modo que, por ejemplo, ejecutar git push origin --all saldrán y se pedirá una contraseña. Quiero esto en un solo command.

(Soy consciente de la capacidad de configurar keys y otras soluciones, pero quiero saber si hay una forma de seguir usando el nombre de usuario y la contraseña con un solo command). Estoy ejecutando Git Bash en Windows 8.1.

Sí, puedes hacer

git push https://username:password@myrepository.biz/file.git --all

en este caso https://username:password@myrepository.biz/file.git reemplaza el origin en git push origin --all

Para ver más opciones para git push , testing git help push

Git no almacenará la contraseña cuando uses URL así. En su lugar, solo almacenará el nombre de usuario, por lo que solo deberá solicitarle la contraseña la próxima vez. Como se explica en el manual , para almacenar la contraseña, debe usar un asistente de cnetworkingenciales externo. Para Windows, puede usar la Tienda de cnetworkingenciales de Windows para Git . Esta ayuda también se incluye por defecto en GitHub para Windows .

Al usarlo, su contraseña se recordará automáticamente, por lo que solo deberá ingresarla una vez. Por lo tanto, cuando realice la clonación, se le solicitará su contraseña, y luego cada comunicación adicional con el control remoto no le solicitará nuevamente su contraseña. En cambio, el asistente de cnetworkingenciales proporcionará a Git la authentication.

Esto, por supuesto, solo funciona para la authentication a través de https; para acceder a ssh ( git@host.com/repository.git ) utiliza keys SSH y aquellas que puede recordar utilizando ssh-agent (o el concurso de PuTTY si usa plink).

De acuerdo con la documentation de Git , el último argumento del command git push puede ser el repository al que desea presionar:

  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.

De modo que puede especificar el nombre de usuario y la contraseña de la misma forma que lo hace en su ejemplo de command de clone .

Es posible, pero, antes de git 2.9.3 (agosto de 2016), un git push imprimiría la url completa utilizada al retroceder al repository clonado.
¡Eso includeía su nombre de usuario y contraseña!

Pero no más: consulte commit 68f3c07 (20 de julio de 2016), y commit 882d49c (14 Jul 2016) por Jeff King ( peff ) .
(Fusionada por Junio ​​C Hamano – gitster – in commit 71076e1 , 08 de agosto de 2016)

push : anonimizar URL en salida de estado

Commit 47abd85 (fetch: quite los nombres de usuarios de las URL antes de almacenarlos, 2009-04-17, Git 1.6.4) enseñó fetch para anonimizar las URL.
El propósito principal era evitar las passwords en los posts de fusión y confirmación, pero como efecto secundario, también evitamos su printing en stderr.

El lado de inserción no tiene el problema de fusión-compromiso, pero probablemente debería evitar imprimirlos en stderr . Podemos reutilizar la misma function anonimizadora.

Tenga en count que para que esto suceda, las cnetworkingenciales tendrían que aparecer en la command-line o en un file de configuration de git, ninguno de los cuales es particularmente seguro.
Entonces, las personas deberían cambiar a usar cnetworkingenciales auxiliares, lo que hace que este problema desaparezca.

Pero eso no es excusa para no mejorar la situación de las personas que, por el motivo que sea, terminan usando cnetworkingenciales incrustadas en la URL.