4

我的笔记本电脑上有一个 git 存储库,以及 GiHub 上的一个远程存储库(运行“git clone”时创建的直接配置)。

我正在使用 SSH 传输协议。即远程地址为:git@github.com:MyName/MyProg.git

我现在处于一个端口 23 被阻塞的网络环境中(据我所知,只有端口 80 和 443 是开放的)。我需要获取/合并服务器上可用的最新更改。我有哪些选择?如果可能的话,我想避免使用 http 协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同)。

4

4 回答 4

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.

顺便说一句,ssh 端口号是 22,而不是 23。

于 2013-07-04T17:54:07.470 回答
3

您可以.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。如果您不指定,您可以指定所需的程度并设置默认值。

于 2013-07-04T17:39:44.417 回答
0

为备用协议添加新遥控器

一个存储库可以有多个遥控器。您可以添加具有不同 URI 方案的备用远程,即使它指向相同的底层存储库。例如,要从名为“alternate”的远程拉入您的主分支:

git remote add alternate https://github.com/MyName/MyProg.git
git checkout master
git pull alternate master

由于底层存储库是相同的,因此这不会对您的历史记录产生任何影响。无论您使用 SSH 还是 HTTPS 协议,历史记录都是相同的。

于 2013-07-04T17:47:27.390 回答
0

在不添加临时远程的情况下,您可以从临时目标中获取,如下所示

git fetch https://mytoken@github.com/<username>/<repo.git> master:remotes/origin/master

origin/master这将从该临时远程 url 上的主分支更新refspec。

于 2017-01-30T03:24:23.450 回答