Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 对远程存储库临时使用不同的协议_Git_Version Control_Git Remote_Git Fetch_Git Config - Fatal编程技术网

Git 对远程存储库临时使用不同的协议

Git 对远程存储库临时使用不同的协议,git,version-control,git-remote,git-fetch,git-config,Git,Version Control,Git Remote,Git Fetch,Git Config,我的笔记本电脑上有一个git存储库,GiHub上有一个远程存储库(运行“git clone”时创建的直接配置) 我正在使用SSH传输协议。i、 e.远程地址为:git@github.com:MyName/MyProg.git 我现在处于一个端口23被阻塞的网络环境中(据我所见,只有端口80和443是打开的)。我需要获取/合并服务器上最近可用的更改。我有什么选择?如果可能的话,我希望避免使用http协议创建一个新的远程分支(它基本上与我已有的远程分支相同)。您只需通过直接编辑文件或使用git co

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

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


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

您只需通过直接编辑文件或使用
git config
git remote set url
.git/config
文件中的url更改为所需的url即可

但您不需要创建新的远程分支。你的意思是你不想要另一个远程跟踪分支;上述方法可以奏效

让另一个远程指向另一个url是很好的。您可以这样添加它:

git remote add alternate https://github.com/account/repo.git
它不会带来低效。因此,与其这样做

git fetch 
现在,您将指定哪一个具有

git fetch origin

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

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

为备用协议添加新的远程设备 一个存储库可以有多个远程设备。您可以添加具有不同URI方案的备用远程存储库,即使它指向相同的基础存储库。例如,要从名为“alternate”的远程分支拉入主分支,请执行以下操作:

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

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

您可以更改源url:

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-vgit@github.com


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

如果不添加临时远程设备,您可以按如下方式从临时目标获取

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

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

我不建议使用pull。它是一个2个命令。先提取,然后根据提取的内容进行合并或重新设置基础或其他操作。只有在您通常单独工作,并且您只是在更新您正在使用的另一台计算机或类似的简单场景时,Pull才可以。我不建议将其作为默认的转到工作流。@AdamDymitruk Pull vs.fetch/merge与OP的问题无关。问题是关于URI方案的,我相信我的答案很好地说明了这个用例,因为您将我的答案合并到了您的答案中。但是,如果您不喜欢使用,请随意使用任何更适合您的合并工作流程。因此,它在评论中。
git fetch https://mytoken@github.com/<username>/<repo.git> master:remotes/origin/master