Como mudar o URI (URL) para um repositório Git remoto?

Eu tenho um repo (origem) em uma chave USB que eu clonei no meu disco rígido (local). Eu mudei " origem" para um NAS e testei com sucesso a clonagem a partir daqui.

Gostaria de saber se posso alterar o URI de "origem" nas configurações de "local" então agora ele vai puxar do NAS, e não da chave USB.

Por enquanto, posso ver duas soluções:

  • empurrar tudo para o usb-orign, e copiá-lo para o NAS novamente (implica muito trabalho devido a novos compromissos para o nas-origin);

  • adicionar um novo controle remoto ao "local" e apagar o antigo (temo que I'irá quebrar minha história).

Solução

Você pode

git remote set-url origin new.git.url/here

(veja git help remote) ou você pode apenas editar .git/config e alterar as URLs lá. Você não corre o risco de perder o histórico a menos que faça algo muito bobo (e se estiver preocupado, faça uma cópia do seu repo, já que o seu repo é o seu histórico).

Comentários (13)
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

Mudar a URL de um controle remoto

Comentários (0)

Mudar Host para um Servidor de Origem Git

de: http://pseudofish.com/blog/2010/06/28/change-host-for-a-git-origin-server/

Espero que isto não seja algo que precises de fazer. O servidor que eu tenho usado para colaborar em alguns projetos de git com o qual o nome de domínio expirou. Isto significava encontrar uma forma de migrar os repositórios locais para voltar a estar em sincronia.

Atualização: Graças ao @mawolf por ter apontado que há uma maneira fácil com as versões recentes do git (post Fev, 2010):

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

Veja a página de homem para mais detalhes.

Se você está numa versão mais antiga, então tente isto:

Como um aviso, isto funciona apenas porque é o mesmo servidor, apenas com nomes diferentes.

Assumindo que o novo nome da nova hostname é newhost.com, e o antigo era oldhost.com, a mudança é bastante simples.

Edite o arquivo .git/config no seu diretório de trabalho. Você deve ver algo como:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

Mude oldhost.com para newhost.com, salve o arquivo e pronto.

A partir dos meus testes limitados (git pull origin; git push origin; gitx) tudo parece estar em ordem. E sim, eu sei que é má forma de mexer com os internos do gitx.

Comentários (1)