Как я могу направить конкретный ветвь Git на мой сервер?
Я работаю над развертыванием приложения Django.
Приложение построено на проекте Github OS. Я храню это локально как ветвь мастера.
$ git branch
* master
customized - customized with local dev settings
webfaction_customized - with production server settings
Настройки для этого проекта хранятся в двух отдельных ветвях.
Мой план состоял в том, чтобы выполнить мою настройку локально в "customized", а затем объединить эти изменения в "webfaction_customized"
Затем переместите эти изменения в голый репозиторий на production_server:
Затем я бы клонировал этот голый репозиторий на production_server, изменил настройки в клонированном репозитории и перезапустил процесс fcgi.
Первая проблема заключалась в том, что я нашел это, если попытался направить ветвь на сервер, который не был мастером, я не мог клонировать из голого репозитория.
Итак, я попытался нажать ведущую ветвь на сервер.
git push webfaction_server master
Но теперь я обнаружил, что ни одна из моих ветвей не загружена.
Есть ли способ перенаправить конкретную ветвь в открытый репозиторий и иметь возможность клонировать эту ветку?
ИЛИ
Нужно ли мне реструктурировать мой проект, чтобы главная ветвь была моей настройкой, а проект Github был бы в ветке github?
Ответы
Ответ 1
Вы просто выполните:
git push origin webfaction_customized
Если источником является ваше удаленное имя, а webfaction_customized - ваша настраиваемая ветка.
Следовательно, когда вы работаете на главной ветке, вы нажимаете через:
git push origin master
Ответ 2
Ваша команда push кажется правильной, если webfaction_server
- это имя удаленного, а не только адреса сервера. Запустите git help remote
, чтобы узнать больше о нажатии и вытягивании на/из нескольких пультов.
Ответ 3
Сообщение Warning: Remote HEAD refers to nonexistent ref, unable to checkout.
сообщает только, что ссылка HEAD не существует и, следовательно, Git не знает, какую ревизию следует проверить в вашем локальном рабочем каталоге.
Скорее всего, сами ветки на production_server
создаются правильно. Просто выполните git checkout <whatever-branch-you-want>
и начните взламывать.
Если это не решит проблему, вставьте здесь вывод git branch -a
и cat .git/config
запустите n обоих репозиций.
Ответ 4
вам может потребоваться обновить информацию о сервере с помощью git-update-server-info. Этот инструмент будет обновлять информацию HEAD на сервере с помощью последних хэшей хэширования, обновлять старые ветки и делать видимыми новые ветки. В частности, он обновит файл info/refs в вашем репозитории git. Вам нужно будет запустить это на сервере, поэтому может быть полезно что-то вроде следующего:
ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info"
Возможно, будет возможно запустить это обновление, возможно, с помощью коммита после фиксации, но еще не пробовал.