клонирование git с компьютера за брандмауэром На удаленный компьютер

#git #ssh #git-clone

#git #ssh #git-клонирование

Вопрос:

Я могу использовать ssh со своей рабочей машины на свою домашнюю машину

Это работает

Work $> ssh -x -Y мое имя@homemachine.dydns.org

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

Work$> git clone ~/my_new_work_git_repo мое имя@homemachine.dydns.org:/home/myname

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

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

Ответ №1:

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

Если ваш репозиторий находится на вашем домашнем компьютере, и вы пытаетесь клонировать его на свой рабочий компьютер, тогда у вас есть обратный порядок аргументов. Это 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
  

Комментарии:

1. Спасибо Брайану: «Вы не можете «протолкнуть» клон по SSH, вы можете только «вытащить» (то есть вы можете создать клон только на локальной машине, либо из локального, либо из удаленного репозитория)». Это ответ, который я искал. Я повторно синхронизировал свой репозиторий и буду следить за вашим рабочим процессом, чтобы оставаться в синхронизации

2. scp -r необходим в качестве папки, которую необходимо повторно перенести. (stackoverflow не разрешает редактирование 1 символа)

3. @flurdy Спасибо, да, это то, что я имел в виду.