git clone с машины за брандмауэром на удаленную машину - PullRequest
2 голосов
/ 20 апреля 2011

я могу ssh с моей рабочей машины на мою домашнюю машину

Это работает

Работа $> ssh -x -Y myname@homemachine.dydns.org

Теперь, если я хочу клонировать git-репо на моей рабочей машине на мою домашнюю машину. Я выдаю команду

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

Но в итоге создается каталог с именем «myname@homemachine.dydns.org» с подкаталогами «home», а затем «myname» на моей рабочей машине. Репо получает клоны в этот глупо названный каталог на моей локальной рабочей машине независимо от того, какую схему URL я использую ssh: // или rsync: //

Что я делаю не так. Я прочитал несколько вопросов, которые казались связанными, но не могу понять, почему это не удается

1 Ответ

7 голосов
/ 20 апреля 2011

Сложно сказать по вашему вопросу, в каком направлении вы пытаетесь клонировать.

Если ваш репозиторий находится на вашей домашней машине, и вы пытаетесь клонировать его на свою рабочую машину, то у вас есть порядок аргументов в обратном порядке. Это git clone original clone, так что в вашем случае:

git clone myname@homemachine.dydns.org:/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 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
...