git gud – 100% Achievement Guide

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

Add a Comment

Your email address will not be published. Required fields are marked *