How do I push a new local branch to a remote Git repository and track it too?

Question

How do I:

  1. Create a local branch from another branch (via git branch or git checkout -b).

  2. Push the local branch to the remote repository (i.e. publish), but make it trackable so that git pull and git push will work.

Answer

In Git 1.7.0 and later, you can checkout a new branch:

git checkout -b <branch>

Edit files, add and commit. Then push with the -u (short for --set-upstream) option:

git push -u origin <branch>

Git will set up the tracking information during the push.

How to get just one file from another branch

Clean up a fork and restart it from the upstream