我在笔记本电脑上有一个git存储库,以及GiHub上的远程存储库(运行'git clone'时创建的直接配置)。
我正在使用SSH传输协议。即远程地址是:git@github.com:MyName/MyProg.git
我现在处于端口23被阻止的网络环境中(据我所见,只有端口80和443打开)。我需要获取/合并服务器上可用的最新更改。我有什么选择?如果可能的话,我想避免使用http协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同)。
答案 0 :(得分:5)
您可以更改原点的网址:
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
。
BTW,ssh端口号是22号,而不是23号。
答案 1 :(得分:3)
您只需直接修改文件或使用.git/config
或git config
,即可将git remote set-url
文件中的网址更改为您想要的网址。
但您不需要创建新的远程分支。你的意思是你不想要另一个远程跟踪分支;以上就可以了。
让另一个遥控指向备用网址就好了。您可以这样添加:
git remote add alternate https://github.com/account/repo.git
它带来的效率不高。所以不要做
git fetch
您现在将使用
指定哪一个git fetch origin
或
git fetch alternate
您可以为遥控器提供您想要的任何名称。
与git push
相同。如果未指定,可以指定所需的程度并设置默认值。
答案 2 :(得分:0)
您可以为存储库提供多个遥控器。您可以使用不同的URI方案添加备用远程,即使它指向同一个底层存储库。例如,要从名为“alternate”的远程控制器拉入主分支:
git remote add alternate https://github.com/MyName/MyProg.git
git checkout master
git pull alternate master
由于底层存储库是相同的,因此这不会对您的历史记录产生任何影响。无论您使用SSH还是HTTPS协议,历史记录都是相同的。
答案 3 :(得分:0)
如果不添加临时遥控器,您可以从临时目标中获取,如下所示
git fetch https://mytoken@github.com/<username>/<repo.git> master:remotes/origin/master
这将从该临时远程网址的主分支更新origin/master
refspec。