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

git url git-remote

我在我的硬盘驱动器(本地)上克隆的 USB 密钥上有一个存储库(来源)。我将“原点”移动到 NAS 并成功测试了从这里克隆它。

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

目前,我可以看到两种解决方案:

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

将新遥控器添加到“本地”并删除旧遥控器(我担心我会打破我的历史)。

我必须在旧版本的 git (1.5.6.5) 上执行此操作,并且 set-url 选项不存在。只需删除不需要的遥控器并添加一个具有相同名称的新遥控器就可以毫无问题地维护历史记录。

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

Nice Doc 可在此处获得。 docs.github.com/en/free-pro-team@latest/github/using-git/…

H
Harry B

你可以

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

(请参阅 git help remote)或者您可以编辑 .git/config 并在此处更改 URL。除非您做一些非常愚蠢的事情,否则您不会有丢失历史的危险(如果您担心,只需复制您的回购,因为您的回购是您的历史。)

如果您有不同的 shell 用户,那么您可能想在新 url 的开头指定您的 git 用户,例如:myself@git://new.url.here

您可能还希望使用 git branch -u origin/master 为您的新源位置设置主上游分支。这将使您只需git push,而不必每次都git push origin master

@kelorek 或者你可以第一次git push -u origin master :)

我还必须 git remote set-url --push origin git://... 才能设置原点...(推送)网址。

对于多个分支,您可以使用 git push -u --all 将所有分支一次推送到新 url(而不是 git push -u origin master

Z
Zombo
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)

Changing a remote's URL

为了获得所有这些,我添加了:git remote set-url --push origin git@github.com/User/Branch.gitgit remote set-url composer https://github.com/User/Branch.git

@MS Berends git remote -v 有助于验证,而接受的解决方案没有提供。

注意:如果您收到 403 禁止,请按照本教程进行操作:janac.medium.com/…

我这样做了,但是在我使用 git add . && git commit -m 'fix' && git push origin 推送到新遥控器之后,它说一切都是最新的,而新遥控器是空的。可能是什么原因 ?

T
Thavas Antonio

git remote set-url {name} {url}

git remote set-url origin https://github.com/myName/GitTest.git
C
Craig McQueen

Change Host for a Git Origin Server

来自: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.com 更改为 newhost.com,保存文件即可。

从我有限的测试 (git pull origin; git push origin; gitx) 来看,一切似乎都井然有序。是的,我知道弄乱 git 内部是不好的形式。

形式不好?也许。但是,如果您需要做一些作者没想到有人会做的事情,那么有时需要搞乱内部结构。但是如果你弄错了,你必须愿意接受后果。 Backup your local repository _before_ messing with git internals.

我可以在哪里找到 .git/config

C
Community

切换远程 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

第 4 步:- 现在验证远程 URL 是否已更改。

git remote -v 验证新的远程 URL

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

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

我没有从项目中删除任何东西。我只是做了上述步骤,它工作

J
Jeremy Caney

这非常容易和简单;只需按照这些说明进行操作。

添加或更改远程源: git remote set-url origin githubrepurl 对于您当前在此本地存储库中的远程 URL: git remote show origin

如果它显示 fatal: 'origin' does not appear to be a git repository

Z
Zaz
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: Changing a remote's URL

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

+1 用于使用 git push -u 命令提供完整答案。也许对其他人来说很明显,对我来说不是。

t
trashgod

here 所示,

$ 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

在将一个十年前的问题与其他 21 个答案一起添加答案时,包含对您的答案的解释并指出您的答案所针对的问题的新方面是非常重要的。对于一系列命令的答案,解释每个命令在做什么以及如果可能的话如何撤消每个命令的影响是很有用的。如果有人能够执行前几个步骤,但随后在后面的步骤中遇到错误,撤消很重要。

@JasonAller 我认为这是不言自明的,这是迄今为止最好的答案,其他都是笑话。

这也将更新 git status 你的分支在 'origin/master' 之前 n 次提交到新分支

S
Sunil Chaudhary

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

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

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

@mato 喜欢什么细节?

v
viveknaskar

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

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

请参阅 this 链接了解有关更改遥控器中 URL 的更多详细信息。

a
arnavakhoury

首先你需要输入这个命令来查看现有的遥控器

git remote -v

然后第二个你需要输入这个命令来改变'origin'遥控器的URL

git remote set-url origin <paste your GitHub URL>

A
Anupam Maurya

检查 git 远程连接:

git remote -v

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

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

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

git push --set-upstream origin master -f

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

M
Mohideen bin Mohammed

如果你克隆了你的本地将自动包含,

克隆它的远程 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。然后添加命令起作用了。

A
Amitesh Bharti

