Git and GitHub Command Cheat Sheet

Quazi Md Aldin Fardin
6 min readJun 16, 2022

--

The essential Git commands every developer must know

This cheat sheet covers all of the Git commands I’ve covered in my Ultimate Git
Mastery blog.
✓ Creating snapshots
✓ Browsing history
✓ Branching & merging
✓ Collaboration using Git & GitHub
✓ Rewriting history

Creating Snapshots‌

Initializing a repository

git init

Staging files

git add file1.js 
# Stages a single file
git add file1.js file2.js
# Stages multiple files
git add *.js
# Stages with a pattern
git add .
# Stages the current directory and all its content

Viewing the status

git status 
# Full status
git status -s
# Short status

Committing the staged files

git commit -m “Message” 
# Commits with a one-line message
git commit
# Opens the default editor to type a long message

Skipping the staging area

git commit -am “Message”

Removing files

git rm file1.js 
# Removes from working directory and staging area
git rm --cached file1.js
# Removes from staging area only

Renaming or moving files

git mv file1.js file1.txt

Viewing the staged/unstaged changes

git diff 
# Shows unstaged changes
git diff --staged
# Shows staged changes
git diff --cached
# Same as the above

Viewing the history

git log 
# Full history
git log --oneline
# Summary
git log --reverse
# Lists the commits from the oldest to the newest

Viewing a commit

git show 921a2ff 
# Shows the given commit
git show HEAD
# Shows the last commit
git show HEAD~2
# Two steps before the last commit

git show HEAD:file.js
# Shows the version of file.js stored in the last commit

Unstaging files (undoing git add)

git restore --staged file.js 
# Copies the last version of file.js from repo to index

Discarding local changes

git restore file.js 
# Copies file.js from index to working directory
git restore file1.js file2.js
# Restores multiple files in working directory
git restore .
# Discards all local changes (except untracked files)
git clean -fd
# Removes all untracked files

Restoring an earlier version of a file

git restore --source=HEAD~2 file.js

Browsing History‌

Viewing the history

git log --stat 
# Shows the list of modified files
git log --patch
# Shows the actual changes (patches)

Filtering the history

git log -3 
# Shows the last 3 entries
git log --author=“Mosh”git log --before=“2020-08-17”git log --after=“one week ago”git log --grep=“GUI”
# Commits with “GUI” in their message
git log -S“GUI”
# Commits with “GUI” in their patches
git log hash1..hash2
# Range of commits
git log hash1..hash2
# Range of commits
git log file.txt
# Commits that touched file.txt

Formatting the log output

git log --pretty=format:”%an committed %H”

Creating an alias

git config --global alias.lg “log --oneline"

Viewing a commit

git show HEAD~2git show HEAD~2:file1.txt 
# Shows the version of file stored in this commit

Comparing commits

git diff HEAD~2 HEAD 
# Shows the changes between two commits
git diff HEAD~2 HEAD file.txt
# Changes to file.txt only

Checking out a commit

git checkout dad47ed 
# Checks out the given commit
git checkout master
# Checks out the master branch

Finding a bad commit

git bisect startgit bisect bad 
# Marks the current commit as a bad commit
git bisect good ca49180
# Marks the given commit as a good commit
git bisect reset
# Terminates the bisect session

Finding contributors

git shortlog

Viewing the history of a file

git log file.txt 
# Shows the commits that touched file.txt
git log --stat file.txt
# Shows statistics (the number of changes) for file.txt
git log --patch file.txt
# Shows the patches (changes) applied to file.txt

Finding the author of lines

git blame file.txt 
# Shows the author of each line in file.txt

Tagging

git tag v1.0 
# Tags the last commit as v1.0
git tag v1.0 5e7a828
# Tags an earlier commit
git tag # Lists all the tagsgit tag -d v1.0 # Deletes the given tag

Branching & Merging‌

Managing branches

git branch bugfix 
# Creates a new branch called bugfix
git checkout bugfix
# Switches to the bugfix branch
git switch bugfix
# Same as the above
git switch -C bugfix
# Creates and switches
git branch -d bugfix
# Deletes the bugfix branch

Comparing branches

git log master..bugfix 
# Lists the commits in the bugfix branch not in master
git diff master..bugfix
# Shows the summary of changes

Stashing

git stash push -m “New tax rules” 
# Creates a new stash
git stash list
# Lists all the stashes
git stash show stash@{1}
# Shows the given stash
git stash show 1
# shortcut for stash@{1}
git stash apply 1
# Applies the given stash to the working dir
git stash drop 1
# Deletes the given stash
git stash clear
# Deletes all the stashes

Merging

git merge bugfix 
# Merges the bugfix branch into the current branch
git merge --no-ff bugfix
# Creates a merge commit even if FF is possible
git merge --squash bugfix
# Performs a squash merge
git merge --abort
# Aborts the merge

Viewing the merged branches

git branch --merged 
# Shows the merged branches
git branch --no-merged
# Shows the unmerged branches

Rebasing

git rebase master 
# Changes the base of the current branch

Cherry picking

git cherry-pick dad47ed 
# Applies the given commit on the current branch

Collaboration‌

Cloning a repository

git clone url

Syncing with remotes

git fetch origin master 
# Fetches master from origin
git fetch origin
# Fetches all objects from origin
git fetch
# Shortcut for “git fetch origin”
git fetch
# Shortcut for “git fetch origin”
git pull
# Fetch + merge
git push origin master
# Pushes master to origin
git push
# Shortcut for “git push origin master”

Sharing tags

git push origin v1.0 
# Pushes tag v1.0 to origin
git push origin —delete v1.0

Sharing branches

git branch -r 
# Shows remote tracking branches
git branch -vv
# Shows local & remote tracking branches
git push -u origin bugfix
# Pushes bugfix to origin
git push -d origin bugfix
# Removes bugfix from origin

Managing remotes

git remote 
# Shows remote repos
git remote add upstream url
# Adds a new remote called upstream
git remote rm upstream
# Remotes upstream

Rewriting History‌

Undoing commits

git reset --soft HEAD^ 
# Removes the last commit, keeps changed staged
git reset --mixed HEAD^
# Unstages the changes as well
git reset --hard HEAD^
# Discards local changes

Reverting commits

git revert 72856ea 
# Reverts the given commit
git revert HEAD~3..
# Reverts the last three commits
git revert --no-commit HEAD~3..

Recovering lost commits

git reflog 
# Shows the history of HEAD
git reflog show bugfix
# Shows the history of bugfix pointer

Amending the last commit

git commit --amend

Interactive rebasing

git rebase -i HEAD~5

রিসোর্স সমুহ:

  1. official Git project site
  2. ProGit book
  3. Git command list
  4. on-demand training courses
  5. on-demand training courses
  6. online Git course
  7. git-cheat-sheet-education (github.com)
  8. Git cheat sheet | Atlassian Git Tutorial

What is git ?

--

--