sort - push tag git command




Git-push atalho ramo atual (6)

Existe um atalho para dizer ao Git para empurrar o ramo de rastreamento atual para a origem?
Nota: Eu sei que posso alterar o comportamento de envio padrão , mas estou procurando uma solução ad-hoc que não altere o comportamento padrão.

Por exemplo, suponha que eu esteja usando o feature/123-sandbox-tests ramificação feature/123-sandbox-tests eu usaria

git push origin feature/123-sandbox-tests

que é tedioso. Eu estou procurando por um atalho, algo como

git push origin current

onde git sabe que a corrente é feature/123-sandbox-tests .

Edit : A partir da versão 2.0, o comportamento padrão do git mudou para um comportamento mais intuitivo, que é o que eu queria alcançar. Veja esta pergunta SO para mais detalhes.

Edit 2 : resposta do ceztko é a melhor resposta, pois permite empurrar o ramo atual, independentemente das configurações.


A maneira mais simples: executar o git push -u origin feature/123-sandbox-tests uma vez. Isso empurra o ramo da maneira que você está acostumado a fazer e também define as informações de rastreamento upstream em sua configuração local. Depois disso, você pode simplesmente git push para empurrar os ramos rastreados para o (s) seu (s) controle (s) remoto (s).

Você também pode fazer isso na configuração configurando branch.<branch name>.merge para o nome da ramificação remota (no seu caso, o mesmo que o nome local) e, opcionalmente, branch.<branch name>.remote para o nome o controle remoto para o qual você deseja enviar (padrão para origem). Se você olhar na sua configuração, provavelmente já existe um desses para o master , então você pode seguir esse exemplo.

Por fim, considere a configuração push.default . O padrão é "correspondência", que pode ter resultados indesejados e inesperados. A maioria das pessoas que conheço acha o "upstream" mais intuitivo, o que empurra apenas o ramo atual.

Detalhes sobre cada uma dessas configurações podem ser encontrados na página man do git-config .

No segundo pensamento, ao reler sua pergunta, acho que você sabe de tudo isso. Eu acho que o que você está procurando realmente não existe. Que tal uma função bash algo como (não testado):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

Com a ajuda da resposta do ceztko, escrevi esta pequena função auxiliar para facilitar a minha vida:

function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

Ele envia a ramificação atual para a origem e também define a ramificação de rastreamento remoto, caso ainda não tenha sido configurada.


Eu uso esse alias na minha configuração .bashrc

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

No comando $gpb ele pega o nome da ramificação atual e o envia para a origem.

Aqui estão meus outros aliases:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'

Por que vale a pena, o atalho final:

No meu .bash_profile eu tenho alias push="git push origin HEAD" , então sempre que eu digito push eu sei que estou empurrando para o ramo atual eu estou ligado.


Você deve dar uma olhada em uma pergunta semelhante em Comportamento padrão de "git push" sem uma ramificação especificada

Basicamente, explica como definir o comportamento padrão para empurrar sua ramificação atual apenas executando o git push . Provavelmente o que você precisa é:

git config --global push.default current

Outras opções:

  • nada : não empurre nada
  • correspondência : pressione todos os ramos correspondentes
  • upstream / tracking : empurre a ramificação atual para o que estiver rastreando
  • atual : pressione o ramo atual

Você pode configurar o git para empurrar para o ramo atual usando o seguinte comando

git config --global push.default current

então apenas faça

git push 

isso vai empurrar o código para o seu ramo atual.





git