如何更改远程Git存储库的URI(URL)?


3888

我在硬盘(本地)上克隆的USB密钥上有一个回购(来源)。我将“起源”移至NAS并成功测试了从此处克隆它的过程。

我想知道是否可以在“本地”设置中更改“源”的URI,以便它现在可以从NAS而不是从USB密钥中提取。

现在,我可以看到两种解决方案:

  • 将所有内容推送到usb-orign,然后再次将其复制到NAS(由于对nas-origin的新提交,这意味着很多工作);

  • 在“本地”中添加新的遥控器,然后删除旧的遥控器(我担心会破坏我的历史记录)。


6
我必须在旧版本的git(1.5.6.5)上执行此操作,并且set-url选项不存在。只需删除不需要的遥控器,然后添加一个具有相同名称的新遥控器,就可以正常工作并保持历史记录。
HotN

在我的情况下,我需要检查我的许可,我有两个私人git存储库,第二个帐户是该新存储库的管理员,第一个是我的默认用户帐户,我应该向第一个授予权限
saber tabatabaee yazdi

Answers:


6320

您可以

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

(请参阅参考资料git help remote),也可以.git/config在此处编辑和更改URL。除非您做一些非常愚蠢的事情,否则您不会失去历史记录的危险(并且,如果担心,只需复制一份您的回购协议,因为您的回购协议就是您的历史记录。)


29
如果您有其他Shell用户,则可能要在新URL的开头指定git用户,例如:myself@git://new.url.here
sobi3ch 2013年

13
您可能还想使用以下命令为新的原始位置设置主上游分支git branch -u origin/master。这将使您git push不必git push origin master每次都去。
kelorek

32
@kelorek或者你可以git push -u origin master在第一时间:)
霍布斯

26
我也不得不git remote set-url --push origin git://...为了设置来源...(推送)URL。
jpillora

3
对于多个分支,可以使用git push -u --all在一次新的URL(而不是推所有分行git push -u origin master

899
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)

更改遥控器的URL


100

更改Git Origin服务器的主机

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

希望这不是您需要做的。我用来与几个git项目进行协作的服务器的域名已过期。这意味着找到一种迁移本地存储库以使其恢复同步的方法。

更新:感谢@mawolf指出最近的git版本有一种简便的方法(2010年2月发布):

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

有关详细信息,请参见手册页。

如果您使用的是旧版本,请尝试以下操作:

需要注意的是,这仅适用于同一台服务器,只是名称不同。

假设新的主机名是newhost.com,旧的主机名是,oldhost.com更改非常简单。

.git/config在您的工作目录中编辑文件。您应该看到类似以下内容:

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

更改oldhost.comnewhost.com,保存文件即可完成操作。

根据我的有限测试(git pull origin; git push origin; gitx),一切似乎井井有条。是的,我知道混入git内部结构是不好的形式。


格式不好?也许。但是,如果您需要做某事,而作者并不希望任何人会做,那么有时就需要弄乱内部结构。但是,如果您弄错了,您必须愿意接受后果。 Backup your local repository _before_ messing with git internals.
Jesse Chisholm

56
git remote set-url origin git://new.location

