Как я могу поместить Git-репозиторий в папку по SSH?

53

У меня есть папка my-project, внутри которой я сделал git init , git commit -a и т. Д.

Теперь я хочу поместить его в пустую папку в / mnt / foo / bar на удаленном сервере.

Как я могу это сделать?

Я попробовал, основываясь на том, что я прочитал:

cd my-project
git remote add origin ssh://user@host/mnt/foo/bar/my-project.git
git push origin master

который казался неправильным (я предполагаю, что источник прибудет до пункта назначения), и это не удалось:

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Я бы хотел, чтобы это работало так, чтобы мне не приходилось обращаться к удаленному хосту и каждый раз вручную инициировать Git-репозиторий ... нужно ли это делать? Я иду по правильному маршруту вообще?

Благодарю.

богатый
источник

Ответы:

56

Команда верна; однако удаленный адрес должен также указывать на инициализированный Git-репозиторий. Хотя это разовая работа.

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"

(В Git «голое» хранилище - это хранилище без рабочего дерева.)

grawity
источник
11

Если вы хотите одновременно выполнить репо и обновить файлы на сервере , вы можете создать серверную git-ловушку для извлечения файлов после их отправки. В каталоге git на стороне сервера/hooks/ создайте файл с именем post-receiveи добавьте следующий код (обновив каталоги, чтобы они соответствовали структуре вашей папки):

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

Затем дайте файлу надлежащие разрешения, используя chmod +x post-receive

Более подробная информация и подробное объяснение здесь: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

Кайл Чадха
источник
2

Если вы не хотите создавать репозиторий вручную на сервере, вы можете установить gitosis , который автоматизирует процесс. Но для создания репозитория у вас должен быть какой-то процесс на сервере - вы не можете сделать это через соединение git ssh с клиента.

Майк Скотт
источник