Подтвердить что ты не робот

Как я могу направить конкретный ветвь 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?

4b9b3361

Ответ 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"

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