Git removendo upstream do repositório local


95

Estou trabalhando com um aplicativo Ruby on Rails e estou tentando sincronizar um fork. Vale ressaltar que também estou em um Mac. Eu cometi a seguinte ação:

$ git remote -v

para obter uma visão do meu repositório local. Eu errei ao tentar ir upstream:

$ git remote add upstream https://github.com/foo/repo.git

Quando eu deveria ter capitalizado Foo:

$ git remote add upstream https://github.com/Foo/repos.git

A questão é como faço para remover o upstreamporque toda vez que tento e altero isso, ele retorna com a criação de um fatalerro?

Respostas:


151

Usando o git versão 1.7.9.5, não há comando "remover" para remoto. Em vez disso, use "rm".

$ git remote rm upstream
$ git remote add upstream https://github.com/Foo/repos.git

ou, conforme observado na resposta anterior, set-url funciona.

Não sei quando o comando mudou, mas o Ubuntu 12.04 veio com 1.7.9.5.


39

A página de manual do git remote é bastante simples:

Usar

Older (backwards-compatible) syntax:
$ git remote rm upstream
Newer syntax for newer git versions: (* see below)
$ git remote remove upstream

Then do:    
$ git remote add upstream https://github.com/Foo/repos.git

ou apenas atualize o URL diretamente:

$ git remote set-url upstream https://github.com/Foo/repos.git

ou se você estiver confortável com isso, apenas atualize o .git / config diretamente - você provavelmente pode descobrir o que precisa mudar (deixado como exercício para o leitor).

...
[remote "upstream"]
    fetch = +refs/heads/*:refs/remotes/upstream/*
    url = https://github.com/foo/repos.git
...

===

* Com relação a 'git remote rm' vs 'git remote remove' - isso mudou em torno do git 1.7.10.3 / 1.7.12 2 - veja

https://code.google.com/p/git-core/source/detail?spec=svne17dba8fe15028425acd6a4ebebf1b8e9377d3c6&r=e17dba8fe15028425acd6a4ebebf1b8e9377d3c6

Log message

remote: prefer subcommand name 'remove' to 'rm'

All remote subcommands are spelled out words except 'rm'. 'rm', being a
popular UNIX command name, may mislead users that there are also 'ls' or
'mv'. Use 'remove' to fit with the rest of subcommands.

'rm' is still supported and used in the test suite. It's just not
widely advertised.

1
Esta resposta parece requerer atualização. No git 1.7.9, git remote remove upstreamproduz 'erro: subcomando desconhecido: remover'
Michael Scheper

22
$ git remote remove <name>

ie.

$ git remote remove upstream

isso deve funcionar


11

Na versão 2.14.3 do git,

Você pode remover o upstream usando

git branch --unset-upstream

O comando acima também removerá o branch do fluxo de rastreamento, portanto, se você quiser rebase do repositório, use

git rebase origin master 

ao invés de git pull --rebase


1
Isso funcionou perfeitamente para o meu branch com 2 upstreams diferentes
Jason
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.