2009-12-22 4 views
32

Я работаю над развертыванием приложения Django. Приложение построено на проекте Github OS. У меня это хранится локально как ветвь мастера.Как я могу направить конкретную ветку Git на мой сервер?

$ git branch 
* master 
    customized - customized with local dev settings 
    webfaction_customized - with production server settings 

Настройки для этого проекта хранятся в двух отдельных ветвях.

Мой план был выполнить свою настройку локально в «адаптировано», а затем объединить эти изменения в «webfaction_customized»

Затем надавите эти изменения в голое хранилище на production_server: Я бы тогда клонировать этот голый репозиторий на production_server, измените настройки в клонированном репозитории и перезапустите процесс fcgi.

Первая проблема заключалась в том, что я нашел это, если попытался направить ветвь на сервер, который не был мастером, я не мог клонировать из голого репозитория.

Поэтому я попытался нажать ведущую ветвь на сервер.

git push webfaction_server master 

Но теперь я обнаружил, что ни одна из моих ветвей не загружена.

Есть ли способ подтолкнуть конкретную ветвь к оголенному репозиторию и уметь клонировать эту ветку?

ИЛИ

мне нужно перестроить свой проект так, что мастер филиал мои настройки и проект Github будет в филиале GitHub ли?

+1

Есть ли какие-либо сообщения об ошибках? Вы сказали, что не можете клонировать голый репозиторий, когда вы толкнете не-мастер-ветку. Какая ошибка? И есть ли какая-либо ошибка при нажатии главной ветви? – jonescb

+0

Действительно ли «webfaction_server» настроен как удаленный? Что говорит «git remote show»? – ebneter

+0

Это ошибка, когда вы пытаетесь клонировать ветвь, отличную от мастера. Предупреждение: удаленный HEAD ссылается на несуществующий ref, неспособный проверить. – BryanWheelock

ответ

1

Ваша команда push кажется правильной, если webfaction_server является именем удаленным, а не только адресом сервера. Запустите git help remote, чтобы узнать больше о нажатии и вытягивании в/из нескольких пультов.

0

Возможно, вам потребуется обновить информацию о сервере с помощью git-update-server-info. Этот инструмент будет обновлять информацию HEAD на сервере с помощью последних хэшей хэширования, обновлять старые ветви и делать видимыми новые ветви. В частности, он обновит файл info/refs в вашем репозитории git. Вам нужно будет запустить это на сервере, так что, возможно, что-то вроде следующее может быть полезным:

ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info" 

Это может быть возможным, чтобы вызвать это обновление, возможно, с последующей фиксацией ловушкой, но не пробовал все же.

+0

Hi Egon. Что на самом деле делает update-server-info? Не могли бы вы немного объяснить это? –

1

В сообщении 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 обоих репозиториев.

+0

Я думаю, что 'git br' - это определенная команда из https://github.com/larsbrinkhoff/git-scripts/blob/master/git-br – tashuhka

+0

@tashuhka исправлена, спасибо. Нет, для меня это просто псевдоним «git branch». –

62

Вы бы просто сделать:

git push origin webfaction_customized 

Где происхождение ваше имя удаленного и webfaction_customized Ваш заказ филиал.

Таким образом, при работе на главном филиале, вы толкая через:

git push origin master 
Смежные вопросы