I've put together some of the most used commands you'll more or less use every day when working with Git. These were "stashed" away in my notes, and I thought it would be good to organise them for others.
This blog will feature a short course on DevOps/Automation & AI for Network Engineers soon, with these resources serving as a component for its creation and referencing.
Below, you'll find the commands in code-blocks, a nifty PDF cheat guide, and some images that you can print off to hang on your wall and show off to all your friends/ gits! (if that's your thing)


Setup & Configuration
git config --global user.name "Name" - Sets your commit author name globally
git config --global user.email "email" - Sets your commit author email globally
git config --list - Lists all Git configuration settingsRepository Basics
git init - Initialises a new Git repository in current directory
git clone <url> - Clones a remote repository to local machine
git clone <url> <directory> - Clones repository into specified directory
git clone --depth 1 <url> - Shallow clone with only latest commit history
git remote -v - Lists all configured remote repositories
git remote add origin <url> - Adds a new remote named 'origin'
git remote set-url origin <url> - Changes URL of existing remoteDaily Workflow
git status - Shows working tree status and staged changes
git add <file> - Stages specific file for commit
git add . - Stages all changes in current directory
git add -p - Interactively stage hunks of changes
git commit -m "message" - Commits staged changes with message
git commit -am "message" - Stages tracked files and commits in one step
git commit --amend - Modifies the most recent commit
git push - Pushes commits to default remote branch
git push -u origin <branch> - Pushes and sets upstream tracking branch
git pull - Fetches and merges changes from remote
git pull --rebase - Fetches and rebases local commits on top
git fetch - Downloads objects and refs from remoteBranching & Merging
git branch - Lists all local branches
git branch -a - Lists all local and remote branches
git branch <name> - Creates a new branch
git branch -d <name> - Deletes a merged branch
git branch -D <name> - Force deletes a branch
git checkout <branch> - Switches to specified branch
git checkout -b <branch> - Creates and switches to new branch
git switch <branch> - Switches to specified branch (modern)
git switch -c <branch> - Creates and switches to new branch (modern)
git merge <branch> - Merges specified branch into current
git merge --no-ff <branch> - Merges with merge commit, no fast-forwardRebasing
git rebase <branch> - Rebases current branch onto specified branch
git rebase -i HEAD~n - Interactive rebase for last n commits
git rebase --continue - Continues rebase after resolving conflicts
git rebase --abort - Aborts rebase and returns to original state
git rebase --onto <new> <old> <branch> - Rebases branch onto new baseStashing
git stash - Stashes uncommitted changes
git stash push -m "message" - Stashes with descriptive message
git stash list - Lists all stashed changes
git stash pop - Applies and removes most recent stash
git stash apply stash@{n} - Applies specific stash without removing
git stash drop stash@{n} - Deletes specific stash entry
git stash clear - Removes all stash entriesViewing History
git log - Shows commit history
git log --oneline - Shows condensed commit history
git log --graph --oneline --all - Shows branch graph visualisation
git log -p <file> - Shows commit history with diffs for file
git log --author="name" - Filters commits by author
git diff - Shows unstaged changes
git diff --staged - Shows staged changes
git diff <branch1>..<branch2> - Shows differences between branches
git show <commit> - Shows details of specific commit
git blame <file> - Shows who changed each line of a fileUndoing Changes
git restore <file> - Discards changes in working directory
git restore --staged <file> - Unstages file, keeps changes
git reset HEAD~1 - Undoes last commit, keeps changes
git reset --soft HEAD~1 - Undoes last commit, keeps changes staged
git reset --hard HEAD~1 - Undoes last commit, discards all changes
git revert <commit> - Creates new commit that undoes changes
git reflog - Shows history of HEAD changes
git checkout <commit> -- <file> - Restores file from specific commitOther Notes
Stashing: Git stashing is a way to temporarily save (shelve) your uncommitted changes so you can switch branches or work on something else, without committing.
Rebasing: Rebasing is an operation that moves or replays your commits onto a new base commit.