Quero alterar o destino padrão da filial remota do Git para que eu possa
git push
Ao invés de:
git push upstream
Atualmente, isso está definido para o controle remoto de origem e quero defini-lo para um controle remoto diferente.
Tentei remover o controle remoto original (clonado de)
git remote rm origin
O que removeu o controle remoto original. Mas não resolve o git push
problema. Eu ainda recebo:
fatal: nenhum destino de envio configurado. Especifique o URL na
linha de comando ou configure um repositório remoto usando ...
Eu também tentei brincar com:
git remote set-url --push myfork origin
e outras opções, mas nenhuma parece funcionar (talvez porque eu tenha excluído o controle remoto de origem muito cedo?)
Seguindo a resposta aqui , tentei mudar:
git config push.default upstream (or matching)
mas nem funcionou.
fonte
git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>
.git push -u origin master:master
.git push
envio remoto da ramificação local atual? Quero dizer, isso significa que tenho que executar este comando para cada ramo. Certo? Não posso simplesmente fazer uma configuração inicial para todo o repositório? @MarcoLazzerigit push -u origin master
suficiente? Você está apenas ilustrando a sintaxe completa?Para alterar qual controle remoto upstream está "conectado" à sua filial, use o
git branch
comando com o sinalizador de configuração upstream.Verifique se o controle remoto existe primeiro:
git remote -vv
Defina o controle remoto preferido para a ramificação atual (com saída):
git branch --set-upstream-to <remote-name>
Valide se a ramificação está configurada com o controle remoto upstream correto:
git branch -vv
fonte
git branch --set-upstream-to myfork
e obtive um erro:> error: unknown option `set-upstream-to 'Estou executando o git 1.7.9git remote set-url origin PATH_TO_REMOTE
)git branch -u <remotename>/<branch>
trabalhou para mim. O comando foi executado com o ramo de interesse local verificado. Veja 'Rastreando ramos' em git-scm.com/book/it/v2/Git-Branching-Remote-Branchesgit remote -v
ougit remote --verbose
. O-vv
v extra do redundante.Trabalhando com Git 2.3.2 ...
Agora
status
,push
epull
são apontados paramyfork
controle remotofonte
pull
.Você pode alterar facilmente o controle remoto padrão para ramificações de uma só vez simples usando este comando
fonte
Se você fez
git push origin -u localBranchName:remoteBranchName
e, emgit push
comandos sequenciais , obtém erros que, em seguida, a origem não existe, siga estas etapas:git remote -v
Verifique se há algum controle remoto que eu não ligo. Exclua-os com
git remote remove 'name'
git config --edit
Procure possíveis sinais de um controle remoto antigo / inexistente. Procure
pushdefault
:Atualize o
oldremote
valor e salve.git push
deve funcionar agora.fonte
-u
ao usargit push
um controle remoto diferente devido à memória muscular. Isso torna o controle remoto o padrão, configurando-o novamente usandogit config --edit
(ou pressionando novamente e configurando um novo controle remoto) resolvido o problema.Apenas um esclarecimento (usando a versão 1.7.9.5 do git no ubuntu 12.04):
O Git irá adicionar / remover controles remotos. Essas são instâncias remotas do git com um servidor conectado.
Você pode buscar o repositório git da seguinte maneira:
Parece que isso cria um ramo chamado 'myremote', no entanto, o controle remoto para o ramo não é definido automaticamente. Para fazer isso, você deve fazer o seguinte:
Primeiro, verifique se você tem esse problema, ou seja,
Você deve ver algo como:
Se vir
branch.myremote.remote=.
, você deve prosseguir:Agora você deve estar atualizado com o repositório remoto e seus pull / pushes devem estar vinculados ao controle remoto apropriado. Você pode alternar os controles remotos dessa maneira, por filial . [Nota 1]
De acordo com a documentação oficial de configuração do Git , você pode configurar uma ramificação push padrão (basta pesquisar remote.pushdefault nessa página), no entanto, lembre-se de que isso não afetará repositórios / ramificações que já existem, portanto, isso funcionará apenas para novos repositórios / ramificações. Você deve se lembrar que
--global
definirá padrões de repositório específicos do usuário (~ / .gitconfig),--system
definirá padrões de repositório em todo o sistema (/ etc / gitconfig) e nenhum sinalizador definirá opções de configuração para o repositório atual (./.gitconfig).Também deve ser observado que a opção de configuração push.default é para configurar o comportamento ref-spec , não remoto comportamento .
[1]:
git branch --set-upstream myotherremote
normalmente funcionaria aqui, no entanto o git irá reclamar que não definirá um ramo como seu próprio controle remoto segit branch --set-upstream myremote
for usado. No entanto, acredito que esse seja um comportamento incorreto.fonte
git config -l | grep myremote
, você pode simplesmente usar: #git config --get branch.myremote.remote
--get
assume um comportamento específico, anotei que existem outras maneiras de configurar fluxos de transmissão, mas isso fornece uma maneira de encontrar as informações sem depender apenas das ferramentas git corrigir. O Git não é perfeito, é melhor entender os dados, o que ele faz e depois esperar que suas invocações funcionem adequadamente.Pode ser útil dar uma olhada no
.git/config
interior do seu repositório, ele listará todos os controles remotos e também o controle remoto padrão para cada filialpor exemplo.
você pode fazer alterações manuais neste arquivo para remover um controle remoto indesejado ou atualizar os controles remotos padrão para os diferentes ramos que você possui
fonte
Outra técnica que encontrei para resolver isso (mesmo que eu tenha excluído a origem primeiro, o que parece ser um erro) está manipulando o git config diretamente:
fonte
git remote set-url origin PATH_TO_REMOTE
)Muito simplesmente, e juntando alguns dos ótimos comentários aqui, juntamente com minha própria pesquisa sobre isso.
Primeiro, verifique o ramo local que você deseja vincular ao seu ramo remoto:
Próximo:
Onde:
Você deve receber uma mensagem:
fonte
No meu caso, eu corrigi o seguinte: * run
git config --edit
* No arquivo de configuração do git:fonte
git remote set-url --push origin
deve funcionar, como você mencionou, mas você precisa fornecer explicitamente o URL em vez de um nome remoto alternativo, por exemploVocê pode confirmar se isso funcionou fazendo a
git remote -v
. Por exemplofonte