【问题标题】:Changing Git remote URL updates fetch but not push更改 Git 远程 URL 更新获取但不推送
【发布时间】:2019-09-15 20:10:04
【问题描述】:

我正在尝试在 Git 中更改我的源分支的远程 URL。我只想更改 SSH 端口。首先,列出我的远程来源给了我这个:

git remote -v


origin  user@example.com:package/name.git (fetch)
origin  user@example.com:package/name.git (push)

然后,我运行set-url 命令来更改我的原始 URL:

git remote set-url origin ssh://user@example.com:XX/package/name.git    (XX is my port #)

现在,我可以毫无问题地获取,但是将我的分支推送到原点不起作用,因为推送 URL 没有改变。再次列出我的遥控器我得到了这个:

git remote -v


origin  ssh://user@example.com:XX/package/name.git (fetch)
origin  user@example.com:package/name.git (push)

为什么我的set-url 命令只更改了获取 URL?

【问题讨论】:

  • 如果您在命令行输入man git-remote,您可以轻松找到此信息。这适用于几乎所有 git 命令,例如 man git-addman git-push 等。

标签: git ssh


【解决方案1】:

来自git-remote手册:

set-url
    Changes URL remote points to. Sets first URL remote points to matching regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If <oldurl> doesn’t match any URL,
    error occurs and nothing is changed.

    With --push, push URLs are manipulated instead of fetch URLs.

所以你应该额外执行:

git remote set-url --push origin ssh://user@example.com:XX/package/name.git

【讨论】:

  • 这确实有效,尽管它没有解释为什么它没有像预期的那样更新两者
  • @JackJames:是的,我很确定这个命令集默认只获取 url。现在我试图在文档中找到确切的描述,但我只发现了几个不一致的博客文章,例如this one ant this one 告诉如果未设置推送,则使用 fetch 作为后备。我可能会查看source code 以找出答案。
  • @running.t 我找不到pull 远程地址的任何选项,获取远程地址是否与拉取相同?
  • @BenyaminJafari:嗯,在git-pull documentation 中,您可以发现pull 实际上是fetch,后跟merge。所以是的,获取远程地址是您调用git pull 时使用的地址。
  • 有没有办法用一个命令改变两个网址?
【解决方案2】:

只要相关 repo 的配置文件包含推送 URL 的条目,set-url 默认只会更新获取 URL。

[remote "origin"]
    url = fetch.git
    fetch = ...
    pushurl = push.git

正如 running.t 的答案所解释的,您可以使用 set-url --push 更改此条目。但是,每次 URL 更改时,您都必须继续这样做。

要恢复 set-url 的默认行为(同时更改两个 URL),只需从配置中删除该条目。或者使用set-url --delete删除它:

git remote set-url --delete --push origin push.git

至于为什么一个存储库会包含一个单独的推送 url 而没有你添加它:像 Sourcetree 这样的一些 git 客户端“有帮助”这样做。

【讨论】:

  • 这个答案有助于理解为什么git remote set-url 为我更改了两个 URL,而我实际上希望它只更改 fetch 一个
猜你喜欢
  • 2017-02-25
  • 2020-06-27
  • 2015-05-13
  • 2014-10-08
  • 2020-09-26
  • 1970-01-01
  • 2015-04-29
  • 2021-03-14
  • 2017-06-26
相关资源
最近更新 更多