¿Cómo configuro git para que se envíe automáticamente a un repositorio remoto (incluido el suministro automático de mi frase de contraseña) después de cada confirmación en el repositorio local?
84
¿Cómo configuro git para que se envíe automáticamente a un repositorio remoto (incluido el suministro automático de mi frase de contraseña) después de cada confirmación en el repositorio local?
Respuestas:
Primero, asegúrese de poder presionar manualmente sin proporcionar su contraseña. Si está presionando sobre HTTP o HTTPS, será un caso de crear un
.netrcarchivo con los detalles de inicio de sesión o agregar su nombre de usuario y contraseña en la URL del control remoto . Si está utilizando SSH, puede crear un par de claves donde la clave privada no tenga contraseña, o utilizarlossh-agentpara almacenar en caché su clave privada .Luego, debe crear un archivo ejecutable (
chmod +x).git/hooks/post-commitque contenga lo siguiente:... personalizar esa línea si desea enviar a un control remoto que no sea
origin, o presionar una rama que no seamaster. Asegúrese de hacer que ese archivo sea ejecutable.fuente
.git/configcon el prefijofeature/xy/.Si comienza a usar más que la rama principal, es posible que desee enviar automáticamente la rama actual. Mi gancho (
.git/hooks/post-commit) se ve así:Empuja la rama actual, si puede determinar el nombre de la rama con git symbolic-ref.
" ¿Cómo obtener el nombre de la rama actual en Git? " Trata de esta y otras formas de obtener el nombre de la rama actual.
Un empuje automático para cada rama puede ser perturbador cuando se trabaja en ramas de tareas en las que se espera que se produzcan algunas salchichas (no podrá rebasar fácilmente después de empujar). Por lo tanto, el gancho no empujará ramas que terminen con un sufijo definido (en el ejemplo "_local").
fuente
#!/bin/shpara que funcionara. De lo contrario, seguía diciendo:error: cannot run .git/hooks/post-commit: No such file or directory. Gracias, me gusta más tu solución.Cree un archivo llamado "post-commit" en el directorio .git / hooks con el contenido "git push", aunque si desea proporcionar automáticamente una contraseña, será necesario modificarla.
fuente
Este script de git-autopush le permite configurar un enlace posterior a la confirmación, similar a lo que se ha recomendado en " ¿Cómo configurar la inserción automática? ".
Pero para la frase de contraseña, debe ejecutar un archivo
ssh-agent.fuente
ssh-agent, sólo tiene que utilizar otra frase de contraseña-menosgit-sólosshtecla:ssh-keygen -t ed25519 -f ~/.ssh/id_pushonly.echo $'\nHost pushonly\nHostname DESTINATION\nIdentityFile ~/.ssh/id_pushonly\n' >> ~/.ssh/config. EnDESTINATIONconfiguregit-shellcomo se muestra en superuser.com/a/444899/72223 utilizando pubkey partir~/.ssh/id_pushonly.pub. Lagit-URL necesaria es algo así comogit@pushonly:path/to/repo.git. Para depurar:ssh git@pushonly COMMANDdebe ejecutargit-shell -c COMMANDenDESTINATION. ParaCOMMANDverman git-shell-t ed25519? Lo uso en general-t rsa, aunque recientemente tengo que agregar-m PEMassh-keygen( stackoverflow.com/a/53645530/6309 , stackoverflow.com/a/53729009/6309 ).ed25519porque da líneas cortas y prácticas para~/.ssh/authorized_keys. También es muy interesante lo que DJB escribe sobre ed255519 : Seguro contra canales laterales (Spectre), menos CPU, etc. Por cierto, cuando trato con viejossshds, generalmente creo una clave especial para ellos y luego configuro esto en~/.ssh/config.Aquí hay instrucciones simples para presionar / tirar sin proporcionar una frase de contraseña sobre ssh para personas que usan Linux y Windows (git bash)
En su cliente:
Compruebe si ha generado claves ssh:
Si no tiene ninguna clave (dos líneas "ls: can't access ...") genere una nueva. Si tiene alguna de las claves, omita este paso.
Copie su clave al servidor remoto desde el que desea extraer o presionar usando git:
Nota: Deberá proporcionar una contraseña durante esta operación. Después de eso, sus operaciones de extracción / inserción no solicitarán contraseña.
Nota 2: Debe iniciar sesión en el servidor usando user_name al menos una vez antes de usar este procedimiento (el directorio de inicio en el que se copian las claves ssh se crea durante el primer inicio de sesión)
fuente
Aquí está el script bash para que git automáticamente
pusha un repositorio remoto$ cd /path/to/your/repositoryentonces$ pushPon este script en un archivo, por ejemplo
$HOME/.ssh/pushVincularlo al
/bindirectorio para que se pueda llamar con solo un$ pushcomandofuente
Si está utilizando Husky, sobrescribirá su
post-commitarchivo de ganchos de forma predeterminada.Estamos usando este comando en package.json para reajustar automáticamente y enviar cualquier confirmación al maestro. (Primera ejecución
yarn add --dev git-branch-is).fuente