[英]How can I push a specific branch of Git to my server?
我正在努力部署 Django 应用程序。 该应用程序构建在 Github OS 项目上。 我将它存储在本地作为主分支。
$ git branch
* master
customized - customized with local dev settings
webfaction_customized - with production server settings
此项目的自定义存储在 2 个独立的分支中。
我的计划是在“customized”中本地执行我的自定义,然后将这些更改合并到“webfaction_customized”中
然后将这些更改推送到 production_server 上的裸存储库:然后我将在 production_server 上克隆这个裸存储库,更改克隆存储库中的设置并重新启动 fcgi 进程。
第一个问题是,如果我尝试将一个分支推送到不是 master 的服务器,我发现了这一点,我无法从裸存储库克隆。
所以我尝试将 master 分支推送到服务器。
git push webfaction_server master
但是现在我发现我的分支都没有上传。
有没有办法将特定分支推送到裸存储库并能够克隆该分支?
或
我是否需要重构我的项目,以便 Master 分支是我的自定义,而 Github 项目将在 github 分支中?
你会简单地做:
git push origin webfaction_customized
其中 origin 是您的远程名称,而 webfaction_customized 是您的自定义分支。
因此,当您在 master 分支上工作时,您正在通过以下方式推送:
git push origin master
你会简单地做:
git push origin localBranchName:remoteBranchName
消息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
run n 两个存储库的输出粘贴到此处。
您的推送命令似乎是正确的,假设webfaction_server
是远程的名称而不仅仅是服务器地址。 运行git help remote
以了解有关向/从多个遥控器推送和拉动的更多信息。
您可能需要使用git-update-server-info 更新服务器信息。 此工具将使用最近的提交哈希更新服务器上的 HEAD 信息,更新旧分支并使新分支可见。 特别是,它将更新您的 git 存储库中的info/refs文件。 您需要在服务器上运行它,因此,以下内容可能有用:
ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info"
可能会触发该更新,可能使用 post-commit 钩子,但还没有尝试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.