How can I push a specific branch of Git to my server?

I'm working to deploy a Django app. The app built on a Github OS project. I have this stored locally as the Master branch.

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

The customizations for this project are stored in 2 separate branches.

My plan was to perform my customization locally in 'customized', then merge those changes into 'webfaction_customized'

Then push these changes to a bare repository on the production_server: I would then clone this bare repository on the production_server, change the settings in the cloned repository and restart the fcgi process.

The first problem was that I found this if I tried to push a branch to the server that wasn't master, I could not clone from the bare repository.

So I tried to push the master branch to the server.

git push webfaction_server master

But now I'm finding that none of my branches are uploaded.

Is there some way to push a specific branch to a bare repository and be able to clone that branch?

OR

Do I need to restructure my project so that Master branch is my customizations and the Github project would be in a github branch?


Solution 1:

You would simply do:

git push origin webfaction_customized

Where origin is your remote name and webfaction_customized is your custom branch.

Hence, when you work on the master branch, you are pushing via:

git push origin master

Solution 2:

You would simply do:

git push origin localBranchName:remoteBranchName

Solution 3:

The message Warning: Remote HEAD refers to nonexistent ref, unable to checkout. only tells you that the HEAD link does not exist and thus Git does not know which revision to check out to your local working directory.

Chances are that the branches on production_server themselves are created correctly. Just do a git checkout <whatever-branch-you-want> and start hacking away.

If it doesn't solve the issue, paste here the output of git branch -a and cat .git/config run n both repos.