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
Pdf Version Comming Soon on https://search.techgroupkenya.co.ke