# Merge branch into currentgitmergefeature/my-feature
gitmerge--no-fffeature/my-feature# preserve merge commit# Rebase onto maingitrebasemain
gitrebase-iHEAD~3# interactive rebase last 3 commits# Squash via mergegitmerge--squashfeature/my-feature
gitcommit-m"squashed: feature description"
# Unstage filegitrestore--stagedfile.txt
# Discard working tree changesgitrestorefile.txt
# Undo last commit (keep changes staged)gitreset--softHEAD~1
# Undo last commit (keep changes unstaged)gitresetHEAD~1
# Revert a commit (creates new commit, safe for shared branches)gitrevertabc1234
# Hard reset to remote state (DESTRUCTIVE)gitfetchorigin
gitreset--hardorigin/main
# Pretty loggitlog--oneline--graph--decorate--all
# Search commits by messagegitlog--grep="fix:"--oneline
# Who changed a linegitblamefile.txt
# Show what changed in a commitgitshowabc1234
# Find when something was introducedgitbisectstart
gitbisectbadHEAD
gitbisectgoodv1.0.0