git克隆从机器后面的防火墙到远程机器

har*_*jay 2 git ssh git-clone

我可以从我的工作机器ssh到我的家用机器

这有效

工作$> ssh -x -Y myname@homemachine.dydns.org

现在,如果我想将我的工作机器上的git repo克隆到我的家用机器上.我发出命令

工作$> git clone~/my_new_work_git_repo myname@homemachine.dydns.org:/ home/myname

但最终会创建一个名为"myname@homemachine.dydns.org"的目录,其子目录为"home",然后是mY工作机上的"myname".无论我尝试使用什么URL方案ssh://或rsync:// repo都会克隆到我本地工作机器上这个愚蠢命名的目录

我究竟做错了什么.我阅读了几个似乎相关的问题,但无法弄清楚为什么会失败

Bri*_*ell 7

从你的问题中判断出你要克隆的方向有点难.

如果您的存储库位于您的家庭计算机上,并且您正尝试将其克隆到您的工作计算机上,那么您将向后设置参数顺序.就是git clone original clone这样,在你的情况下:

git clone myname@homemachine.dydns.org:/home/myname ~/my_new_work_git_repo
Run Code Online (Sandbox Code Playgroud)

如果您的意思是尝试克隆正在运行的存储库,那么您可以在家用计算机上使用它,那么您将需要能够在另一个方向上进行SSH; 从您的家用机器到您的工作机器.您无法通过SSH"推送"克隆,只能"拉"(即,您只能通过本地或远程仓库在本地计算机上创建克隆).

如果您需要从工作机器到家用机器的回购,但无法从家用机器进行SSH,您可以只需克隆到新的裸存储库,然后再将scp其存入您的家用机器.现在,当你在家时,你可以克隆那个裸存储库,使用它,推送它等等.当你在工作时,你可以从它,拉到它,等等.

这是一个如何工作的例子:

Work$> git clone --bare ~/my_work_repo repo.git
Work$> scp -r repo.git myname@homemachine.dydns.org:/home/myname
Work$> git remote add home myname@homemachine.dydns.org:/home/myname/repo.git

Home$> git clone repo.git my_home_repo
Home$> cd my_home_repo
Home$> # edit, commit, etc
Home$> git push origin

Work$> git remote update
Work$> git pull home master
Run Code Online (Sandbox Code Playgroud)

  • 谢谢Brian:"你不能通过SSH"推送"克隆,你只能"拉"(也就是说,你只能通过本地或远程仓库在本地机器上创建克隆)." 多数民众赞成我正在寻找的答案.我已经恢复了我的回购,并将按照您的工作流程保持同步 (2认同)