Я хотел бы использовать git для загрузки файлов на мой веб-сайт.Тем не менее, сайт разработан с использованием двух разных git-репозиториев.Каждый репозиторий содержит файлы для отдельной части сайта.
Вот часть, которая работает:
У меня есть веб-сайт на example.com.На этом удаленном сервере я установил папку /var/www/example/web/
, из которой обслуживается сайт.Я также создал папку на /var/www/example/git/web.git/
и инициализировал ее как пустой git-репозиторий.Файл hooks/post-receive
в этой папке представляет собой исполняемый текстовый файл со следующим содержимым:
#!/bin/sh
GIT_WORK_TREE=/var/www/example/web git checkout -f
На моей машине для разработки у меня есть локальный репозиторий git с удаленной веткой с именем dotcom
:
git remote -v
dotcom ssh://user@XXX.XXX.XXX.XXX/var/www/example/git/web.git (fetch)
dotcom ssh://user@XXX.XXX.XXX.XXX/var/www/example/git/web.git (push)
Когда я звоню git push dotcom master
, эта часть сайта обновляется, как и ожидалось.
Вот часть, которую мне нужно выяснить:
У меня есть второй репозиторий, гдеЯ разрабатываю новое веб-приложение.Я использую сайт разработки на 'example.net
, чтобы проверить это.Сайт на example.net
работает нормально, но некоторые части приложения готовы к развертыванию на example.com
.Я не хочу развертывать все в example.com
: только те части, которые готовы.
Вот что я попробовал:
Во втором хранилище я создал несвязанную ветвь:
git checkout --orphan fordotcom
Я расшифровал все части проекта, которые я не хочу загружать в example.com
.
git rm --cached <foldername>
Я создал удаленную ветку для этого хранилища, указывая на example.com
сервер:
git remote add dotcom2 ssh://user@XXX.XXX.XXX.XXX/var/www/example/git/web.git
Я использовал git push dotcom2 fordotcom
для загрузки необходимых файлов на сервер.Однако загруженные файлы не копируются в папку web
.Предположительно, это потому, что они не находятся в ветке под названием master
git push dotcom2 fordotcom
Counting objects: 111, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (105/105), done.
Writing objects: 100% (111/111), 30.69 MiB | 3.91 MiB/s, done.
Total 111 (delta 0), reused 0 (delta 0)
To ssh://user@XXX.XXX.XXX.XXX/var/www/example/git/web.git
* [new branch] fordotcom -> fordotcom
Что было бы хорошим решением для этого?Я могу себе представить:
- Слияние файлов
fordotcom
с master
на удаленном сервере (но возможно ли это, учитывая, что они приходят из другого хранилища?) - Копирование файлов из второго репозитория вручную в первый репозиторий (но тогда любые обновления второго репозитория не будут автоматически применяться к первому)
- Добавление соответствующих папок второго репозитория в первый репозиторий таким же образомфайлы отслеживаются обоими репозиториями (но разумно ли и как мне это сделать, учитывая, что репозитории имеют разные корневые папки?)
- Создание папки
git/app.git/
рядом с папкой git/web.git/
и использование этогодля удаленного для второго хранилища (но вызовет ли это конфликт, если два хранилища попытаются обновить файлы в одном месте?) - Принятие какого-то совершенно другого решения, которое вы можете предложить, потому что у вас больше опытаиспользуя мерзавца, чем у меня.