我正在努力部署Django应用。 该应用程序构建在Github OS项目上。我把它存储在本地作为主分支。
$ 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
但现在我发现没有上传任何分支机构。
是否有某种方法可以将特定分支推送到裸存储库并能够克隆该分支?
OR
我是否需要重构我的项目,以便Master分支是我的自定义,而Github项目将在github分支中?
答案 0 :(得分:74)
您只需:
git push origin webfaction_customized
其中origin是您的远程名称,webfaction_customized是您的自定义分支。
因此,当您在主分支上工作时,您正在推动:
git push origin master
答案 1 :(得分: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
的输出,然后运行两个回购。
答案 2 :(得分:0)
您的push-command似乎是正确的,假设webfaction_server
是远程的名称,而不仅仅是服务器地址。运行git help remote
以了解有关推送和拉出多个遥控器的更多信息。
答案 3 :(得分:0)
您可能需要使用git-update-server-info更新服务器信息。此工具将使用最近的提交哈希更新服务器上的HEAD信息,更新旧分支并使新分支可见。特别是,它将更新您的git存储库中的 info / refs 文件。您将需要在服务器上运行它,因此,可能类似以下内容可能有用:
ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info"
有可能触发更新,可能是使用提交后挂钩,但尚未尝试过。
答案 4 :(得分:0)
您只需这样做:
git push origin localBranchName:remoteBranchName