Git Command Cheat Sheet Part 2

Here's a handy part 2 to Annie Casey's Git Command Cheat Sheet.

Disclaimer: These are the commands we learned about in our "Gitting Gud at Git Hub" session with Alex Antonison. There are a lot more commands, but these have been my favorite!


git add -A

  • Stage all changes- new, modified, and deleted files.
  • Difference from git add .: this also stages deletions, which . doesn’t always catch.

Ex. You renamed a few Python scripts, deleted unused folders, and updated your README.md. Running git add -A grabs everything so you don’t miss a file before committing.

git commit -am "message"

  • Shortcut to stage and commit all modified files in one go.
  • New files won’t be included- you’ll still need to git add them manually first.

Ex. You tweaked your ETL script and updated a config file- just run this instead of git add + git commit.

git log

  • View the history of commits in your branch.
  • Use git log --oneline for a cleaner, condensed view.

Ex. You're trying to figure out when you added a new S3 path config, or want to grab a specific commit ID to roll back to.

git reset HEAD~1

  • Undo your last commit, but keep all changes in your working directory.
  • Use with caution when working on shared branches.

Ex. You realize your commit message was vague or you forgot to include a file- run this, and it’s like you never committed in the first place, but your changes are still there.

git checkout origin/main <file_name>

  • Restore a single file from the main branch to your current branch.
  • You must specify the exact file path.

Ex. You accidentally deleted your .env.example or messed up a SQL model- use this to bring just that one file back, no merge required.

git switch <branch_name>

  • Switch to another branch
  • This is a newer, more user-friendly alternative to git checkout <branch_name> (which still works, but switch is clearer and harder to misuse)

Ex: You’re on main but want to start working on the feature-cleanup-logs branch

git switch -c <new_branch_name>

  • Create and switch to a new branch in one step.
  • Same thing as git checkout -b, but newer and easier to read.

git rm <file_name>

  • Delete a file from disk and stop tracking it in Git.
  • This both deletes the file locally and removes it from Git.

Ex. You’re cleaning up old .ipynb or .log files that shouldn’t be in the repo.

git rm --cached <file_name>

  • Stop tracking a file, but keep it on disk.
  • Best used alongside .gitignore to prevent it from being tracked again.

Ex. You accidentally committed your .env file- this removes it from version control but leaves it safely on your machine.

git rm -r <folder_name>

  • Recursively delete a folder and remove it from tracking.
  • Be sure before running this- you’re wiping out everything inside that folder.

Ex. You had an old /notebooks/ directory with outdated prototypes- this removes it fully from Git.

git branch -D <branch_name>

  • Force delete a local branch, even if it hasn’t been merged.
  • Use with caution; you won’t be warned if work is lost.

Ex. You created a test-logging branch but ended up not using it- run this to clean up locally.

git merge <branch_name>

  • Merge another branch into your current one.
  • This preserves all commit history and creates a merge commit.

Ex. You finished work in your feature-email-tracking branch and want to bring it into main. First checkout main, then run git merge feature-email-tracking.

git revert <commit_id>

  • Undo a specific commit by creating a new commit that reverses it.
  • Safer than reset for shared branches since it maintains history.

Ex. You pushed a broken change to main- use git log to find the commit, then git revert <commit> to safely undo it.

git commit --amend

  • Edit the last commit.
  • If you’ve already pushed, be cautious- this rewrites history.

Ex. You forgot to include a file or want to clean up a lazy message like “fix stuff”- this lets you fix it without creating a new commit.

git rebase <branch_name>

  • Reapply your current branch commits on top of another branch.
  • More advanced- great for cleaning commit history, but be careful on shared branches.

Ex. You’re working on feature-clean-schema, but main has had updates. Rebase keeps your history linear by placing your work on top of the latest main.

Author:
Erin Potter
Powered by The Information Lab
1st Floor, 25 Watling Street, London, EC4M 9BR
Subscribe
to our Newsletter
Get the lastest news about The Data School and application tips
Subscribe now
© 2025 The Information Lab