http://learngitbranching.js.org/ https://github.com/pcottle/learnGitBranching git branch -v [--list] get branches with hashes. git branch -a show all branches git branch -r show remote-only branches git ls-remote -v .. remote show-branch git checkout -b checks out a branch [branch-to-start-from] git branch -d delete a branch git branch -D force deleting a branch despite of non-merged data git push : delete a remote branch Orphan branches: git checkout --orphan git rm -rf . to clean up staging after that ... gh-pages ... later we can access such orphan-branch from github pages via (.github.com/) Remotes: git remote show origin remote show remote [-v] origin ... (fetch) origin ... (push) remote add git remote add git://...repo.git git fetch git push master[or other branch name here] now git remote should list public git remote show public ... Note: remote can be a local FS path (/...) pull = fetch + merge also shows the latest branches available Checkout: git checkout git checkout --track / create a branch which will track remote branch --track is needed if you have more than one remote, otherwise - by default REBASE: interactive: git rebase -i auto: git config --global branch.autosetuprebase always git config branch.7.x.rebase true protection (to disable git push --force): git config --system receive.denyNonFastForwards true Maintanance: check the peepcode gbrt ruby script (branches, sorted by time) Upstream-Set: http://zarino.co.uk/post/git-set-upstream git branch --set-upstream-to=...