📖 Guide

Git Commands Cheat Sheet — Complete Reference

Every Git command you need, searchable and organized. From basic commits to advanced rebasing.

136 commands across 10 categories

Setup & Configuration

CommandDescription
git init
Initialize a new Git repository in the current directory
git init <dir>
e.g. git init my-project
Create a new repository in the specified directory
git clone <url>
e.g. git clone https://github.com/user/repo.git
Clone a remote repository
git clone --depth 1 <url>
Shallow clone (latest commit only) — faster for large repos
git clone --branch <branch> <url>
e.g. git clone --branch develop https://github.com/user/repo.git
Clone a specific branch
git config --global user.name "Name"
Set your global Git username
git config --global user.email "email"
Set your global Git email
git config --global core.editor vim
Set default editor for commit messages
git config --global init.defaultBranch main
Set default branch name for new repos
git config --list
List all Git configuration settings
git config --global alias.co checkout
e.g. git co main
Create a command alias

Basic Workflow

CommandDescription
git status
Show working tree status — modified, staged, untracked files
git status -s
Short-format status output
git add <file>
e.g. git add index.js
Stage a file for commit
git add .
Stage all changes in the current directory
git add -p
Interactively stage hunks — review each change before staging
git add -A
Stage all changes including deletions
git commit -m "message"
Commit staged changes with a message
git commit -am "message"
Stage all tracked files and commit in one step
git commit --amend
Modify the last commit (message or content)
git commit --amend --no-edit
Add staged changes to last commit without changing message
git diff
Show unstaged changes
git diff --staged
Show staged changes (ready to commit)
git diff HEAD
Show all changes since last commit (staged + unstaged)
git diff <branch1> <branch2>
e.g. git diff main develop
Compare two branches
git log
Show commit history
git log --oneline
Compact commit history (one line per commit)
git log --oneline --graph
Visualize branch history as ASCII graph
git log -n 5
Show last 5 commits
git log --author="name"
Filter commits by author
git log --since="2024-01-01"
Show commits after a date
git log -p <file>
Show commit history with diffs for a specific file

Branching

CommandDescription
git branch
List local branches
git branch -a
List all branches (local + remote)
git branch -v
List branches with last commit info
git branch <name>
e.g. git branch feature/login
Create a new branch
git branch -d <name>
e.g. git branch -d feature/login
Delete a merged branch
git branch -D <name>
Force delete a branch (even if unmerged)
git branch -m <old> <new>
e.g. git branch -m old-name new-name
Rename a branch
git switch <branch>
e.g. git switch develop
Switch to a branch (modern syntax)
git switch -c <name>
e.g. git switch -c feature/auth
Create and switch to a new branch
git checkout <branch>
Switch to a branch (classic syntax)
git checkout -b <name>
Create and switch to a new branch (classic)
git merge <branch>
e.g. git merge feature/login
Merge a branch into the current branch
git merge --no-ff <branch>
Merge with a merge commit (no fast-forward)
git merge --squash <branch>
Squash all commits from branch into one
git merge --abort
Abort a merge in progress (conflicts)

Remote Repositories

CommandDescription
git remote -v
List remote repositories with URLs
git remote add <name> <url>
e.g. git remote add origin https://github.com/user/repo.git
Add a remote repository
git remote remove <name>
Remove a remote
git remote rename <old> <new>
Rename a remote
git remote set-url <name> <url>
Change a remote's URL
git fetch
Download remote changes without merging
git fetch --all
Fetch from all remotes
git fetch --prune
Fetch and remove stale remote-tracking branches
git pull
Fetch and merge remote changes
git pull --rebase
Fetch and rebase instead of merge (cleaner history)
git push
Push commits to the remote
git push -u origin <branch>
e.g. git push -u origin feature/auth
Push and set upstream for a new branch
git push --force-with-lease
Force push safely (fails if remote has new commits)
git push origin --delete <branch>
Delete a remote branch
git push --tags
Push all tags to remote

Stashing

CommandDescription
git stash
Stash working directory changes
git stash push -m "message"
Stash with a descriptive message
git stash push -p
Interactively stash specific hunks
git stash list
List all stashes
git stash show
Show stash diff summary
git stash show -p
Show full stash diff
git stash pop
Apply most recent stash and remove it
git stash apply
Apply most recent stash (keep in stash list)
git stash apply stash@{2}
Apply a specific stash
git stash drop stash@{0}
Delete a specific stash
git stash clear
Delete all stashes
git stash branch <name>
e.g. git stash branch fix-from-stash
Create a branch from a stash

Undoing Changes

CommandDescription
git restore <file>
e.g. git restore index.js
Discard working directory changes
git restore --staged <file>
Unstage a file (keep changes)
git restore --source=HEAD~1 <file>
Restore file from a previous commit
git reset HEAD <file>
Unstage a file (classic syntax)
git reset --soft HEAD~1
Undo last commit, keep changes staged
git reset --mixed HEAD~1
Undo last commit, keep changes unstaged (default)
git reset --hard HEAD~1
Undo last commit and discard all changes ⚠️
git reset --hard origin/main
Reset branch to match remote ⚠️
git revert <commit>
e.g. git revert abc1234
Create a new commit that undoes a previous commit
git revert HEAD
Revert the last commit
git revert --no-commit <commit>
Revert without auto-committing
git clean -fd
Remove untracked files and directories ⚠️
git clean -fdn
Dry run — show what would be removed
git checkout -- <file>
Discard changes (classic syntax)