(或者,打开.git/config,查找[remote "origin"],然后编辑该url =行。

您可以通过检查遥控器来检查其是否有效:

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

下次按下时,您必须指定新的上游分支,例如:

git push -u origin master

另请参阅:GitHub:更改遥控器的URL


我无法通过编辑.git / config设置新的原点。它说,URL中命名的git存储库不是git存储库。一旦我删除并重新创建了原点,一切都很好。不过,我没有查找git remote set-url作为解决我的问题的方法。
octopusgrabbus

+1用于提供git push -u命令的完整答案。也许对其他人显而易见,不是我。
testphreak

37

切换远程URL

打开终端。

步骤: -将当前工作目录更改为本地项目。

第二步: -列出您现有的遥控器,以获取要更改的遥控器的名称。

git remote -v

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

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

使用git remote set-url命令将远程URL从HTTPS更改为SSH。

第三步: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

第四步: -现在验证远程URL已更改。

git remote -v 验证新的远程URL

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

在添加新原点之前,是否必须删除旧原点?
雪橇

我没有从项目中删除任何东西。我只需完成上述步骤,它就起作用了
VIKAS KOHLI,

27
  1. 在gitbash上使用命令删除原点 git remote rm origin
  2. 现在使用gitbash添加新的原点 git remote add origin(从项目存储库中的位存储桶中复制HTTP URL)完成

这是非常有用的答案,因为没有git remote rm origingit会记住有关旧来源的详细信息。
mato

以上git remote rm origin解决了多个远程服务器的问题:无法设置远程URL的问题。remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand

21

git remote set-url {名称} {url}

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


18

从您的repo终端编写以下命令:

git remote set-url origin git@github.com:<username>/<repo>.git

请参阅链接,以获取有关更改遥控器中URL的更多详细信息。


1
该链接非常有用
ANP

16

如果您克隆了本地文件,则本地文件将自动包含在内,

克隆它的远程URL。

您可以使用检查 git remote -v

如果您要进行更改,

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

这里,

来源-您的分支

如果您想覆盖现有分支,您仍然可以使用它。它将覆盖您现有的分支...

git remote remove url
and 
git remote add origin url

为了你...


我添加了多个遥控器,因此git remote rm origin需要命令来删除所有关联的url。然后添加命令起作用。
bitsand

14

要检查git远程连接:

git remote -v

现在,将本地存储库设置为远程git:

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

现在使其成为上游或推送使用以下代码:

git push --set-upstream origin master -f


1
我在推动,但是github没有显示我的新分支。最后--set-upstream使它起作用。
OoDeLally

11

将远程git URI更改为git@github.com而不是https://github.com

git remote set-url origin git@github.com:<username>/<repo>.git

例:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

好处是您可以在使用ssh-agentgit push自动执行:

#!/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

放置一个脚本文件$HOME/.ssh/agent以使其ssh-add使用期望运行,如下所示:

#!/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

10

在Git Bash中,输入命令:

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

输入凭证

完成了



10

您有很多方法可以做到这一点:

安慰

git remote set-url origin [Here new url] 

只需确保已在存储库所在的位置将其打开即可。

设定档

它放置在.git / config(与存储库相同的文件夹)中

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

龟龟

第1步-打开设置

第2步-更改网址

然后,只需编辑URL。

源树

  1. 单击工具栏上的“设置”按钮以打开“存储库设置”窗口。

  2. 单击“添加”以将远程存储库路径添加到存储库。将打开“远程详细信息”窗口。

  3. 输入远程路径的名称。

  4. 输入远程存储库的URL /路径

  5. 输入远程存储库的托管服务的用户名。

  6. 单击“确定”添加远程路径。

  7. 返回“存储库设置”窗口,单击“确定”。现在应该在存储库中添加新的远程路径。

  8. 如果您需要编辑已经添加的远程路径,只需单击“编辑”按钮。应该将您定向到“远程详细信息”窗口,您可以在其中编辑远程路径的详细信息(URL /路径/主机类型)。

  9. 要删除远程存储库路径,请单击“删除”按钮

在此处输入图片说明

在此处输入图片说明

参考 支持


9
$ git remote rm origin
$ git remote add origin git@github.com:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master

8
在将一个十岁的问题的答案与其他二十一个答案相加时,包括对答案的解释并指出答案要解决的问题的新方面是非常重要的。使用一系列命令的答案,可以解释每个命令的作用以及在可能的情况下如何消除每个命令的影响,这很有用。如果某人能够执行前几个步骤,但随后又遇到错误,则撤消很重要。
Jason Aller

@JasonAller我认为这是不言而喻的,到目前为止,这是最好的答案,其他人只是在开玩笑。
奥利弗·迪克森

7

如果您使用的是TortoiseGit,请按照以下步骤操作:

  1. 转到本地结帐文件夹,然后右键单击以转到 TortoiseGit -> Settings
  2. 在左窗格中,选择 Git -> Remote
  3. 在右侧窗格中,选择 origin
  4. 现在,将URL文本框值更改为新的远程存储库所在的位置

您的分支和所有本地提交将保持不变,并且您可以像以前一样继续工作。



3

更改远程上游: git remote set-url origin <url>


添加更多上游: git remote add newplace <url>

因此,您可以选择在哪里工作 git push origin <branch>git push newplace <branch>


1
我找不到其他提及在多个上行流工作..
安德森Cossul

2

您可以通过编辑配置文件来更改网址。转到项目根目录:

nano .git/config

然后编辑url字段并设置新的url。保存更改。您可以使用命令来验证更改。

git remote -v 

1

对于那些想要从Visual Studio 2019进行此更改的人

打开团队资源管理器(Ctrl + M)

主页->设置

Git->存储库设置

遥控器->编辑

在此处输入图片说明


1

如果您的存储库是私有的,则

  1. 从开始菜单中打开控制面板
  2. 选择用户帐户
  3. 在左侧菜单中选择“管理您的凭据”
  4. 删除任何与Git或GitHub相关的凭证

参考


1

检查您的特权

就我而言,我需要检查我的用户名

我有两个或三个具有单独凭据的存储库。

问题是我的允许,我有两个私人git服务器和存储库

第二个帐户是该新存储库的管理员,第一个是我的默认用户帐户,我应该向第一个帐户授予权限

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.