51

У меня есть папка 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-репозиторий ... мне нужно это делать? Я иду по правильному маршруту вообще?

Благодарю.

3 ответа3

54

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

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

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

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 с клиента.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .