Eu uso o seguinte comando para enviar para minha ramificação remota:
git push origin sandbox
Se eu disser
git push origin
isso também altera as outras ramificações ou atualiza apenas minha ramificação atual? Eu tenho três ramos: master
, production
e sandbox
.
A git push
documentação não é muito clara sobre isso, então eu gostaria de esclarecer isso definitivamente.
Quais ramificações e controles remotos os seguintes git push
comandos são atualizados exatamente?
git push
git push origin
origin
acima é um controle remoto.
Eu entendo que git push [remote] [branch]
empurrará apenas esse ramo para o controle remoto.
git
branch
git-branch
git-push
PlagueHammer
fonte
fonte
git push
, o que pode ser interessanteRespostas:
Você pode controlar o comportamento padrão definindo push.default em sua configuração do git. Na documentação do git-config (1) :
Define a ação que o git push deve executar se nenhum refspec for fornecido na linha de comandos, nenhum refspec estiver configurado no controle remoto e nenhum refspec estiver implícito em nenhuma das opções fornecidas na linha de comandos. Os valores possíveis são:
nothing
: não empurre nadamatching
: empurra todos os ramos correspondentesTodos os ramos com o mesmo nome nos dois extremos são considerados correspondentes.
Isso costumava ser o padrão, mas não desde o Git 2.0 (
simple
é o novo padrão).upstream
: envie a ramificação atual para a ramificação upstream (tracking
é um sinônimo obsoleto para upstream)current
: envia a ramificação atual para uma ramificação com o mesmo nomesimple
: (novo no Git 1.7.11) como upstream, mas se recusa a enviar por push se o nome da ramificação upstream for diferente do localEsta é a opção mais segura e é adequada para iniciantes.
Este modo se tornou o padrão no Git 2.0.
Exemplos de linha de comando:
Para visualizar a configuração atual:
Para definir uma nova configuração:
fonte
simple
modo. Este modo pretende se tornar o padrão no futuro.simple
funciona comoupstream
, mas comocurrent
requer que os nomes das ramificações sejam os mesmos nas duas extremidades.simple
comportamento agora é o padrão.Você pode configurar o comportamento padrão para o seu git com push.default
ou se você tiver muitos repositórios e quiser o mesmo para todos,
A corrente nesta configuração significa que, por padrão, você só enviará o ramo atual ao executar o git push
Outras opções são:
ATUALIZAÇÃO - NOVA MANEIRA DE FAZER ISSO
No Git 1.7.11, faça o seguinte:
Essa é uma nova configuração introduzida que funciona da mesma maneira que a atual e será padronizada para o git da v 2.0 de acordo com os rumores
fonte
git push origin
vai empurrar todas as alterações nas filiais locais que tenham filiais remotas correspondentes noorigin
Quantogit push
Na seção Exemplos da
git-push
página de manualfonte
Eu apenas comprometi meu código em um ramo e o empurrei para o github, assim:
fonte
Aqui estão algumas informações muito úteis e úteis sobre o Git Push : Git Push: apenas a dica
O uso mais comum do git push é enviar as alterações locais para o seu repositório público upstream. Supondo que o upstream seja um remoto chamado "origem" (o nome remoto padrão se o seu repositório for um clone) e a ramificação a ser atualizada para / de for denominada "master" (o nome padrão da ramificação), isso é feito com:
git push origin master
git push origin
enviará alterações de todos os ramos locais para ramos correspondentes no remoto de origem.git push origin master
enviará alterações da ramificação principal local para a ramificação principal remota.git push origin master:staging
enviará as alterações da ramificação mestre local para a ramificação temporária remota, se existir.fonte
git push origin branch_name
por algum motivo, empurre não apenas obranch_name
branch, mas também outros ramos locais (git versão 1.9.1).git push origin master:staging
é uma jóia escondida incrível!(Março de 2012)
Cuidado: essa
matching
política " " padrão pode mudar em breve(algumas vezes após o git1.7.10 +) :
Consulte " Por favor, discuta: o que o" git push "deve fazer quando você não diz o que empurrar? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
fonte
Acabei de colocar isso na minha seção de aliases .gitconfig e adoro como ele funciona:
Empurrará a ramificação atual para a origem
git pub
ou outro repo comgit pub repo-name
. Saboroso.fonte
git push -u --repo="origin" $1;
vez disso. Ele funciona muito bem, exceto se você empurrar para outro repositório, o nome da ramificação será o nome usado por outro repositório, não o que você está empurrando a partirVocê pode enviar a ramificação atual com o comando
(tirado daqui )
fonte
Um git push tentará enviar todas as ramificações locais para o servidor remoto, provavelmente é o que você não deseja. Tenho algumas conveniências configuradas para lidar com isso:
Alias "gpull" e "gpush" adequadamente:
No meu ~ / .bash_profile
Assim, executar "gpush" ou "gpull" enviará apenas o meu ramo "atualmente ativado".
fonte
Você pode alterar esse comportamento padrão no seu
.gitconfig
, por exemplo:Para verificar as configurações atuais, execute:
fonte
Em vez de usar aliases, prefiro criar scripts git-XXX para poder controlá-los na fonte com mais facilidade (todos os nossos desenvolvedores têm um determinado diretório de origem no caminho para esse tipo de coisa).
Este script (chamado
git-setpush
) definirá o valor de configuraçãoremote.origin.push
para algo que apenas enviará o ramo atual:observe que, enquanto estamos usando
Gerrit
, ele define o alvo pararefs/for/XXX
entrar em uma ramificação de revisão. Ele também assume que origem é seu nome remoto.Invoque-o depois de verificar uma ramificação com
Obviamente, poderia ser adaptado para fazer também a verificação geral, mas eu gosto de scripts para fazer uma coisa e fazê-lo bem
fonte
feature/fix_fubar
são todas apontadas para ramificações upstream mais genéricas comomaster
oudevelop
, portanto, isso apontaria para a montante incorreta. Como é o seu fluxo local para repos controlados por gerrit?git config remote.origin.push HEAD:refs/for/master
.Eu adicionei as seguintes funções no meu arquivo .bashrc para automatizar essas tarefas. Faz git push / git pull + nome da ramificação atual.
fonte