git push, где скрыт исходный код? - PullRequest
3 голосов
/ 29 июня 2010

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

git remote add origin path_to_git_server
git push origin master

Затем на git-сервере я нашел «главный» файл в ~/git/log.git/ref/heads, но нигде не могу найти все исходные коды. Мне нужно указать на исходные папки, чтобы он работал на веб-сервере Apache. Что я тут не так сделал? Спасибо.

Ответы [ 3 ]

6 голосов
/ 29 июня 2010

Вероятно, вы создали репозиторий git init --bare - это не будет работать, так как это только репозиторий git, а не рабочая стадия.Я собираюсь настроить это как макет из трех машин, но он может работать на двух или даже на одной машине.

Машина A (ваша машина разработки)

Машина B (вашаудаленный репозиторий)

Машина C (ваша производственная среда)

(Но если у вас есть производство, разработка и «удаленный» репозиторий на одной машине, это тоже хорошо)

Когдавы готовы нажать на компьютер B (Repo), вы фиксируете всю свою работу, ставите ее правильно, затем выполняете git push (после выполнения удаленного добавления и т. д.), чтобы обновить удаленный репозиторий Bare со всеми изменениями из вашегомашина с момента последнего нажатия (представьте, что вы синхронизируете содержимое вашей папки .git на компьютере a с удаленным репо)

Поскольку Git заботится только об изменениях содержимого ваших файлов (а не осами файлы или папки - поверьте мне, Git не заботится о ваших файлах - только о содержимом) он не хранит файлы на одной машине B, как вы видите на своей машине A "Рабочая стадия"Git помещает эти файлы в рабочую стадию, чтобы вы могли их использовать и разрабатывать - но Git их не волнует - опять же, он заботится только об изменениях в содержимом «файлов» с момента последней фиксации.

Чтобы развернуть ваш код, вам нужно перейти на компьютер C и клонировать репозиторий на компьютере B - это синхронизирует папку «.git» с этим компьютером, а затем создает последующие файлы / папки на основе всего содержимого, которое на нем находится.отслеживаются.После того, как вы клонировали этот репозиторий, вы можете получать будущие обновления через git pull

Вот и все.Если у вас есть все это на одном компьютере, вы можете сделать что-то вроде:

~/projects/git_project (Your devel area)
/home/repo/git_project.git ("Remote" repo)
/opt/rails/git_project ("Production" machine)

Наличие удаленного репо на одном компьютере избыточно, так как вы можете технически тянуть и толкать с

~/projects/git_project

на

/opt/rails/git_project

Но просто следуя примеру

3 голосов
/ 29 июня 2010

Репозиторий на сервере является голым репозиторием.По соглашению он находится в каталоге с именем project_name.git.

В голом хранилище нет извлеченной рабочей копии исходного кода вашего проекта, как в вашем локальном хранилище.Весь исходный код находится внутри сжатых файлов данных.

Чтобы опубликовать исходный код через веб-сервер, вам необходимо веб-приложение, которое может читать эти файлы, например Gitweb или Gitosis .

Возможно, вы захотите прочитать Какой лучший веб-интерфейс для репозиториев Git? здесь, на SO, прежде чем выбрать один из них: -)


Для использования capistrano (илидругой инструмент для сборки или развертывания) с помощью git вы можете:

  • использовать git clone для создания нормальной рабочей копии (обычного репозитория non-bare git) где-нибудь на сервере сборки

  • запустить capistrano из этой копии

  • периодически использовать git pull для синхронизации этой копии с общим хранилищем.

0 голосов
/ 29 июня 2010

Вы можете создать пустой репозиторий на сервере. Пустой репозиторий не имеет локальной извлеченной копии ни одного из файлов, находящихся под контролем реверсии.

Если вы хотите иметь извлеченную копию на сервере, используйте git init без --bare для инициализации хранилища git и установите receive.denyCurrentBranch в ignore, чтобы разрешить команду push. Кроме того, вам нужно убедиться, что никто не изменяет файл в репозитории git на сервере.

См. http://toroid.org/ams/git-website-howto для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...