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

时间:2011-04-19 22:19:06

标签: 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都会克隆到我本地工作机器上这个愚蠢命名的目录

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

1 个答案:

答案 0 :(得分:7)

从您的问题中判断出您想要克隆的方向有点难。

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

git clone myname@homemachine.dydns.org:/home/myname ~/my_new_work_git_repo

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

如果你需要从你的工作机器到你的家用机器的repo,但不能从你的家用机器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