如何更改远程Git存储库的URI(URL)?
我在我的硬盘驱动器(本地)上克隆的USB密钥上有一个repo(origin).我将"origin"移动到NAS并成功测试从这里克隆它.
我想知道我是否可以在"本地"设置中更改"origin"的URI,因此它现在将从NAS中提取,而不是从USB密钥中提取.
现在,我可以看到两个解决方案:
回答
您可以
git remote set-url origin new.git.url/here
git remote set-url origin new.git.url/here
(请参阅参考资料git help remote
)或者您可以.git/config
在那里编辑和更改网址.除非你做一些非常愚蠢的事情,否则你不会有失去历史的危险(如果你担心,只要复制你的回购,因为你的回购是你的历史.)
- @kelorek或者你可以第一次`git push -u origin master` 🙂
- 如果你有一个不同的shell用户,那么你可能想在新url的开头指定你的git用户,例如:`myself @ git:// new.url.here`
- 我还必须`git remote set-url --push origin git:// ...`以便设置origin ...(push)url.
- 您可能还希望使用以下命令为新的原始位置设置主上游分支:`git branch -u origin/master`.这将允许你只是'git push`而不是每次都要'git push origin master`.
- 对于多个分支,可以使用git push -u --all将所有分支一次推送到新的url(而不是git push -u origin master)。
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
- Amazing that you got almost a thousand upvotes and consequently almost ten thousand points for just giving the same answer as the accepted one, but then three years later.
- @MS Berends The `git remote -v` helped for verification, whereas the accepted solution did not provide that.
更改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内部结构是不好的形式.
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 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
- When adding an answer to a ten year old question with twenty one other answers it is really important to include an explanation of your answer and to point out what new aspect of the question your answer addresses. With answers that are a series of commands it is useful to explain what each is doing and how to undo the effects of each of them if that is possible. The undo is important in case someone is able to perform the first few steps, but then encounters an error on a later step.
- @JasonAller I think this is fairly self-explanatory though and it's the best answer here by far, the others are a joke.
切换远程URL
开放式终端.
Ist步骤: - 将当前工作目录更改为本地项目.
第二步: - 列出您现有的遥控器,以获取您想要更改的遥控器的名称.
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)
git remote set-url origin git@github.com:<username>/<repo>.git
git remote set-url origin git@github.com:<username>/<repo>.git
从您的 repo 终端编写以下命令:
有关更改遥控器中 url 的更多详细信息,请参阅此链接。
- 使用gitbash git remote rm origin上的命令删除
origin - 现在使用gitbash git remote add origin(在位桶中复制来自项目存储库的HTTP URL)添加新的Origin
git remote set-url {name} {url}
EX) git remote set-url origin https://github.com/myName/GitTest.git
故障排除 :
尝试更改遥控器时可能会遇到这些错误。没有这样的远程 '[name]'
此错误意味着您尝试更改的遥控器不存在:
git remote set-url SOFAKE https://github.com/octocat/Spoon-Knife
致命:没有这样的远程“沙发”
检查您是否正确键入了远程名称。
参考:https : //help.github.com/articles/changed-a-remote-s-url/
导航到本地存储库的项目根目录并检查现有遥控器:
git remote -v
git remote -v
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)
更改 URL 是通过git remote set-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用户名,您可以按照与上述相同的过程更新与您的存储库关联的用户名的更改。你只需要更新USERNAME
的git remote set-url
命令。
要更改远程上游:
git remote set-url origin <url>
要添加更多上游:
git remote add newplace <url>
所以你可以选择在哪里工作
git push origin <branch>
或git push newplace <branch>
要检查git远程连接:
现在,将本地存储库设置为远程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
为了你...
在Git Bash中,输入命令:
git remote set-url origin https://NewRepoLink.git
输入凭据
完成
我工作:
git remote set-url origin <project>
您可以通过编辑配置文件来更改 url。转到您的项目根目录:
nano .git/config
然后编辑 url 字段并设置新的 url。保存更改。您可以使用该命令验证更改。
另一种方法是重命名“旧”原点(在下面的示例中,我将其简单命名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
对我来说,接受的答案仅适用于 fetch 而不是 pu
git remote set-url --push origin new.git.url/here
git remote set-url --push origin new.git.url/here
ll 的情况。我做了以下工作以使其也适用于推送。
所以要更新获取 URL:
要更新拉取 URL:
如果您正在使用TortoiseGit,请按照以下步骤操作:
- 转到本地结帐文件夹,然后右键单击转到
TortoiseGit -> Settings
- 在左侧窗格中选择
Git -> Remote
- 在右侧窗格中选择
origin
- 现在将
URL
文本框值更改为新远程存储库所在的位置
您的分支机构和所有本地提交将保持不变,您可以像以前一样继续工作.
您有很多方法可以做到这一点:
安慰
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] <------------------------------------
...
龟龟
然后,只需编辑URL。
源树
参考 支持
例:
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