Как я могу отправить определенную ветку Git на мой сервер? - PullRequest
40 голосов
/ 22 декабря 2009

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

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

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

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

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

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

Итак, я попытался отправить основную ветку на сервер.

git push webfaction_server master

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

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

ИЛИ

Нужно ли мне реструктурировать мой проект так, чтобы ветка Master была моей настройкой, а проект Github был в ветке github?

Ответы [ 4 ]

74 голосов
/ 27 февраля 2013

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

git push origin webfaction_customized

Где origin - ваше удаленное имя, а webfaction_customized - ваша пользовательская ветвь.

Следовательно, когда вы работаете в основной ветке, вы продвигаетесь через:

git push origin master
1 голос
/ 22 декабря 2009

Сообщение 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, запустите оба репозитория.

0 голосов
/ 22 декабря 2009

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

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

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

0 голосов
/ 22 декабря 2009

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

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