Como empurrar automaticamente depois de cometer no git?

Como faço para definir o git para empurrar automaticamente para um repository remoto (incluindo automaticamente a minha senha) depois de cada compromisso com o repository local?

Se você começar a usar mais do que o ramo mestre, poderá querer enviar automaticamente o ramo atual. Meu hook ( .git/hooks/post-commit ) tem esta aparência:

 #!/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 

Empurra a ramificação atual, se puder determinar o nome da ramificação com git symbolic-ref.

” Como obter o nome da ramificação atual no Git? ” Lida com essa e outras maneiras de obter o nome da ramificação atual.

Um push automático para cada ramificação pode ser perturbador ao trabalhar em ramificações de tarefas onde você espera que algumas salsichas ocorram (você não será capaz de rebase facilmente depois de empurrar). Portanto, o gancho não enviará ramificações que terminem com um sufixo definido (no exemplo “_local”).

Crie um arquivo chamado “post-commit” no diretório .git / hooks com o conteúdo “git push”, mas se você quiser fornecer automaticamente uma senha, a modificação será necessária.

Este script git-autopush permite que você configure um gancho post-commit, similar ao que foi recomendado em ” Como configurar o envio automático? “.
Mas, para a frase secreta, você precisa executar um ssh-agent .

Aqui está uma instrução simples para empurrar / puxar sem fornecer senha sobre o ssh para pessoas que usam Linux e Windows (git bash)

No seu cliente:

  1. Verifique se você tem chaves ssh geradas:

     $ 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. Se você não tiver nenhuma chave (duas linhas "ls: cannot access ..."), gere uma nova. Se você tiver alguma das chaves, pule esta etapa.

     $ 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 sua chave para o servidor remoto do qual você quer puxar ou empurrar usando o 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: Você terá que fornecer senha durante esta operação. Depois disso, suas operações pull / push não solicitarão senha.

Nota 2: Você tem que logar ao servidor usando o user_name pelo menos uma vez antes de usar este procedimento (o diretório home a que as chaves do ssh são copiadas é criado durante o primeiro início de uma session)