我试图在Git中更改我的原始分支的远程URL.我想要改变的只是SSH端口.首先,列出我的远程起源给了我:
git remote -v
origin user@example.com:package/name.git (fetch)
origin user@example.com:package/name.git (push)
Run Code Online (Sandbox Code Playgroud)
然后,我运行set-url命令来更改我的原始URL:
git remote set-url origin ssh://user@example.com:XX/package/name.git (XX is my port #)
Run Code Online (Sandbox Code Playgroud)
现在,我可以毫无问题地获取,但是将我的分支推送到原点不起作用,因为推送URL没有改变.再次列出我的遥控器我得到了这个:
git remote -v
origin ssh://user@example.com:XX/package/name.git (fetch)
origin user@example.com:package/name.git (push)
Run Code Online (Sandbox Code Playgroud)
为什么我的set-url命令只更改了获取URL?
run*_*g.t 35
来自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.
Run Code Online (Sandbox Code Playgroud)
所以你应该另外执行:
git remote set-url --push origin ssh://user@example.com:XX/package/name.git
Run Code Online (Sandbox Code Playgroud)
只要有问题的 repo 的配置文件包含推送 URL 的条目set-url,默认情况下只会更新获取 URL。
[remote "origin"]
url = fetch.git
fetch = ...
pushurl = push.git
Run Code Online (Sandbox Code Playgroud)
正如 running.t 的答案所解释的,您可以使用set-url --push更改此条目。但是,每次 URL 更改时,您都必须继续执行此操作。
要恢复set-url(同时更改两个 URL)的默认行为,只需从配置中删除该条目即可。或使用删除它set-url --delete:
git remote set-url --delete --push origin push.git
Run Code Online (Sandbox Code Playgroud)
至于为什么存储库会在没有您添加的情况下包含单独的推送 url:像 Sourcetree 这样的一些 git 客户端“有帮助”地做到了这一点。
| 归档时间: |
|
| 查看次数: |
11555 次 |
| 最近记录: |