Как скопировать локальный репозиторий на удаленный сервер с помощью git?

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

Итак, вот что я сделал в моей папке local mywebsite/:

git init
git add .
git commit -m "Initial commit"

Затем на моем веб-сервере:

mkdir ~/public_html/myrepo.git
cd myrepo.git
git init --bare

Затем в моей локальной папке mywebsite/:

git remote add remote_mywebsite ssh://[email protected]:port/~/public_html/myrepo.git
git push remote_mywebsite master

который дал этот результат:

Counting objects: 89, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (74/74), done.
Writing objects: 100% (89/89), 61.94 KiB, done.
Total 89 (delta 2), reused 0 (delta 0)
To ssh://[email protected]:8943/~/public_html/myrepo.git
 * [new branch]      master -> master

git pull remote_mywebsite

Но когда я вхожу на свой веб-сервер, в myrepo.git, у меня все еще есть эти файлы и папки

./
../
branches/
config
description
HEAD
hooks/
info/
objects/
refs/

и я не получаю файлы и папки, которые у меня есть в локальной папке mywebsite.

Как я могу получить свой код в удаленной папке myrepo.git? Я сделал что-то не так?

Большое спасибо за вашу помощь!

Ответ 1

Вы создали удаленный репозиторий без рабочего каталога (который является целью опции --bare). Далее вам нужно клонировать этот удаленный репозиторий в каталог вашего сайта. Я использую тот же подход; У меня есть каталог ~/git с одним или несколькими родительскими репозиториями git, а затем клонами для одного или нескольких веб-сайтов. Ваши действия могут быть следующими:

# locate your bare repository in a 'git' directory
remote$ mkdir ~/git; mkdir ~/git/mywebsite.git; cd ~/git/mywebsite.git; git init --bare

# set this up as your remote
local$ git remote add origin ssh:.../git/mywebsite.git
local$ git push origin ...

# on the remote, clone into your working website
remote$ cd ~/public_html
remote$ git clone ~/git/mywebsite.git mywebsite

Используя этот подход, вы можете разрабатывать локально, нажимать на удаленный доступ так часто, как вам нравится, а затем, когда вы будете готовы, git pull на пульте, чтобы фактически обновить веб-сайт.