Rewriting History

CommandDescription
git rebase <branch>
e.g. git rebase main
Rebase current branch onto another
git rebase -i HEAD~3
Interactive rebase — edit, squash, reorder last 3 commits
git rebase --abort
Abort a rebase in progress
git rebase --continue
Continue rebase after resolving conflicts
git rebase --skip
Skip the current commit during rebase
git cherry-pick <commit>
e.g. git cherry-pick abc1234
Apply a specific commit to current branch
git cherry-pick <a>..<b>
Cherry-pick a range of commits
git cherry-pick --no-commit <commit>
Apply changes without committing
git commit --fixup <commit>
Create a fixup commit for later autosquash
git rebase -i --autosquash HEAD~5
Auto-squash fixup commits during interactive rebase

Inspection & Comparison

CommandDescription
git show <commit>
e.g. git show abc1234
Show details and diff for a commit
git show HEAD:<file>
Show file content at a specific commit
git blame <file>
e.g. git blame src/app.js
Show who last modified each line
git blame -L 10,20 <file>
Blame specific line range
git log --stat
Show commit history with file change stats
git log --all --oneline --graph
Full visual branch history
git shortlog -sn
Show commit count per author
git diff --name-only
Show only changed filenames
git diff --stat
Show change statistics
git bisect start
Start binary search for a bug-introducing commit
git bisect bad
Mark current commit as bad
git bisect good <commit>
Mark a commit as good
git bisect reset
End bisect session
git reflog
Show history of HEAD movements (recover lost commits)

Tagging

CommandDescription
git tag
List all tags
git tag <name>
e.g. git tag v1.0.0
Create a lightweight tag
git tag -a <name> -m "message"
e.g. git tag -a v1.0.0 -m "Release 1.0"
Create an annotated tag
git tag -a <name> <commit>
Tag a specific commit
git tag -d <name>
Delete a local tag
git push origin <tag>
Push a specific tag to remote
git push origin --tags
Push all tags to remote
git push origin --delete <tag>
Delete a remote tag
git describe --tags
Describe current commit relative to nearest tag

Advanced

CommandDescription
git submodule add <url> <path>
Add a submodule
git submodule update --init --recursive
Initialize and update all submodules
git submodule foreach git pull
Update all submodules to latest
git worktree add <path> <branch>
Create a linked working tree for a branch
git worktree list
List all working trees
git worktree remove <path>
Remove a working tree
git sparse-checkout init
Enable sparse checkout (partial repo)
git sparse-checkout set <dir>
Only check out specific directories
git archive --format=zip HEAD > repo.zip
Export repo as a zip archive
git gc
Run garbage collection to optimize repo
git fsck
Verify integrity of the repository
git grep "pattern"
e.g. git grep "TODO"
Search tracked files for a pattern
git log --all -- <file>
Find all commits that touched a deleted file
git rev-parse HEAD
Get the full SHA of current commit
git rev-list --count HEAD
Count total commits in current branch

More Guides

📝
Vim Commands
Complete Vim/Vi command reference — modes, motions, editing, search, and advanced features.
🐳
Docker Commands
Complete Docker & Docker Compose command reference — containers, images, volumes, networks, and orchestration.
🔤
Regex Reference
Complete regular expression reference — syntax, patterns, quantifiers, groups, lookaheads, and common recipes.
🐧
Linux Commands
Complete Linux/Bash command reference — file management, text processing, networking, system admin, and shell scripting.
☸️
Kubernetes Commands
Complete Kubernetes & kubectl command reference — pods, deployments, services, configmaps, and cluster management.
🐍
Python Reference
Complete Python reference — syntax, data structures, string methods, file I/O, comprehensions, and common patterns.
🗃️
SQL Reference
Complete SQL reference — queries, joins, aggregation, subqueries, indexes, and database management.
🌐
Nginx Reference
Complete Nginx configuration reference — server blocks, locations, proxying, SSL, load balancing, and caching.
🔐
SSH Commands
Complete SSH reference — connections, key management, tunneling, config, SCP/SFTP, and security hardening.
👷
Jenkins Reference
Complete Jenkins reference — pipeline syntax, Jenkinsfile, plugins, CLI, agents, and CI/CD patterns.
☁️
AWS CLI Reference
Complete AWS CLI reference — EC2, S3, IAM, Lambda, ECS, RDS, CloudFormation, and common operations.
🐹
Go Reference
Complete Go (Golang) reference — syntax, types, functions, concurrency, error handling, and common patterns.
💠
PowerShell Reference
Complete PowerShell reference — cmdlets, pipelines, scripting, file operations, remote management, and Active Directory.
💾
Redis Commands
Complete Redis command reference — strings, hashes, lists, sets, sorted sets, pub/sub, transactions, and server management.
🏗️
Terraform Commands
Complete Terraform reference — init, plan, apply, state management, modules, workspaces, and HCL syntax.
⚙️
Ansible Commands
Complete Ansible reference — playbooks, modules, inventory, roles, vault, and ad-hoc commands.

📖 Free, searchable command reference. Bookmark this page for quick access.