¿Cómo presionar automáticamente después de cometer en git?

¿Cómo configuro git para enviar automáticamente a un repository remoto (que incluye automáticamente mi frase de contraseña) después de cada compromiso con el repository local?

Primero, asegúrese de que puede presionar manualmente sin proporcionar su contraseña. Si está presionando sobre HTTP o HTTPS, será un caso de crear un file .netrc con los detalles de inicio de session o agregar su nombre de usuario y contraseña a la URL del control remoto . Si usa SSH, puede crear un par de llaves donde la key privada no tenga una contraseña, o usar ssh-agent para almacenar en caching su key privada .

Luego debe crear un file en .git/hooks/post-commit que contenga lo siguiente:

 #!/bin/sh git push origin master 

… personalizando esa línea si desea presionar a un control remoto que no sea el origin , o empujar una twig que no sea master . Asegúrese de hacer ese file ejecutable.

Si comienza a usar más de la twig principal, es posible que desee presionar automáticamente la twig actual. Mi gancho se ve así:

 #!/usr/bin/env bash branch_name=`git symbolic-ref --short HEAD` retcode=$? non_push_suffix="_local" # Only push if branch_name was found (my be empty if in detached head state) if [ $retcode = 0 ] ; then #Only push if branch_name does not end with the non-push suffix if [[ $branch_name != *$non_push_suffix ]] ; then echo echo "**** Pushing current branch $branch_name to origin [i4h_mobiles post-commit hook]" echo git push origin $branch_name; fi fi 

Empuja la twig actual, si puede determinar el nombre de la twig con git symbolic-ref.

" ¿Cómo get el nombre de la sucursal actual en Git? " Trata sobre esta y otras forms de get el nombre de la sucursal actual.

Una pulsación automática para cada twig puede ser molesta cuando se trabaja en las twigs de tareas donde se espera que ocurra algún embutido (no se podrá volver a ajustar fácilmente después de empujar). Por lo tanto, el gancho no empujará twigs que terminen con un sufijo definido (en el ejemplo "_local").

Cree un file llamado "post-commit" en el directory .git / hooks con el contenido "git push", aunque si desea proporcionar una contraseña automáticamente, será necesario modificarlo.

Esta secuencia de commands de git-autopush le permite configurar un enganche post-commit, similar a lo que se recomendó en " ¿Cómo configurar el empuje automático? ".
Pero para la frase de contraseña, necesita ejecutar un ssh-agent .

Aquí hay instrucciones simples para empujar / tirar sin proporcionar una frase de contraseña sobre ssh para las personas que usan Linux y Windows (git bash)

En tu cliente:

  1. Echa un vistazo si tienes keys ssh generadas:

     $ ls ~/.ssh/id_rsa.pub; ls ~/.ssh/id_dsa.pub /c/Users/Cermo/.ssh/id_rsa.pub <-- I have RSA key ls: cannot access '/c/Users/Cermo/.ssh/id_dsa.pub': No such file or directory 
  2. Si no tiene ninguna key (dos líneas "ls: no se puede acceder …"), genere una nueva. Si tiene alguna de las teclas omita este paso.

     $ ssh-keygen.exe Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Cermo/.ssh/id_rsa): Enter passphrase (empty for no passphrase): <-- press Enter Enter same passphrase again: <-- press Enter 
  3. Copie su key al server remoto desde el que desea extraer o presionar usando git:

     $ ssh-copy-id user_name@server_name /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys user_name@server_name's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user_name@server_name'" and check to make sure that only the key(s) you wanted were added. 

Nota: Deberá proporcionar una contraseña durante esta operación. Después de eso, sus operaciones de extracción / extracción no solicitarán contraseña.

Nota 2: debe iniciar session en el server utilizando user_name al less una vez antes de usar este procedimiento (el directory de inicio en el que se copyn las keys ssh se crea durante el primer inicio de session)