从远程计算机拉取一个git仓库到本地计算机

3

我已经在电脑B上建立了ssh连接,并通过ssh连接成功地连接到它。我想执行一个git pull命令,以便将repo拉到计算机A而不是B。这太麻烦了吗?或者也许有其他方法吗?

我基本上需要将电脑B上git pull拉取的任何内容复制到我的计算机A上。我所拥有的仅是两台计算机之间的ssh连接,且repo仅可从计算机B访问。


只需使用scp复制目录即可。 - DZDomi
你的实际目标是在A上访问B的远程仓库(B拉取的仓库)吗?如果是,你应该通过SSH隧道来实现。你不需要在B上建立一个中间仓库。你可以通过在B上进行隧道传输,使A直接访问B。 - Nikos C.
4个回答

3
如果我理解正确的话,您希望通过SSH隧道使用Git,以便计算机A可以通过计算机B访问计算机C上的存储库REPO.git。
以下是具体步骤:
1. 在计算机A上打开SSH隧道:
ssh -L3333:compC:22 compB
2. 在计算机A上的第二个控制台中:
git clone ssh://git@localhost:3333/REPO.git

1

我不确定这能否回答你的问题,但如果只是为了拉取,你可以在B上拉取后使用scp命令:

scp <source> <destination>

它将通过您的ssh连接进行复制,就像cp命令一样。

他不想使用FTP在计算机之间复制文件。他想从计算机A上执行计算机B的命令。 - kk.

1
另一种解决方案(我认为是最直接的解决方案)是:
  • 通过SSH连接到远程机器
  • 将远程更改推送到git分支
  • 从本地机器上的远程分支拉取更改

1

可以通过双重ssh隧道来运行git命令。那里的被接受的答案有点过时,ssh现在可以在没有外部命令(如netcatsocat)的情况下构建隧道。

在您的~/.ssh/config中进行配置:

Host server
   HostName git-server
   ProxyCommand ssh -W %h:%p B

这将配置ssh,启动到主机B的连接,并在该连接上打开一个通道到主机git-server。运行。
git pull ssh://server/path/to/repository

另一个可能的解决方案是使用ext:: remote helper。请参见链接问题的第二个答案。运行。
git pull "ext::ssh -t B ssh git-server %S '/path/to/repository'"

考虑到SSH隧道,如果我的电脑B通过我无法进行任何配置的路由器连接到互联网,我是否仍然可以在电脑B上建立一个隧道?因为如果我尝试使用SSH建立连接,它将首先到达端口22的路由器,而该路由器不知道要重定向到哪里。或者是我误解了? - moodseller
不,你需要一个VPN(包括通过SSH的VPN)从B到外部世界的服务器V。有了这个设置,你就可以通过V连接到B。 - phd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接