git usage with remote 'origin' repository

I’m just picking up git, after years of svn and cvs. I’ve got the hang of most of it, but I don’t feel like my common usage sequence is optimal.

My setup:
I do development on my workstation with a local, cloned repository from the origin server, which on my project, is being treated like a “master” repository. I do git fetch regularly, check the new updates, then git merge to merge them if they are relevant.

However, it is when I’m working on and checking in a branch of code wherein my doubt lies.

A common sequence I use:

git branch somenewbranch
git checkout somenewbranch
... work work work ...
git add [changed files]
git commit
git checkout master
git merge somenewbranch
git branch -d somenewbranch

Here is what I think could be optimized:

git push origin master:blahblah         # This won't let me push to master branch
ssh origin
cd repodir
git merge blahblah
git branch -d blahblah
logout
git status                              # this shows me I'm still ahead
git pull origin                         # to bring them back in sync
git remote show origin                  # shows I have a stale blahblah branch
git remote prune origin                 # cleans that up

And now I’ve got them synchronized. This seems like a lot of extra steps to sync my local and the “master” repository.

Can someone help me optimize my usage?

Thank you.

EDIT: If I don’t do the separate branch, I receive an error that states:

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.

  • Is squashing commits into one best practice (for this particular workflow)?
  • Keeping repositories in sync without being able to push and pull commits
  • Git workflow - Reverting a feature branch from release branch
  • Git + Shared hosting workflow, ideas?
  • Contributing using git
  • Local branches show-up on GitHub's “Network” view
  • Who propagate bugfixes across branches (corporate development)?
  • git & svn externals - a final solution yet?
  • 2 Solutions collect form web for “git usage with remote 'origin' repository”

    If you just use git push after you’ve made changes, and you are ahead of origin/master, then everything should go fine. Why are you explicitly specifying a different remote branch to push your local master branch to?

    Are you having trouble pushing to your origin repository because it’s complaining about a checked-out branch? If so, you are making a common mistake. You need to be using a bare repo as your origin so that Git can accept changes without causing problems with the working copy on the server.

    Setting up a Private (bare) Repo

    How to convert a normal Git repository to a bare one?

    I would suggest fetching and merging BEFORE you push to ORIGIN. If you do that, you should be able to push directly to your master branch.

    Git Baby is a git and github fan, let's start git clone.