繁体   English   中英

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

[英]How do I change the URI (URL) for a remote Git repository?

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

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

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

  • 将所有内容推送到 USB 原点,并再次将其复制到 NAS(由于新提交到 NAS 原点意味着大量工作);

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

你可以

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

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

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

git remote set-url {name} {url}

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

更改 Git 源服务器的主机

来自: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 内部是不好的形式。

切换远程 URL

打开终端。

Ist Step: - 将当前工作目录更改为您的本地项目。

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

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

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

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

如此所见,

$ 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
  1. 使用 gitbash git remote rm origin上的命令删除原点
  2. 现在使用 gitbash git remote add origin添加新的 Origin(从您的项目存储库中的位存储库复制 HTTP URL)完成

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

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

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

检查 git 远程连接:

git remote -v

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

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

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

git push --set-upstream origin master -f

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

克隆它的远程 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

为你...

在此处输入图像描述

故障排除 :

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

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

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

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

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

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

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

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

git remote -v

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

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

我工作:

git remote set-url origin <project>

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

 git remote set-url origin new_url

了解更多

在 Git Bash 中,输入命令:

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

输入凭据

完毕

将远程 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

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

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

安慰

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

第 1 步 - 打开设置

第 2 步 - 更改网址

然后只需编辑 URL。

源树

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

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

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

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

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

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

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

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

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

在此处输入图像描述

在此处输入图像描述

参考。 支持

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


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

所以你可以选择在哪里工作git push origin <branch>git push newplace <branch>

对我来说,接受的答案仅适用于 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

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

nano .git/config

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

git remote -v 

另一种方法是重命名“旧”原点(在下面的示例中,我将其简单命名为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

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

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

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

卸下遥控器

使用 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)

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

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

脚步:

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

检查您的权限

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

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

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

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

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

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

主页 -> 设置

Git -> 存储库设置

遥控器 -> 编辑

在此处输入图像描述

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

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

参考

(仅限 Windows PS)在所有本地存储库中递归更改服务器/协议

Get-ChildItem -Directory -Recurse -Depth [Number] -Hidden -name | %{$_.replace("\.git","")} | %{git -C $_ remote set-url origin $(git -C $_ remote get-url origin).replace("[OLD SERVER]", "[NEW SERVER]")}

Go 到您要更改的文件夹/存储库并执行以下命令:

以下命令将更改 repo 的 git 获取 url。

git remote set-url origin <your new url>.git

以下命令将更改 repo 的 git 推送 url。

git remote set-url --push origin <your new url>.git

以下命令检查是否反映了上述更改

git remote -v

如果您在 Linux 或 Mac 上使用sed /grep,它也很容易更改而不会丢失关联。

最近我这样做是为了在配置中本地更改我所有存储库的用户名,但我也对远程线路完全采用了相同的方法。

VARIABLE_FIND='old'; VARIABLE_REPLACE='new'; path_name='~/PycharmProjects/*/.git/'; grep -rl --include=config "${VARIABLE_FIND}" "${path_name}" | xargs sed -i "s|${VARIABLE_FIND}|${VARIABLE_REPLACE}|g"

要替换匹配的整行,您可以执行以下操作:

VARIABLE_FIND='someneedle'; VARIABLE_REPLACE='somenewvalue'; path_name='/home/*/' grep -rl --include=config "${VARIABLE_FIND}" "${path_name}" | xargs sed -i "/${VARIABLE_FIND//\//\\/}/c\\${VARIABLE_REPLACE}" ;

参考: 使用 Sed 替换包含字符串的整行

它会工作正常,你可以试试这个

对于 SSH:

命令: git remote set-url origin <ssh_url>

示例: git remote set-url origin git@github.com:username/rep_name.git

对于 HTTPS:

命令: git remote set-url origin <https_url>

示例: git remote set-url origin https://github.com/username/REPOSITORY.git

这个答案与我无法在其他地方找到答案的问题有关:为 Gitlab 中的一个项目执行此操作,该项目有一个子组。 这确实通过 SSH 起作用:

git remote add origin git@gitlab.com:group/subgroup/project.git

与所有具有“用户名”而不是“组”的答案相比,这些答案都没有通过 SSH 对我有用。或者,通过 https 起作用的是:

git remote add origin https://username@gitlab.com/group/subgroup/project.git

请注意“.com:group”和“.com/group”两者的区别

如果这不能开箱即用,我在成功使用 SSH 方法之前使用了 HTTPS 方法,这可能是一个因素,但没有它我无法尝试复制它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM