# Git's cheat sheet
A highly opinionated Git cheat sheet:
Take a look at the Git tips.
# General
- cloning and switching to branch:
git clone <repository> -b <branch-name>
# Branches
- listing existing branches:
git branch -avv
- creating a new branch and switching to it:
git checkout -b <branch-name>
- creating a branch from a remote one and track it:
git checkout -t <remote>/<branch-name>
- pushing the branch and tracking it:
git push -u <remote> <branch-name>
- removing the remote branch:
git push <remote> :<branch-name>
(note the:
before the branch name) - removing a local branch:
git branch -d <branch-name>
(won't remove unmerged branches) - removing both local and remote branches:
git branch -rd <branch-name>
- removing branches that doesn't exist anymore on the repository:
git fetch -p
- renaming a branch:
git branch -m <current-branch-name> <new-branch-name>
- finding unmerged branches:
git banch --no-merged
- switching to a branch:
git checkout <branch-name>
# Tags
- listing existing tags with the message:
git tag -n<number-of-lines>
- creating a new tag:
git tag -a <tag-name> -m '<message>'
- pushing the tag:
git push <remote> <tag-name>
- removing a remote tag:
git push <remote> :<tag-name>
(note the:
before the tag name) - removing a local tag:
git tag -d <tag-name>
- renaming a tag:
git tag <old-tag-name> <new-tag-name>; git -d <old-tag-name>
- changing the tag's commit to the current one:
git tag -f <tag-name> <commit-hash>
# Stashes
- listing stashes:
git stash list
- creating a new stash:
git stash [save '<description>']
- applying the stash and remove it:
git stash pop <stash>
- removing all stashes:
git stash clear
- removing the stash:
git stash drop <stash>
# The <stash>
argument
- refering to a stash by its number:
stash@{<number>}
- most recent stash:
stash@{0}
- when ommiting the
<stash>
argument,stash@{0}
is assumed
References: git ready
# Remotes
- listing existing remotes:
git remote -v
- adding one:
git remote add <remote-name> <repository-url>
- removing one:
git remote rm <remote-name>
- renaming one:
git remote <current-remote-name> <new-remote-name>
- showing one:
git remote show <remote-name>
- changing URL:
git remote set-url <remote-name> <new-repository-url>
# Common remote names
origin
: default name of the cloned repositoryupstream
: name of the original repository (used when your repository is a fork)
# Reverts
Create a new commit which undo a previous one.
- reverting a commit:
git revert <commit-hash>
- reverting a merge:
git revert -m 1 <merge-commit-hash>