Overview

Welcome to the Spire of Completion’s 100% achievement guide for git gud, a programming puzzle game featuring 100 levels and 11 achievements.
◈ Difficulty:
1/10 with a guide, 4/10 without
◈ Time to 100%:
~30 minutes with a guide, ~5 hours without
◈ Missable Achievements:
0
◈ Required Playthroughs:
1
◈ Manual Saves:
No
◈ Skippable Cutscenes:
No cutscenes
◈ Chapter/Level Select:
Yes
◈ Save File Location:
steamapps ⋗︎ common ⋗︎ gitgud ⋗︎ users.json
Achievements

Basics Mastered
Challenges 1-10 Hintless

Branching and Merging Mastered
Challenges 11-20 Hintless

Remotes Mastered
Challenges 21-30 Hintless

Undo & Fix Mistakes Mastered
Challenges 31-40 Hintless

Rebasing & History Mastered
Challenges 41-50 Hintless

Stashing Mastered
Challenges 51-60 Hintless

Debugging Mastered
Challenges 61-70 Hintless

Collaboration Mastered
Challenges 71-80 Hintless

Power User Mastered
Challenges 81-90 Hintless

Expert Mastered
Challenges 91-100 Hintless

got gud
Not a single hint start to finish!
Complete all 100 challenges without using a single hint (do not type ‘hint’ in the console). Solutions are provided below. You can paste them, including multi-line solutions, into the in-game editor by pressing Ctrl + V.
To reset a challenge, type ‘restart’ in the console.
Solutions
Challenge 1 – Initialize a Repository
git init
Challenge 2 – Check Repository Status
git status
Challenge 3 – Stage and Commit a File
git add file.txt
git commit -m "Add file.txt"
Challenge 4 – Add and Commit in One Step
git commit -a -m "Add all files"
Challenge 5 – View Commit History
git log
Challenge 6 – Create a Branch
git branch feature
Challenge 7 – Switch Branches
git switch feature
Challenge 8 – Delete a Branch
git branch temp-branch
git branch -d temp-branch
Challenge 9 – Clone a Repository
git clone https://github.com/example/repo.git
Challenge 10 – View Changes
git diff
Challenge 11 – Create and Switch to a Branch in One Command
git switch -c feature-branch
Challenge 12 – Merge a Branch
git switch master
git merge feature
Challenge 13 – No Fast-Forward Merge
git switch master
git merge --no-ff feature
Challenge 14 – Resolve a Merge Conflict
git switch master
git merge feature
resolve current shared-file.txt
git add shared-file.txt
git commit -m "Resolve merge conflict"
Challenge 15 – Abort an In-Progress Merge
git switch master
git merge feature
git merge --abort
Challenge 16 – View a Graphical Log of Branches and Commits
git log --graph
Challenge 17 – List All Branches in a Repository
git branch
Challenge 18 – Rename the Current Branch
git branch -m main
Challenge 19 – Force Delete a Branch
git branch feature-temp
createfile newfile.txt This is content.
git add newfile.txt
git commit -m 'Add newfile.txt'
git switch master
git branch -D feature-temp
Challenge 20 – List Merged and Unmerged Branches
git branch --merged
git branch --no-merged
Challenge 21 – Add a Remote Repository
git remote add origin https://github.com/example/my-project.git
Challenge 22 – List Remote Branches
git branch -r
Challenge 23 – Fetch the Latest Changes from a Remote Repository
git fetch
Challenge 24 – Pull the Latest Changes from a Remote Repository
git pull
Challenge 25 – Push Your Local Branch to the Remote Repository
git push
Challenge 26 – Push a New Branch to Remote and Set Upstream
git switch -c feature-login
git push -u origin feature-login
Challenge 27 – View Information About Your Remotes
git remote -v
Challenge 28 – Remove a Remote Repository
git remote rm upstream
Challenge 29 – Rename a Remote Repository
git remote rename upstream fork
Challenge 30 – Clone a Repository into a Specific Directory
git clone https://github.com/example/my-awesome-project.git my-project
Challenge 31 – Amend the Last Commit Without Changing Its Message
git commit --amend --no-edit
Challenge 32 – Amend the Last Commit and Update Its Message
git commit --amend -m "Add user authentication feature"
Challenge 33 – Undo the Last Commit but Keep Changes Staged
git reset --soft HEAD~1
Challenge 34 – Undo the Last Commit and Unstage the Changes
git reset HEAD~1
Challenge 35 – Unstage a File That Was Added Accidentally
git reset temp.log
Challenge 36 – Discard Uncommitted Changes to a File
git restore file.txt
Challenge 37 – Revert a Commit That Was Pushed to the Remote
git revert abc123def
Challenge 38 – Reset a Branch to a Previous Commit (Soft Reset)
git reset --soft abc123def
Challenge 39 – Reset a Branch to a Previous Commit (Hard Reset)
git reset --hard abc123def
Challenge 40 – Restore a Deleted File from a Previous Commit
git restore --source=def456abc important-config.txt
Close the editor and press any key.
Challenge 41 – Start an Interactive Rebase for the Last Three Commits
git rebase -i HEAD~3
Challenge 42 – Squash Two Commits Into One
git rebase -i HEAD~2
Replace all lines with:
pick feat123 Add new feature
squash fix5678 Fix small bug in feature
Save, then close the editor and press any key. Continue:
git rebase --continue
Challenge 43 – Reword an Old Commit’s Message
git rebase -i HEAD~2
Replace all lines with:
reword efgh567 Update file.txt content
pick ijkl901 Add README.md
Save, then close the editor and press any key. Continue:
git rebase --continue
Add a new commit message:
Update file.txt
Challenge 44 – Delete a Commit from History
git rebase -i HEAD~2
Replace all lines with:
drop abc123d Add buggy feature
pick def456a Fix styling issues
Save, then close the editor and press any key. Continue:
git rebase --continue
Challenge 45 – Reorder Commits During Interactive Rebase
git rebase -i HEAD~3
Replace all lines with:
pick commit4 Add configuration file
pick commit3 Update to version 2.0
pick commit5 Bump version to 4.0
Save, then close the editor and press any key. Continue:
git rebase --continue
Challenge 46 – Abort an Ongoing Rebase
git rebase --abort
Challenge 47 – Continue a Rebase After Resolving Conflicts
resolve current main.py
git add .
git rebase --continue
Challenge 48 – Skip a Commit During Interactive Rebase
git rebase --skip
Challenge 49 – Find the Author of Each Line in a File
git blame README.md
Challenge 50 – Find the Commit That Introduced a Specific Change
git log -S "authenticateUser"
Challenge 51 – Stash Uncommitted Changes
git stash
Challenge 52 – View a List of All Stashed Changes
git stash list
Challenge 53 – Apply the Latest Stash Without Removing It
git stash apply
Challenge 54 – Apply a Specific Stash
git stash apply 1
Challenge 55 – Drop a Specific Stash
git stash drop 1
Challenge 56 – Create a Stash with a Custom Message
git stash push -m "Work in progress on feature X"
Challenge 57 – Stash Untracked Files as Well
git stash push -u
Challenge 58 – Pop the Latest Stash and Remove It
git stash pop
Challenge 59 – Pop a Specific Stash
git stash pop 1
Challenge 60 – Clear All Stashed Changes
git stash clear
Challenge 61 – Check out a previous commit without changing history
git checkout abc123def
Challenge 62 – Find out which files changed in a specific commit
git show --name-only abc789def
Challenge 63 – Show Changes Introduced by a Commit
git show abc123def
Challenge 64 – List commits in a specific branch that aren’t in main
git log feature --not master
Challenge 65 – Check the history of a specific file
git log config.js
Challenge 66 – Show the difference between two commits
git diff abc123def def456abc
Challenge 67 – Compare two branches and see their differences
git diff master feature
Challenge 68 – Find commits by a specific author
git log --author="John Smith"
Challenge 69 – Restore a deleted branch
git reflog
git checkout -b feature-login abc789x
Challenge 70 – Identify the commit that introduced a bug using git bisect
git bisect start
git bisect bad abc123def
git bisect good xyz789abc
git bisect bad
git bisect good
git bisect bad
git bisect reset
Challenge 71 – Fetch changes from a remote without merging them
git fetch origin
Challenge 72 – Reset local changes to match the remote branch
git fetch
git reset --hard origin/main
Challenge 73 – Merge remote changes while keeping local changes intact
git stash
git pull
git stash pop
Challenge 74 – Cherry-pick a commit from another branch
git cherry-pick abc1234
Challenge 75 – Force push after rewriting history
git push -f
Challenge 76 – Push and Set Upstream for New Remote Branch
git push -u origin feature-login
Challenge 77 – Set Upstream to Existing Remote Branch
git branch -u origin/feature-auth
Challenge 78 – Rebase a feature branch onto main
git switch feature-payment
git rebase main
Challenge 79 – Handle a detached HEAD state to safely explore
git checkout abc5678
git switch -c exploration
Challenge 80 – Sync a Fork with Upstream Repository
git fetch upstream
git switch main
git merge upstream/main
git push origin main
Challenge 81 – Use git reflog to recover a lost commit and save it
git reflog
git checkout -b recovered-work def5678
Challenge 82 – View a detailed log of changes per commit
git log -p
Challenge 83 – Create and use a .gitignore file
touch .gitignore
start .gitignore
Add the following lines to the file:
*.log
temp/
Save, then close the editor and press any key. Continue:
git add .
Challenge 84 – List all ignored files
git status --ignored
Challenge 85 – Set up Git aliases for frequently used commands
git config --global alias.st "status"
git config --global alias.co "checkout"
git config --global alias.br "branch"
git config --global alias.cm "commit -m"
Challenge 86 – Configure Git user name and email globally
git config --global user.name John Doe
git config --global user.email john.doe@example.com
Challenge 87 – Use git grep to search for text inside commits
git grep "TODO" HEAD~2
Challenge 88 – Use Git submodules to manage external repositories
git submodule add https://github.com/example/shared-utils.git libs/utils
git submodule init libs/utils
Challenge 89 – Clone a repository including submodules
git clone --recursive https://github.com/example/project-with-submodules.git
Challenge 90 – Work with multiple worktrees
git worktree add -b feature-a ../feature-a
git worktree add -b feature-b ../feature-b
git worktree add ../hotfix main
git worktree list
Challenge 91 – Automatically sign commits with GPG
git config --global user.signingkey ABC123DEF456
git config --global commit.gpgsign true
touch test.txt
git add .
git commit -m "Test signing"
Challenge 92 – Squash multiple commits into one when merging a branch
git merge --squash feature-cleanup
git commit -m "Implement cleanup feature"
Challenge 93 – Rewrite the history of a branch and force push
git rebase -i HEAD~2
Replace all lines with:
pick messy67 Fix typo in app.js
squash messy78 Add TaskManager class implementation
Save, then close the editor and press any key. Continue:
git rebase --continue
git push -f
Challenge 94 – Use git filter-branch to remove sensitive data from history
git filter-branch --tree-filter "rm -f secrets.txt" --prune-empty --all
Challenge 95 – Rewrite commit history using git rebase -i across multiple branches
git switch feature-cleanup
git rebase -i HEAD~3
Replace all lines with:
pick cleanup Fix typo in readme
squash cleanup Update package version
squash cleanup Format code style
Save, then close the editor and press any key. Continue:
git rebase --continue
git switch feature-refactor
git rebase main
git rebase -i HEAD~2
Replace all lines with:
pick 6b0c905 Refactor code structure
pick 543397c Refactor tests
Save, then close the editor and press any key. Continue:
git rebase --continue
Challenge 96 – Set up a Git server to host your own repositories
git init --bare project.git
git daemon --base-path=. --enable=receive-pack
Challenge 97 – Convert an existing Git repository into a bare repository
git clone --bare . ../project-bare.git
Challenge 98 – Use git rev-list with advanced filtering options
git rev-list --count --author="john" --grep="fix" --no-merges HEAD
Challenge 99 – Find all merge bases with git merge-base –all
git merge-base --all feature-x feature-y feature-z
Challenge 100 – Master Git Clean – Final Challenge
git clean -fdx -e important-notes.txt