O central
repositório tinha que ser configurado em um novo servidor, então eu criei um novo controle remoto no meu repositório local e fui pressionado para isso.
Mas agora, quando o faço git pull
, alega que estou atualizado. Está errado - está me falando sobre o antigo ramo remoto, não o novo, que eu sei que tem novos compromissos a buscar.
Como altero minha filial local para rastrear um controle remoto diferente?
Eu posso ver isso no arquivo de configuração do git, mas não quero estragar tudo.
[branch "master"]
remote = oldserver
merge = refs/heads/master
Respostas:
Usando o git v1.8.0 ou posterior:
git branch branch_name
--set-upstream-to
your_new_remote/branch_name
Ou você pode usar o
-u
switch:git branch branch_name
-u
your_new_remote/branch_name
Usando o git v1.7.12 ou anterior:
git branch --set-upstream branch_name your_new_remote/branch_name
fonte
git branch --unset-upstream
- depois, ele funcionará conforme indicado nesta resposta (ou na próximagit push -u / --set-upstream
).Para mim, a correção foi:
Então:
fonte
set-url
e esqueceu-se de configurá-lo de volta, então futurosgit push
comandos seria um fracassoCom um git atualizado (2.5.5), o comando é o seguinte:
Isso atualizará a filial rastreada remota para sua filial local atual
fonte
git branch --set-upstream-to=origin/develop
levantou o erro:error: the requested upstream branch 'origin/develop' does not exist
. Anteriormente, renomei um ramo remoto para delelop.git fetch --all
talvez?Outra opção para ter muito controle sobre o que está acontecendo é editar suas configurações manualmente:
ou a taquigrafia
Em seguida, edite o arquivo à vontade, salve e suas modificações serão aplicadas.
fonte
Se você é sensato sobre isso, editar o arquivo de configuração é seguro o suficiente. Se você quer ser um pouco mais paranóico, pode usar o comando porcelain para modificá-lo:
Obviamente, se você olhar a configuração antes e depois, verá que ela fez exatamente o que você faria.
Mas no seu caso individual, o que eu faria é:
Ou seja, se o novo servidor for o controle remoto canônico, por que não chamá-lo de origem como se você tivesse clonado originalmente?
fonte
remote rename
não faria o que está sendo solicitado, pois altera o nome do controle remoto nas[remote]
configurações e nas[branch]
configurações. Portanto, o que é preciso fazer neste caso é editar o arquivo de configuração e fazer o que você está dizendo (renomear remotos) apenas nas[remote]
linhas de configuração.ou
fonte
git fetch
. Eu havia criado uma nova ramificação no bitbucket e queria mudar para ela. O git não conhece mudanças remotas, então eu tinha que fazer issogit fetch
antesgit checkout feature/new-feature-branch
. Espero que isso ajude outra pessoa.Este é o comando mais fácil:
Por exemplo, dado o comando
git remote -v
produz algo como:Para alterar o rastreamento da equipe:
fonte
Você pode excluir sua ramificação atual e fazer:
Ou mude alterar servidor remoto para o atual na configuração
fonte
git checkout --track -b local_branch_name origin/branch_name
Com base no que entendi da documentação mais recente do git , a sinopse é:
Esse uso parece ser um pouco diferente da resposta de urschrei, pois na sinopse dele é:
Eu estou supondo que eles mudaram a documentação novamente?
fonte
Na versão mais recente do git, como 2.7.4 ,
git checkout branch_name
#branch name que você deseja alterar ramo de rastreamentogit branch --set-upstream-to=upstream/tracking_branch_name
#upstream - nome remotofonte
Eu achei a publicação de @critikaster útil, exceto que eu tive que executar esses comandos com o GIT 2.21:
fonte
a maneira mais fácil é simplesmente avançar para o novo ramo:
fonte