¿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
.netrc
archivo 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-agent
para almacenar en caché su clave privada .Luego, debe crear un archivo ejecutable (
chmod +x
).git/hooks/post-commit
que 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/config
con 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/sh
para 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ólossh
tecla:ssh-keygen -t ed25519 -f ~/.ssh/id_pushonly
.echo $'\nHost pushonly\nHostname DESTINATION\nIdentityFile ~/.ssh/id_pushonly\n' >> ~/.ssh/config
. EnDESTINATION
configuregit-shell
como 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 COMMAND
debe ejecutargit-shell -c COMMAND
enDESTINATION
. ParaCOMMAND
verman git-shell
-t ed25519
? Lo uso en general-t rsa
, aunque recientemente tengo que agregar-m PEM
assh-keygen
( stackoverflow.com/a/53645530/6309 , stackoverflow.com/a/53729009/6309 ).ed25519
porque 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 viejossshd
s, 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
push
a un repositorio remoto$ cd /path/to/your/repository
entonces$ push
Pon este script en un archivo, por ejemplo
$HOME/.ssh/push
Vincularlo al
/bin
directorio para que se pueda llamar con solo un$ push
comandofuente
Si está utilizando Husky, sobrescribirá su
post-commit
archivo 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