https://i.stack.imgur.com/uH71e.png

故障排除 :

尝试更改遥控器时,您可能会遇到这些错误。没有这样的远程 '[name]'

此错误意味着您尝试更改的遥控器不存在:

git remote set-url sofake https://github.com/octocat/Spoon-Knife 致命:没有这样的远程“sofake”

检查您是否正确输入了远程名称。

参考:https://help.github.com/articles/changing-a-remote-s-url/

S
Saurabh

导航到本地存储库的项目根目录并检查现有远程:

git remote -v

如果您的存储库使用 SSH,您将看到如下内容:

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

如果您的存储库使用 HTTPS,您将看到如下内容:

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

使用 git remote set-url 更改 URL。根据 git remote -v 的输出,您可以通过以下方式更改 URL:

对于 SSH,您可以将 URL 从 REPOSITORY.git 更改为 NEW_REPOSITORY.git,例如:

$ git remote set-url origin git@github.com:USERNAME/NEW_REPOSITORY.git

如果是 HTTPS,您可以将 URL 从 REPOSITORY.git 更改为 NEW_REPOSITORY.git,例如:

$ git remote set-url origin https://github.com/USERNAME/NEW_REPOSITORY.git

注意:如果您更改了 GitHub 用户名,您可以按照与上述相同的过程来更新与您的存储库关联的用户名的更改。您只需更新 git remote set-url 命令中的 USERNAME

D
Diego Santa Cruz Mendezú

我工作:

git remote set-url origin <project>
M
MD SHAYON

如果您是组织所有者或拥有仓库的管理员权限,则可以重命名仓库。

 git remote set-url origin new_url

know more

d
devDeejay

在 Git Bash 中,输入命令:

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

输入凭据

完毕

B
BenKoshy

将远程 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-agent 时执行 git push automatically

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

使用 expect 放置一个脚本文件 $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
P
Przemek Struciński

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

安慰

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]  <------------------------------------
...

TortoiseGit

https://i.stack.imgur.com/3Odbn.jpg

https://i.stack.imgur.com/Unkr4.jpg

然后只需编辑 URL。

源树

单击工具栏上的“设置”按钮以打开“存储库设置”窗口。单击“添加”以将远程存储库路径添加到存储库。将打开“远程详细信息”窗口。输入远程路径的名称。输入远程存储库的 URL/路径 输入远程存储库托管服务的用户名。单击“确定”以添加远程路径。返回“存储库设置”窗口,单击“确定”。现在应该在存储库中添加新的远程路径。如果您需要编辑已添加的远程路径,只需单击“编辑”按钮。您应该被定向到“远程详细信息”窗口,您可以在其中编辑远程路径的详细信息(URL/路径/主机类型)。要删除远程存储库路径,请单击“删除”按钮

https://i.stack.imgur.com/MnWNX.png

https://i.stack.imgur.com/Mkknl.png

参考。 Support

A
Anderson Cossul

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

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

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

S
Shailendra Madda

对我来说,接受的答案仅适用于 fetch 而不是 pull 的情况。我做了以下工作以使其也适用于推送。

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

因此,要更新获取 URL:

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

要更新拉取 URL:

git remote set-url --push origin new.git.url/here
A
Abhi Das

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

nano .git/config

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

git remote -v 
j
jojo

另一种方法是重命名“旧”原点(在下面的示例中,我将其简单命名为 old-origin)并添加一个新原点。这可能是希望的方法,如果您仍然希望能够不时推送到旧源

git remote rename origin old-origin
git remote add origin git@new-git-server.com>:<username>/<projectname>.git

如果您需要将本地状态推送到新的原点:

git push -u origin --all
git push -u origin --tags
D
Don't Panic

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

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

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

T
Tayyab Roy

卸下遥控器

使用 git remote rm 命令从存储库中删除远程 URL。

    $ 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)
R
Rajesh Somasundaram

如果您想在原始 url 中设置用户名和密码,您可以按照以下步骤操作。

在变量中导出密码可以避免特殊字符的问题。

脚步:

export gituser='<Username>:<password>@'
git remote set-url origin https://${gituser}<gitlab_repo_url> 
git push origin <Branch Name>
s
saber tabatabaee yazdi

检查您的权限

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

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

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

第二个帐户是该新回购的管理员,第一个是我的默认用户帐户,我应该授予第一个权限

D
Dinch

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

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

主页 -> 设置

Git -> 存储库设置

遥控器 -> 编辑

https://i.stack.imgur.com/ifhbk.png

M
Mike Lee

如果您的存储库是私有的,那么

从开始菜单打开控制面板选择用户帐户在左侧菜单中选择“管理您的凭据”删除与 Git 或 GitHub 相关的所有凭据

Reference