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

3896

Tenho um repositório (origem) em uma chave USB que clonei no meu disco rígido (local). 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" para que agora seja extraído do NAS, e não da chave USB.

Por enquanto, vejo duas soluções:

  • envie tudo para o usb-orign e copie-o novamente para o NAS (implica muito trabalho devido a novos commit na origem do nas);

  • adicione um novo controle remoto a "local" e exclua o antigo (acho que vou quebrar meu histórico).

e-satis
fonte
6
Eu tive que fazer isso em uma versão antiga do git (1.5.6.5) e a opção set-url não existia. Simplesmente excluir o controle remoto indesejado e adicionar um novo com o mesmo nome funcionava sem problemas e mantinha o histórico bem.
HotN
no meu caso eu preciso verificar minha permissão eu tenho dois repositórios git privadas e esta segunda conta é administrador desse novo repo e primeiro é a minha conta de usuário padrão e eu deveria conceder permissão a primeira
sabre tabatabaee Yazdi

Respostas:

6333

Você pode

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

(consulte git help remote) ou você pode simplesmente editar .git/confige alterar os 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, pois esse é o seu histórico.)

hobbs
fonte
29
Se você tiver um usuário shell diferente, então talvez você queira especificar o usuário git no início do novo url por exemplo:myself@git://new.url.here
sobi3ch
13
Você também pode querer definir o ramo montante mestre para o seu novo local de origem com: git branch -u origin/master. Isso permitirá que você apenas em git pushvez de precisar git push origin mastersempre.
Kelorek
32
@kelorek ou você só pode git push -u origin masterpela primeira vez :)
hobbs
26
Eu também precisei para git remote set-url --push origin git://...definir a origem ... (push) url.
jpillora
3
Para vários ramos, você pode usar git push -u --allpara empurrar todos os ramos de uma vez para nova url (em vez de git push -u origin master)
Ben
902
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)

Alterando o URL de um controle remoto

Utensílio
fonte
100

Alterar host para um servidor de origem Git

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

Espero que isso não seja algo que você precise fazer. O servidor que eu tenho usado para colaborar em alguns projetos git teve o nome de domínio expirado. Isso significava encontrar uma maneira de migrar os repositórios locais para voltar à sincronização.

Atualização: Obrigado a @mawolf por apontar que existe uma maneira fácil com as versões recentes do git (fevereiro de 2010):

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

Veja a página de manual para detalhes.

Se você estiver em uma versão mais antiga, tente o seguinte:

Como uma ressalva, isso funciona apenas porque é o mesmo servidor, apenas com nomes diferentes.

Supondo que o novo nome do host seja newhost.come o antigo era oldhost.com, a mudança é bastante simples.

Edite o .git/configarquivo 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.compara newhost.com, salve o arquivo e pronto.

Do meu teste limitado ( git pull origin; git push origin; gitx) tudo parece em ordem. E sim, eu sei que é uma má forma mexer com os internos do git.

yoda
fonte
Má forma? Possivelmente. Mas se você precisa fazer algo que os autores não esperavam que alguém fosse fazer, às vezes é necessário mexer com os internos. Mas você precisa estar disposto a aceitar as conseqüências se errar. Backup your local repository _before_ messing with git internals.
Jesse Chisholm
56
git remote set-url origin git://new.location

(como alternativa, abra .git/config, procure [remote "origin"]e edite a url =linha.

Você pode verificar se funcionou examinando os controles remotos:

git remote -v
# origin  git://new.location (fetch)
# origin  git://new.location (push)

Da próxima vez que você enviar, precisará especificar o novo ramo upstream, por exemplo:

git push -u origin master

Veja também: GitHub: Alterando o URL de um controle remoto

Zaz
fonte
Não foi possível definir a nova origem editando .git / config. Ele disse que o repositório git nomeado na URL não era um repositório git. Depois que removi e recriei a origem, tudo estava bem. Eu não tinha procurado o git set-url remoto como uma solução para o meu problema.
Octopusgrabbus
+1 por fornecer uma resposta completa com o git push -ucomando Talvez óbvio para os outros, não era para mim.
Testphreak 20/09/19
37

Alternando URLs remotos

Terminal aberto.

É o passo: - Altere o diretório de trabalho atual para o seu projeto local.

2º passo: - Liste os controles remotos existentes para obter o nome do controle remoto que você deseja alterar.

git remote -v

origin  https://github.com/USERNAME/REPOSITORY.git (fetch)

origin  https://github.com/USERNAME/REPOSITORY.git (push)

Altere o URL do seu controle remoto de HTTPS para SSH com o comando git remote set-url.

3º Passo: - git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

4º passo: - Agora verifique se o URL remoto mudou.

git remote -v Verifique o novo URL remoto

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)
VIKAS KOHLI
fonte
Você precisa remover a origem antiga antes de adicionar a nova origem?
Sledge
Não removi nada do projeto. Eu simplesmente fazer o acima passos e funcionou
Vikas Kohli
27
  1. remover origem usando o comando gitbash git remote rm origin
  2. E agora adicione o novo Origin usando gitbash git remote add origin (Copie o URL HTTP do repositório do projeto no bloco de bits)
