2011-04-19 113 views
2

我可以从我的工作机器ssh到我家的机器混帐克隆到远程机器

这工作

工作$> SSH -X -Y [email protected]

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

工作$> git的克隆〜/ my_new_work_git_repo [email protected]:/家庭/ MYNAME

但这最终建立了一个名为 “[email protected]” 与子目录“home”,然后是“myname”在mY工作机器上。回购得到克隆到我的本地工作机器上这个愚蠢的命名目录,无论我尝试什么URL方案ssh://或rsync://

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

回答

7

这是一个有点硬从你的问题哪个方向,你正在试图克隆告诉。

如果你的仓库就在你的家机器,并且您试图将其克隆到您的工作机器上,那么您的参数顺序就会倒退。这是git clone original clone,所以你的情况:

git clone [email protected]:/home/myname ~/my_new_work_git_repo 

如果你的意思是你想克隆一个仓库是在工作,这样你就可以拥有它,你家的机器上,那么你就需要能够SSH在另一个方向;从你的家用机器到你的工作机器。您不能通过SSH“推送”克隆,只能“拉”(即,只能在本地计算机上创建克隆,无论是从本地还是远程回购)。

如果您需要从工作机器到您的家用机器的回购,但不能从您的家用机器SSH进入,您可以克隆到一个新的裸存储库,然后scp它到您的家用机器。现在,当你在家时,你可以克隆那个裸仓库,使用它,推送它等等。当你在工作时,你可以从中拉出来,推动它,等等。

这里是如何做到这一点的示例:

Work$> git clone --bare ~/my_work_repo repo.git 
Work$> scp -r repo.git [email protected]:/home/myname 
Work$> git remote add home [email protected]:/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 
+2

感谢布莱恩:“你不能‘推拉‘(即’通过SSH,你可以只克隆’你只能创建克隆本地机器,无论是从本地还是远程回购)。“这就是我正在寻找的答案。我已rsynced我的回购,并将按照您的工作流保持同步 – harijay 2011-04-19 23:09:36

+0

scp -r需要作为文件夹需要递归传输。 (stackoverflow不允许1字符编辑) – flurdy 2012-01-24 15:03:18

+0

@ flurdy谢谢,是的,这就是我的意思。 – 2012-01-24 23:48:20