Ветка git для стороннего проекта
Я новичок, так что простите мне отсутствие знаний, но я даже не уверен, какие вопросы искать в Google.
У меня большой проект, только я работаю над его локальной разработкой и отправляю его на удаленный веб-сервер с помощью git. На сервере есть хук после получения, который копирует файлы для обслуживания с помощью этой команды:
GIT_WORK_TREE=/my/remote/webserver/base/directory git checkout -f
Это работало хорошо в течение нескольких месяцев.
Теперь я хочу создать дополнительный ответ и запустить новую ветку на моем веб-сервере. Я также хочу иметь возможность переключаться между спин-оффами и мастер-ветками и перезаписывать код сервера, чтобы я мог разрабатывать два отдельных веб-сайта одновременно только с одним сервером. Для начала я создаю новую ветку git:
git checkout -b spinoff
Я добавил строку и сделал коммит:
git commit -a -m 'test'
[spinoff 51f90e9] test
1 file changed, 1 insertion(+)
Сейчас я пытаюсь нажать на удаленную ветку. Это не работает
git push origin master
(everything up to date)
Эта команда выдвигается, как и ожидалось, но не копирует файлы через веб-сервер
git push origin spinoff
Настройка для толкания к мастеру не помогает:
git branch --set-upstream spinoff origin/master
[под редакцией @Klas Mellbourn] Это синтаксис для git 1.7. , Если у вас есть git 1.8. синтаксис:
git branch -u origin spinoff
Я знаю, что мне здесь не хватает какой-то большой ключевой концепции. Я предполагаю, что есть два удаленных репозитория, как и ожидалось, но мне нужно настроить что-то еще, чтобы скопировать из репо спиноффа на веб-сервер.
Я думаю, что мне, возможно, придется редактировать файл HEAD в моем удаленном хранилище? Это в настоящее время содержит:
ref: refs/heads/master
2 ответа
git push origin master
обновляет сообщение, потому что вы пытаетесь выдвинуть хозяина ветки, который вы не изменили.
Ваш крюк делает мерзавец checkout -f
, что означает, что он проверяет ГОЛОВУ. Когда вы добавляете spinoff в свой репозиторий, HEAD не изменяется (он указывает на master), поэтому ничего не будет обновлено.
Вам нужно изменить свой хук, чтобы посмотреть, какие ссылки выдвигаются, или указать конкретную ветку как ту, которая будет проверена.
Хотя git не очень подходит в качестве правильного инструмента развертывания, посмотрите этот список для различных методов.
Синтаксис ваших команд мне не совсем понятен.
Это подтолкнет все ваши локальные ветви, которые соответствуют удаленным ветвям, на сервер.
git push origin
Это подтолкнет вашу локальную ответвленную ветвь к удаленному и сделает вашу локальную ветвь отслеживающей удаленный.
git push -u origin spinoff
Это настроит локальный ответвление ответвления для отслеживания удаленного ответвления ответвления (что не требуется, если вы выполнили предыдущую команду).
git branch -u origin spinoff