Git in Action : Quick & Essential Commands
Git Command Cheat Sheet
Setup & Configuration
COMMAND | DESCRIPTION |
---|---|
git --version | Check Git version |
git config --global user.name "Name" | Set username globally |
git config --global user.email "email@example.com" | Set email globally |
git config --list | List all configurations |
git config --global core.editor "editor" | Set default editor |
git config --global init.defaultBranch main | Set default branch name |
git config --global alias.<alias-name> "<git-command>" | Create command alias |
Repository Initialization
COMMAND | DESCRIPTION |
---|---|
git init | Initialize a new Git repository |
git init --bare | Initialize a bare repository |
git clone <repository-url> | Clone a repository |
git clone --depth <depth> <repository-url> | Clone with limited history |
git clone --branch <branch-name> <repository-url> | Clone a specific branch |
Basic Operations
COMMAND | DESCRIPTION |
---|---|
git status | Show working tree status |
git add <file> | Add file to staging area |
git add . | Add all files to staging area |
git add -p | Interactively add changes |
git commit -m "message" | Commit staged changes |
git commit -a -m "message" | Add and commit all changes |
git commit --amend | Amend the last commit |
git commit --amend --no-edit | Amend last commit without changing message |
Viewing Changes
COMMAND | DESCRIPTION |
---|---|
git diff | Show unstaged changes |
git diff --staged | Show staged changes |
git diff <commit1> <commit2> | Compare two commits |
git diff <branch1> <branch2> | Compare two branches |
git show <commit> | Show a specific commit |
git log | Show commit history |
git log --oneline | Show commit history in one line format |
git log --graph | Show commit history as a graph |
git log -p | Show commit history with diffs |
git log --stat | Show commit history with stats |
git log --author="name" | Filter commits by author |
git log --since="date" | Filter commits since date |
git log --until="date" | Filter commits until date |
git log --grep="pattern" | Filter commits by pattern |
git blame <file> | Show who changed each line in a file |
git reflog | Show reference logs |
Undoing Changes
COMMAND | DESCRIPTION |
---|---|
git restore <file> | Discard changes in working directory |
git restore --staged <file> | Unstage changes |
git reset <commit> | Reset to a specific commit (keep changes) |
git reset --hard <commit> | Reset to a specific commit (discard changes) |
git reset --soft <commit> | Reset to a specific commit (keep staged) |
git revert <commit> | Create a new commit that undoes changes |
git rm <file> | Remove file from working directory and staging |
git rm --cached <file> | Remove file from staging area only |
git clean -n | Show what files would be removed |
git clean -f | Remove untracked files |
git clean -fd | Remove untracked files and directories |
Branching & Merging
COMMAND | DESCRIPTION |
---|---|
git branch | List local branches |
git branch -a | List all branches (local and remote) |
git branch -r | List remote branches |
git branch <branch-name> | Create a new branch |
git branch -d <branch-name> | Delete a branch |
git branch -D <branch-name> | Force delete a branch |
git branch -m <new-name> | Rename current branch |
git branch -m <old-name> <new-name> | Rename specific branch |
git switch <branch-name> | Switch to a branch |
git switch -c <branch-name> | Create and switch to a new branch |
git checkout <branch-name> | Switch to a branch (older method) |
git checkout -b <branch-name> | Create and switch to a new branch (older method) |
git checkout - | Switch to the previous branch |
git checkout <commit> <file> | Checkout file from specific commit |
git merge <branch-name> | Merge a branch into current branch |
git merge --no-ff <branch-name> | Merge a branch creating a merge commit |
git merge --abort | Abort a merge in case of conflicts |
git mergetool | Launch merge conflict resolution tool |
Rebasing
COMMAND | DESCRIPTION |
---|---|
git rebase <branch-name> | Rebase current branch onto another |
git rebase -i <commit> | Interactive rebase |
git rebase --abort | Abort a rebase |
git rebase --continue | Continue rebase after resolving conflicts |
git rebase --skip | Skip current patch and continue |
Stashing
COMMAND | DESCRIPTION |
---|---|
git stash | Stash changes |
git stash push -m "message" | Stash changes with a message |
git stash list | List stashes |
git stash show <stash@{n}> | Show stash changes |
git stash apply <stash@{n}> | Apply stash without removing |
git stash pop <stash@{n}> | Apply stash and remove it |
git stash drop <stash@{n}> | Remove a stash |
git stash clear | Remove all stashes |
Remote Operations
COMMAND | DESCRIPTION |
---|---|
git remote | List remotes |
git remote -v | List remotes with URLs |
git remote add <name> <url> | Add a new remote |
git remote remove <name> | Remove a remote |
git remote rename <old-name> <new-name> | Rename a remote |
git remote set-url <name> <url> | Change remote URL |
git fetch <remote> | Fetch from remote |
git fetch --all | Fetch from all remotes |
git pull <remote> <branch> | Fetch and merge from remote |
git pull --rebase <remote> <branch> | Fetch and rebase from remote |
git push <remote> <branch> | Push to remote |
git push -f <remote> <branch> | Force push to remote |
git push --set-upstream <remote> <branch> | Push and set upstream |
git push <remote> --delete <branch> | Delete remote branch |
git push --tags | Push tags to remote |
Tagging
COMMAND | DESCRIPTION |
---|---|
git tag | List tags |
git tag <tag-name> | Create a lightweight tag |
git tag -a <tag-name> -m "message" | Create an annotated tag |
git tag -d <tag-name> | Delete a tag |
git push <remote> <tag-name> | Push a tag to remote |
git push <remote> --tags | Push all tags to remote |
git checkout <tag-name> | Checkout a tag |
Worktrees
COMMAND | DESCRIPTION |
---|---|
git worktree list | List worktrees |
git worktree add <path> <branch> | Create a new worktree |
git worktree remove <path> | Remove a worktree |
git worktree prune | Prune worktree information |
Submodules
COMMAND | DESCRIPTION |
---|---|
git submodule add <repository-url> <path> | Add a submodule |
git submodule init | Initialize submodules |
git submodule update | Update submodules |
git submodule update --init --recursive | Initialize and update all submodules recursively |
git submodule foreach <command> | Execute command in each submodule |
Advanced Operations
COMMAND | DESCRIPTION |
---|---|
git cherry-pick <commit> | Apply changes from a specific commit |
git cherry-pick --continue | Continue cherry-pick after resolving conflicts |
git cherry-pick --abort | Abort a cherry-pick |
git rebase -i --autosquash <commit> | Interactive rebase with autosquash |
git bisect start | Start binary search for issues |
git bisect good <commit> | Mark commit as good |
git bisect bad <commit> | Mark commit as bad |
git bisect reset | Reset bisect state |
git grep <pattern> | Search for pattern in tracked files |
git archive --format=zip HEAD > archive.zip | Create a zip archive of the repository |
git shortlog | Show commit counts by author |
git shortlog -sn | Show commit counts sorted by number |
git rev-parse HEAD | Get full SHA-1 of current commit |
git rev-parse --short HEAD | Get short SHA-1 of current commit |
git fsck | Check repository integrity |
git gc | Garbage collection |
git prune | Remove unreachable objects |
git verify-pack -v .git/objects/pack/*.idx | Verify packed objects |
Gitflow Operations
COMMAND | DESCRIPTION |
---|---|
git flow init | Initialize gitflow in repository |
git flow feature start <name> | Start a new feature |
git flow feature finish <name> | Finish a feature |
git flow release start <version> | Start a release |
git flow release finish <version> | Finish a release |
git flow hotfix start <version> | Start a hotfix |
git flow hotfix finish <version> | Finish a hotfix |
Git Hooks
COMMAND | DESCRIPTION |
---|---|
git hook list | List available hooks |
.git/hooks/pre-commit | Pre-commit hook |
.git/hooks/commit-msg | Commit message hook |
.git/hooks/post-commit | Post-commit hook |
.git/hooks/pre-push | Pre-push hook |
Troubleshooting
COMMAND | DESCRIPTION |
---|---|
git fsck | Check repository integrity |
git gc | Garbage collection |
git prune | Remove unreachable objects |
git verify-pack -v .git/objects/pack/*.idx | Verify packed objects |
git count-objects -v | Count objects and show size |
git show-ref | List references |
git reset --hard | Reset to HEAD discarding changes |
git clean -fd | Remove untracked files and directories |
git reflog expire --expire=now --all | Expire all reflog entries |
git gc --prune=now | Garbage collection with pruning |
git config --global --unset <config-name> | Unset a config value |
Comments