

GIT CHEAT SHEET
CREATE
- Clone an existing repository:
$ git clone ssh://user@domain.com/repo.git - Create a new local repository:
$ git init 
LOCAL CHANGES
- Changed files in your working directory:
$ git status - Changes to tracked files:
$ git diff - Add all current changes to the next commit:
$ git add . - Add some changes in 
<file>to the next commit:$ git add -p <file> - Commit all local changes in tracked files:
$ git commit -a - Commit previously staged changes:
$ git commit - Change the last commit (do not amend published commits!):
$ git commit --amend 
COMMIT HISTORY
- Show all commits, starting with the newest:
$ git log - Show changes over time for a specific file:
$ git log -p <file> - Who changed what and when in 
<file>:$ git blame <file> 
BRANCHES & TAGS
- List all existing branches:
$ git branch -av - Switch HEAD branch:
$ git switch <branch> - Create a new branch based on your current HEAD:
$ git branch <new-branch> - Create a new tracking branch based on a remote branch:
$ git checkout --track <remote/branch> - Delete a local branch:
$ git branch -d <branch> - Mark the current commit with a tag:
$ git tag <tag-name> 
UPDATE & PUBLISH
- List all currently configured remotes:
$ git remote -v - Show information about a remote:
$ git remote show <remote> - Add new remote repository, named 
<remote>:$ git remote add <shortname> <url> - Download all changes from 
<remote>, but don’t integrate into HEAD:$ git fetch <remote> - Download changes and directly merge/integrate into HEAD:
$ git pull <remote> <branch> - Publish local changes on a remote:
$ git push <remote> <branch> - Delete a branch on the remote:
$ git push <remote> --delete <branch> - Publish your tags:
$ git push --tags 
MERGE & REBASE
- Merge 
<branch>into your current HEAD:$ git merge <branch> - Rebase your current HEAD onto 
<branch>(do not rebase published commits!):$ git rebase <branch> - Abort a rebase:
$ git rebase --abort - Continue a rebase after resolving conflicts:
$ git rebase --continue - Use your configured merge tool to solve conflicts:
$ git mergetool - Use your editor to manually solve conflicts and (after resolving) mark file as resolved:
$ git add <resolved-file> $ git rm <resolved-file> 
UNDO
- Discard all local changes in your working directory:
$ git reset --hard HEAD - Discard local changes in a specific file:
$ git checkout HEAD <file> - Revert a commit (by producing a new commit with contrary changes):
$ git revert <commit> - Reset your HEAD pointer to a previous commit…and discard all changes since then:
$ git reset --hard <commit> - …and preserve all changes as unstaged changes:
$ git reset <commit> - …and preserve uncommitted local changes:
$ git reset --keep <commit>