It is important to specify
<remote> <branch> in every pull and push in the scenario. If not specified, would be default master.
# list all branches, including local and remote git branch -a # create new local branch git branch <new_branch_name> # switch to another branch git checkout <another_branch> # switch no to new local branch (combine the steps above) git checkout -b <new_branch_name> # delete a branch, use -D for force delete # need to checkout to another branch before delete git branch -d <branch>
# clone a repository in specific remote branch git clone --branch <branch_name> <remote_repo_url> git clone -b <branch_name> <remote_repo_url> # clone a specific remote branch # and does not track other remote branch git clone -b <branch_name> --single-branch <remote_repo_url>
- pull (fetch+merge)
git pull origin <branch>
# push to a new remote branch not yet created git push --set-upstream <remote> <branch_name> git push -u <remote> <branch_name> # push to remote branch git push <remote> <branch_name> # delete a remote branch git push <remote> --delete <remote_branch_name>
<remote> would be
origin unless working with another repository (eg. deploying app to heroku)
origin stands for the remote repository that a project was originally cloned from.
- overwrite local repository
git fetch --all git reset --hard origin/master
replace master with whatever branch originally wanted