我的笔记本电脑上有一个 git 存储库,以及 GiHub 上的一个远程存储库(运行“git clone”时创建的直接配置)。
我正在使用 SSH 传输协议。即远程地址为:git@github.com:MyName/MyProg.git
我现在处于一个端口 23 被阻塞的网络环境中(据我所知,只有端口 80 和 443 是开放的)。我需要获取/合并服务器上可用的最新更改。我有哪些选择?如果可能的话,我想避免使用 http 协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同)。
我的笔记本电脑上有一个 git 存储库,以及 GiHub 上的一个远程存储库(运行“git clone”时创建的直接配置)。
我正在使用 SSH 传输协议。即远程地址为:git@github.com:MyName/MyProg.git
我现在处于一个端口 23 被阻塞的网络环境中(据我所知,只有端口 80 和 443 是开放的)。我需要获取/合并服务器上可用的最新更改。我有哪些选择?如果可能的话,我想避免使用 http 协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同)。
您可以更改来源的网址:
git remote set-url origin https://github.com/MyName/MyProg.git
并照常工作。如果端口畅通,则将其改回。
第二种方法。您可以通过其配置更改 ssh 使用的端口。github 还通过端口 443 提供 ssh 连接。为此,您需要创建一个~/.ssh/config
包含以下内容的文件:
Host github.com
Hostname ssh.github.com
Port 443
对于调试,您可以使用ssh -v git@github.com
.
顺便说一句,ssh 端口号是 22,而不是 23。
您可以.git/config
通过直接编辑文件或使用git config
或将文件中的 url 更改为所需的 URL git remote set-url
。
但是您不需要创建新的远程分支。您的意思是您不想要另一个远程跟踪分支;以上就可以了。
让另一个遥控器指向一个备用网址就可以了。您可以通过以下方式添加它:
git remote add alternate https://github.com/account/repo.git
它不会带来低效率。所以而不是做
git fetch
您现在将指定哪一个
git fetch origin
或者
git fetch alternate
你可以给遥控器起任何你想要的名字。
同样的事情git push
。如果您不指定,您可以指定所需的程度并设置默认值。
一个存储库可以有多个遥控器。您可以添加具有不同 URI 方案的备用远程,即使它指向相同的底层存储库。例如,要从名为“alternate”的远程拉入您的主分支:
git remote add alternate https://github.com/MyName/MyProg.git
git checkout master
git pull alternate master
由于底层存储库是相同的,因此这不会对您的历史记录产生任何影响。无论您使用 SSH 还是 HTTPS 协议,历史记录都是相同的。
在不添加临时远程的情况下,您可以从临时目标中获取,如下所示
git fetch https://mytoken@github.com/<username>/<repo.git> master:remotes/origin/master
origin/master
这将从该临时远程 url 上的主分支更新refspec。