Як я можу натиснути сховище 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 "голий" сховище - це одне без робочого дерева.)


11

Якщо ви хочете як натиснути на репо, так і оновити файли на сервері , ви можете створити гачок на стороні сервера, щоб перевірити файли після їх натискання. У каталозі 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-з'єднання від клієнта.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.