【问题标题】:Temporarily using a different protocol with remote repository暂时对远程存储库使用不同的协议
【发布时间】:2013-07-02 18:42:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: git version-control git-remote git-fetch git-config


    【解决方案1】:

    您可以通过直接编辑文件或使用git configgit remote set-url.git/config 文件中的网址更改为您想要的网址。

    但您不需要创建新的远程分支。你的意思是你不想要另一个远程 tracking 分支;以上就可以解决问题了。

    让另一个遥控器指向一个备用网址就可以了。你可以这样添加:

    git remote add alternate https://github.com/account/repo.git
    

    它不会带来低效率。所以不要这样做

    git fetch 
    

    您现在将指定使用哪一个

    git fetch origin
    

    git fetch alternate
    

    你可以给遥控器起任何你想要的名字。

    git push 相同。如果不指定,您可以指定所需的程度并设置默认值。

    【讨论】:

      【解决方案2】:

      为备用协议添加新遥控器

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

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

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

      【讨论】:

      • 我不推荐使用 pull。它是 2 个命令合二为一。请先获取,然后根据获取的内容进行合并或变基或其他操作。仅当您通常独自工作并且只是在更新正在使用的另一台计算机或一些类似的简单场景时,才可以使用 Pull。我不建议将其作为默认的首选工作流程。
      • @AdamDymitruk Pull 与 fetch/merge 与 OP 的问题无关。问题是关于 URI 方案的,我相信我的回答很好地说明了这个用例,因为您将我的回答合并到了您的回答中。但是,如果您不喜欢使用 git-pull,请随意使用更适合您的合并工作流程。
      • 因此在评论中。
      【解决方案3】:

      您可以更改来源的网址:

      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。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2010-12-14
          • 1970-01-01
          • 2013-03-07
          • 1970-01-01
          • 2019-09-18
          • 2020-04-22
          • 2021-11-17
          • 2013-03-25
          • 1970-01-01
          相关资源
          最近更新 更多