Sunil Chaudhary
fonte
Esta é uma resposta realmente útil, porque sem o git remote rm origingit se lembra de detalhes sobre a origem antiga.
Mato
O exemplo acima git remote rm originresolve o problema de vários controles remotos: problema em que não foi possível definir o URL remoto. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand
21

git remote set-url {nome} {url}

ex) git remote set-url origin https://github.com/myName/GitTest.git

bong jae choe
fonte
19

Escreva o comando abaixo no seu terminal repo:

git remote set-url origin [email protected]:<username>/<repo>.git

Consulte este link para obter mais detalhes sobre como alterar o URL no controle remoto.

viveknaskar
fonte
1
O link foi útil
ANP
16

se você clonou seu local consistirá automaticamente,

URL remoto onde é clonado.

você pode verificá-lo usando git remote -v

se você quiser fazer alterações,

git remote set-url origin https://github.io/my_repo.git

aqui,

origem - sua filial

se você deseja substituir o ramo existente, ainda pode usá-lo. Ele substituirá o existente ... ele fará,

git remote remove url
and 
git remote add origin url

para voce...

Mohideen bin Mohammed
fonte
Eu tinha vários controles remotos adicionados, portanto, git remote rm originera necessário um comando para remover todos os URLs associados. Então o comando add funcionou.
bitsand
14

Para verificar a conexão remota git:

git remote -v

Agora, configure o repositório local para git remoto:

git remote set-url origin https://NewRepoLink.git

Agora, para upstream ou push, use o seguinte código:

git push --set-upstream origin master -f

Anupam Maurya
fonte
1
Eu estava pressionando e ainda assim o github não mostrou meu novo ramo. Esse último --set-upstreamfez o trabalho.
OoDeLally
11

Você tem várias maneiras de fazer isso:

Console

git remote set-url origin [Here new url] 

Apenas certifique-se de abri-lo em um local onde está um repositório.

Config

Ele é colocado em .git / config (a mesma pasta do repositório)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = [Here new url]  <------------------------------------
...

TortoiseGit

Etapa 1 - abrir configurações

Etapa 2 - alterar URL

Em seguida, basta editar o URL.

SourceTree

  1. Clique no botão "Configurações" na barra de ferramentas para abrir a janela Configurações do Repositório.

  2. Clique em "Adicionar" para adicionar um caminho de repositório remoto ao repositório. Uma janela "Detalhes remotos" será aberta.

  3. Digite um nome para o caminho remoto.

  4. Digite o URL / caminho para o repositório remoto

  5. Digite o nome de usuário para o serviço de hospedagem do repositório remoto.

  6. Clique em 'OK' para adicionar o caminho remoto.

  7. De volta à janela Configurações do Repositório, clique em 'OK'. O novo caminho remoto deve ser adicionado ao repositório agora.

  8. Se você precisar editar um caminho remoto já adicionado, basta clicar no botão 'Editar'. Você deve ser direcionado para a janela "Detalhes remotos", onde é possível editar os detalhes (URL / Caminho / Tipo de host) do caminho remoto.

  9. Para remover um caminho de repositório remoto, clique no botão 'Remover'

insira a descrição da imagem aqui

insira a descrição da imagem aqui

ref. Apoio, suporte

Przemek Struciński
fonte
11

Altere o URI do git remoto para em [email protected]vez dehttps://github.com

git remote set-url origin [email protected]:<username>/<repo>.git

Exemplo:

git remote set-url origin [email protected]:Chetabahana/my_repo_name.git

O benefício é que você pode fazer git pushautomaticamente quando usar o ssh-agent :

#!/bin/bash

