如何将Git的特定分支推送到我的服务器?

时间:2009-12-22 17:37:44

标签: git

我正在努力部署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分支中?

5 个答案:

答案 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 -acat .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