I was tired of looking up the same common Git commands - so I made a cheat sheet that I could print and put on my office wall.
This cheat sheet contains 50 commonly used Git commands on the following topics:
- Setting up Git
- Starting a project
- Making a change
- Basic concepts
- Branching
- Merging
- Rebasing
- Undoing things
- Reviewing your repo
- Stashing
- Synchronising local and remote repositories
Git Commands Cheat Sheet PDF
One page PDF to make it easy to copy and paste in commands.
Download the Git Commands Cheat Sheet PDF here
Both PDF and poster are available in Light Mode and Dark Mode:
Git Cheat Sheet Poster
Order a physical A3 poster for your office wall - so you can quickly look up commands, and keep them at the top of your head.
It comes in thick durable paper, and a matte, light-absorbing finish.
Order a Git Cheat Sheet Poster here
Here's mine on my office wall:
Here are all of the commands from the cheat sheet:
Setup
Set the name and email that will be attached to your commits and tags
$ git config --global user.name "Danny Adams"
$ git config --global user.email "myemail@gmail.com"
Starting a Project with Git
Create a local repo (omit <directory>
to initialise the current directory as a git repo)
$ git init <directory>
Download a remote repo
$ git clone <url>
Make a Change
Add a file to staging
$ git add <file>
Stage all files
$ git add .
Commit all staged files to git
$ git commit -m "commit message"
Add all changes made to tracked files & commit
$ git commit -am "commit message"
Basic Git Concepts
main: default development branch
origin: default upstream repo
HEAD: current branch
HEAD^: parent of HEAD
HEAD~4: great-great grandparent of HEAD
Branches
List all local branches. Add -r
flag to show all remote branches. -a
flag for all branches.
$ git branch
Create a new branch
$ git branch <new-branch>
Switch to a branch & update the working directory
$ git checkout <branch>
Create a new branch and switch to it
$ git checkout -b <newbranch>
Delete a merged branch
$ git branch -d <branch>
Delete a branch, whether merged or
not
$ git branch -D <branch>
Add a tag to current commit (often used for new version releases)
$ git tag <tag-name>
Merging
Merge branch a
into branch b
. Add --no-ff
option for no-fast-forward merge
$ git checkout b
$ git merge a
Merge & squash all commits into one new commit
$ git merge --squash a
Rebasing
Rebase feature branch onto main (to incorporate new changes made to main). Prevents unnecessary merge commits into feature, keeping history clean
$ git checkout feature
$ git rebase main
Interactively clean up a branches commits before rebasing onto main
$ git rebase -i main
Interactively rebase the last 3 commits on current branch
$ git rebase -i Head~3
Undoing Things
Move (&/or rename) a file & stage move
$ git mv <existing_path> <new_path>
Remove a file from working directory & staging area, then stage the removal
$ git rm <file>
Remove from staging area only
$ git rm --cached <file>
View a previous commit (READ only)
$ git checkout <commit_ID>
Create a new commit, reverting the changes from a specified commit
$ git revert <commit_ID>
Go back to a previous commit & delete all commits ahead of it (revert is safer). Add --hard
flag to also delete workspace changes (BE VERY CAREFUL)
$ git reset <commit_ID>
Review your Repo
List new or modified files not yet committed
$ git status
List commit history, with respective IDs
$ git log --oneline
Show changes to unstaged files. For changes to staged files, add --cached
option
$ git diff
Show changes between two commits
$ git diff commit1_ID commit2_ID
Stashing
Store modified & staged changes. To include untracked files, add -u
flag. For untracked & ignored files, add -a
flag.
$ git stash
As above, but add a comment.
$ git stash save "comment"
Partial stash. Stash just a single file, a collection of files, or individual changes from within files
$ git stash -p
List all stashes
$ git stash list
Re-apply the stash without deleting it
$ git stash apply
Re-apply the stash at index 2, then delete it from the stash list. Omit stash@{n}
to pop the most recent stash.
$ git stash pop stash@{2}
Show the diff summary of stash 1. Pass the -p
flag to see the full diff.
$ git stash show stash@{1}
Delete stash at index 1. Omit stash@{n}
to delete last stash made
$ git stash drop stash@{1}
Delete all stashes
$ git stash clear
Synchronizing
Add a remote repo
$ git remote add <alias> <url>
View all remote connections. Add -v
flag to view urls.
$ git remote
Remove a connection
$ git remote remove <alias>
Rename a connection
$ git remote rename <old> <new>
Fetch all branches from remote repo (no merge)
$ git fetch <alias>
Fetch a specific branch
$ git fetch <alias> <branch>
Fetch the remote repo's copy of the current branch, then merge
$ git pull
Move (rebase) your local changes onto the top of new changes made to the remote repo (for clean, linear history)
$ git pull --rebase <alias>
Upload local content to remote repo
$ git push <alias>
Upload to a branch (can then pull request)
$ git push <alias> <branch>
Thanks for reading
Hope this cheat sheet is useful!
Again, feel free to download the one-page PDF or order a poster:
One-page Git commands cheat sheet PDF
Order a physical poster
For more from me, you can follow me on Twitter.
Cheers!
Top comments (28)
Luv it I just bought the white one :) !!
Awesome, thank you!!
Beautiful.
Thank you!
Thanks~I used to use git with UI tools like tortoisegit, because I can not remember so many commands. Recently I start to learn git commands, this is what I need, thanks again๐
This is very handy cheatsheet, thank for sharing Danny ๐
You're welcome!
And yet another git article where the "switch" and "restore" commands are missing.
The checkout command has multiple responsibilities, which isn't a good thing. So 2 new commands where created. The "switch" command can be used to create and/or switch to a branch, while the "restore" command can be used to restore working tree files.
Thanks for the suggestions - I probably should've included "switch", but just stuck with "checkout" as it's what I always use.
Realy awesome article!
Thanks a lot.
Damm!!
Life will be so much easier with this cheat sheet!1
Cheers Robin!
Looks good but I think I'll stick to the man pages, they're quite good.
Besides 'man git' giving a high level overview suitable for topic search it also lists these learning resources:
gittutorial(7), gittutorial-2(7), giteveryday(7), gitcvs-migration(7), gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git Userโs Manual[1], gitworkflows(7)
Thanks! Yeah the man pages are great, but my aim was to keep this cheat sheet as the one-page with commands that I most commonly use so it wasn't too overwhelming.
this is handy, good job!
Glad it's useful, thank you!
Awesome work ๐
Thank you!!