# Check ssh connection
ssh-add -l &>/dev/null
[[ "$?" == 2 ]] && eval `ssh-agent`
ssh-add -l &>/dev/null
[[ "$?" == 1 ]] && expect $HOME/.ssh/agent

# Send git commands to push
git add . && git commit -m "your commit" && git push -u origin master

Coloque um arquivo de script $HOME/.ssh/agentpara executá-lo ssh-addusando o expect como abaixo:

#!/usr/bin/expect -f
set HOME $env(HOME)
spawn ssh-add $HOME/.ssh/id_rsa
expect "Enter passphrase for $HOME/.ssh/id_rsa:"
send "<my_passphrase>\n";
expect "Identity added: $HOME/.ssh/id_rsa ($HOME/.ssh/id_rsa)"
interact
Chetabahana
fonte
10

No Git Bash, digite o comando:

git remote set-url origin https://NewRepoLink.git

Digite as credenciais

Feito

devDeejay
fonte
10

Eu trabalhei:

git remote set-url origin <project>
Diego Santa Cruz Mendezú
fonte
9
$ git remote rm origin
$ git remote add origin [email protected]:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master
Zahid Hassan Shaikot
fonte
8
Ao adicionar uma resposta a uma pergunta de dez anos com vinte e uma outras respostas, é realmente importante incluir uma explicação da sua resposta e apontar o novo aspecto da pergunta que sua resposta aborda. Com respostas que são uma série de comandos, é útil explicar o que cada um está fazendo e como desfazer os efeitos de cada um deles, se isso for possível. O desfazer é importante caso alguém consiga executar as primeiras etapas, mas depois encontra um erro em uma etapa posterior.
Jason Aller
@ JasonAller Eu acho que isso é bastante auto-explicativo e é a melhor resposta aqui, de longe, as outras são uma piada.
Oliver Dixon
7

Se você estiver usando o TortoiseGit, siga as etapas abaixo:

  1. Vá para a pasta de pagamento local e clique com o botão direito do mouse para ir para TortoiseGit -> Settings
  2. No painel esquerdo, escolha Git -> Remote
  3. No painel direito, escolha origin
  4. Agora altere o URLvalor da caixa de texto para onde quer que seu novo repositório remoto esteja

Sua filial e todas as confirmações locais permanecerão intactas e você poderá continuar trabalhando como antes.

Vipul bhojwani
fonte
3

Para alterar o upstream remoto: git remote set-url origin <url>


Para adicionar mais fluxos upstream: git remote add newplace <url>

Então você pode escolher onde trabalhar git push origin <branch>ougit push newplace <branch>

Anderson Cossul
fonte
1
Não consegui encontrar outras menções ao trabalho em múltiplos
fluxos
2

Você pode alterar o URL editando o arquivo de configuração. Vá para a raiz do seu projeto:

nano .git/config

Em seguida, edite o campo de URL e defina seu novo URL. Salve as alterações. Você pode verificar as alterações usando o comando

git remote -v 
Abhi Das
fonte
1

Para quem deseja fazer essa alteração no Visual Studio 2019

Abra o Team Explorer (Ctrl + M)

Página inicial -> Configurações

Git -> Configurações do Repositório

Controles Remotos -> Editar

insira a descrição da imagem aqui

Dinch
fonte
1

Se o seu repositório for privado, então

  1. Abra o Painel de Controle no menu Iniciar
  2. Selecionar contas de usuário
  3. Selecione "Gerenciar suas credenciais" no menu à esquerda
  4. Exclua quaisquer credenciais relacionadas ao Git ou GitHub

Referência

Mike Lee
fonte
1

verifique seu privilégio

no meu caso, preciso verificar meu nome de usuário

Eu tenho dois ou três repositórios com credenciais separadas.

problema é minha permissão, eu tenho dois repositórios e servidores git privados

esta segunda conta é administrador desse novo repositório e a primeira é a minha conta de usuário padrão e devo conceder permissão para a primeira

sabre tabatabaee yazdi
fonte
0

Removendo um controle remoto

Use o comando git remote rm para remover uma URL remota do seu repositório.

    $ git remote -v
    # View current remotes
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
    > destination  https://github.com/FORKER/REPOSITORY.git (fetch)
    > destination  https://github.com/FORKER/REPOSITORY.git (push)

    $ git remote rm destination
    # Remove remote
    $ git remote -v
    # Verify it's gone
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
Tayyab Roy
fonte