Git Cheat Sheet
CREATE
| description | usage |
|---|---|
| Clone an existing repository | $ git clone ssh://user@domain.com/repo.git |
| Create a new local repository | $ git init |
LOCAL CHANGES
| description | usage |
|---|---|
| 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. Don't amend published commits! | $ git commit --amend |
COMMIT HISTORY
| description | usage |
|---|---|
| Show all commits, starting with newest | $ git log |
| Show changes over time for a specifc file | $ git log -p <file> |
| Who changed what and when in <file> | $ git blame <file> |
BRANCHES & TAGS
| description | usage |
|---|---|
| List all existing branches | $ git branch -av |
| Switch HEAD branch | $ git checkout <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
| description | usage |
|---|---|
| List all currently confgured 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 branch -dr <remote/branch> |
| Publish your tags | $ git push --tags |
MERGE & REBASE
| description | usage |
|---|---|
| Merge <branch> into your current HEAD | $ git merge <branch> |
| Rebase your current HEAD onto <branch>. Don't rebase published commits! | $ git rebase <branch> |
| Abort a rebase | $ git rebase --abort |
| Continue a rebase after resolving conflicts | $ git rebase --continue |
| Use your confgured 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
| description | usage |
|---|---|
| Discard all local changes in your working directory | $ git reset --hard HEAD |
| Discard local changes in a specifc 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> |