Git can feel like a puzzle until you learn the key moves. In this guide, you’ll find the top 20 Git commands, ordered by how often they are used. Each entry starts with a quick “What it does” summary, followed by an image displaying its functionality. No walls of text, no unexplained flags, no perusing through the documentation. Just practical, bite-size entries that you can use as a cheat sheet. Let’s make Git simple, fast, and fun.
Creates a new commit from staged changes, assigning a snapshot ID and message.
git commit -m []
Example:
The command records “First commit” and displays its commit hash and summary.
*You can only commit if you’ve staged first
Reports untracked, modified, and staged files to indicate the next steps.
git status []
Example:
We can see that file1.txt
is appearing red, which indicates that git has not started tracking this file.
Stages specified file changes, moving them into the index for the next commit.
git add .
Example:
The output (using status
command) confirms that file1.txt
has been added to the staging area.
Sends your local commits on a branch up to a remote repo.
git push
Example:
git push origin main
Uploads your main branch commits to “origin”.
Fetches and merges changes from a remote branch into your current branch.
git pull [] []
Example:
git pull origin dev
Gets origin/dev and merges it into what you’ve checked out.
Creates a local copy of a remote repository.
git clone []
Example:
The clone process fetches objects and deltas, creating an AV_Article_Codes
folder.
Lists, creates, or deletes branches in your repo.
git branch [] []
Example:
In the example, a new branch test
is created alongside master
.
Switches to another branch or restores files from a specific commit.
git checkout <branch|commit> [--] []
Example:
The output indicates a successful switch from master
to the test
branch.
Integrates another branch’s commits into your current branch.
git merge [--no-ff]
Example:
git merge --no-ff feature/api
Merges feature/api and always creates a merge commit.
Displays the project’s commit history in reverse chronological order.
git log []
Example:
The log lists the commits – “First commit” along with its timestamps and authors.
Shows line-by-line differences between commits, branches, or index vs. working tree.
git diff [--staged] […]
Example:
Using --staged
displays the diff of a newly added file3.txt
ready for commit.
Temporarily saves uncommitted changes, cleaning the working directory.
git stash [save ]
Example:
Stashing records the current state on branch test
and returns a clean working tree.
Initializes a new Git repository by creating a .git
directory and displaying branch-naming hints.
git init []
Example:
The example shows repository initialization with guidance on renaming the default branch.
Downloads commits and refs from a remote without merging them.
git fetch [] []
Example:
git fetch --all
Pulls updates from every configured remote.
Moves your HEAD and optionally updates the index or working tree.
git reset [] []
Example:
A hard reset to the first commit discards later changes and resets HEAD accordingly.
Creates a new commit that undoes changes from a past commit.
git revert
Example:
git revert a1b2c3d
Adds a commit that reverses a1b2c3d without rewriting history.
Moves your commits onto a new base, keeping history linear.
git rebase [-i]
Example:
git rebase -i main
Lets you reorder, squash, or edit commits interactively.
Displays metadata and patch details for a given commit or object.
git show []
Example:
Showing a specific hash prints its author, date, commit message, and the diff of file2.txt
.
Applies one specific commit from another branch onto your current HEAD.
git cherry-pick
Example:
git cherry-pick f4e5d6c
Pulls that single change into your branch
Automates a binary search to find which commit introduced a bug.
git bisect [good/bad/start]
Example:
git bisect start; git bisect bad; git bisect good v1.0
Narrow down the bad commit in a few steps.
Here are some of the go-tos when it comes to git commands:
You now have the top 20 Git commands, each with a quick “what it does,” and a one-line example. Start by practicing the first five until they’re second nature, then add branching, merging, rebasing, and stashing to your muscle memory. Keep this list handy in Google Docs or your sticky notes. You can visit this guide if you are new to Git or GitHub to get a head start. With these commands under your belt, you’ll spend less time wrestling with version control and more time writing code. Go ahead, open your terminal and level up your Git game!
Use git checkout — <file> to discard unstaged edits and restore the last committed version.
Run git rebase -i <base> and squash the commits you want to merge into a single, tidy commit.
Stash your changes with git stash and reapply them when you’re ready using git stash pop.
Git fetch downloads updates from the remote without touching your files, while git pull fetches and merges in one step. The two git commands might seem similar in their functionality, but their applications are vastly different.
Use git bisect to do a binary search through your history and pinpoint the exact bad commit.