Full notes
Full git gud update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Gameplay
- Balance
- Fixes
- Compatibility
- Events
Happy New Year!
It has been 203 days since the release of git gud, and I’m incredibly grateful for how many people have played and enjoyed the game. Hopefully, everyone has picked up a new Git command or two along the way as well.
This update is a big one, the largest so far. One of the most important additions is the new Content Pack system, which is the plan going forward for continued development. Content packs will introduce new sets of challenges built around themed, real-world–style scenarios. Each pack will be low cost (around a dollar or two) and will go on sale whenever the base game does. It’s important to me to keep git gud accessible while still being able to justify the time required to add meaningful new content and improvements. The first content pack will be releasing shortly alongside an introductory sale.
You may notice that this update includes a lot of changes. While some of that work was driven by the first content pack, I also added 246 new unit and integration tests. This surfaced a number of edge cases and areas that needed improvement, and it should significantly reduce the chance of regressions, particularly cases where previously valid challenge solutions would break after a major update.
git gud now includes support for git-filter-repo. I originally avoided this since it isn’t part of core Git, but I’ve listened to the community feedback encouraging its use over [c]git filter-branch[/c]. Existing challenges will continue to accept either tool as valid solutions, but an upcoming content pack introduces scenarios where company policy explicitly forbids [c]filter-branch[/c].
I’ve also made another pass at tab completion. This iteration should be a noticeable improvement and closer to real-world behavior across common terminal environments.
Finally, macOS support is now included. This has been available in the development branch for about a week with no reported issues so far. If any problems do come up, please report them in the Steam Discussions bug reporting forum so they can be addressed quickly.
As a small but important note: going forward, each release will be archived as a beta branch. If you run into issues with [c]1.5.0[/c], you’ll be able to revert to [c]1.4.2[/c] while waiting for fixes. This was requested by a university that uses git gud in coursework and needs tighter control over version upgrades.
Thanks again to everyone for the continued support, Sky
Changelog 1.5.0
New Features
Content Pack system added
Initial implementation of [c]git filter-repo[/c]
Added [c]--create-branch[/c] flag to [c]git worktree[/c]
Added [c]echo[/c] game command
Significant improvements to the Tab Complete functionality
Added support for MacOS
Git Simulation Improvements
Improved [c]git rebase[/c] emulation for closer real-world behavior
Especially around rebase todo ordering
Improved [c]git filter-branch[/c] emulation accuracy
Improved [c]git bisect[/c] to reduce redundant simulation guidance
Removed unsafe substrings in both rebase and bisect simulations
Merge emulation is now graph-based:
Introduced a new [c]CommitGraph[/c] utility used across the simulation
Merge commits are now true multi-parent commits (no-ff merges link both histories)
Merge validation now checks commit ancestry and reachability instead of commit message text
Validator Updates
Improved validators for Bisect, Rebase, Branch, Commit, File, and Stash
Improved file validator for restore related edge cases
Revised all [c]git clean[/c] validators
Revised [c]CommandNotUsed[/c]:
Now fully blocks execution of disallowed commands for a challenge
Examples: [c]git add[/c] in Challenge 4, [c]git pull[/c] in Challenge 71
Fixed branch validator supporting checkout-based creation but not [c]git switch[/c] (Challenge 81 notably)
Fixed filter-branch validator not accepting [c]--index-filter[/c]
Fixed clone validator not accepting [c]--mirror[/c]
Bug Fixes
Fixed header displaying [c]Completed: {diff}[/c] instead of [c]Difficulty: {diff}[/c]
Fixed [c]git checkout[/c] saying switched to branch when already there
Fixed edge case where Back from a challenge set prompted a progress reset
Fixed [c]git bisect good/bad[/c] marking the next commit instead of the current one
Fixed restore revision specifier handling
Fixed stash save/push not supporting positional message arguments
Fixed `git log` validator [c]--oneline[/c] flag placement
Fixed inconsistencies in [c]git log --author[/c] parsing
Fixed [c]git rebase [/c] targeting support
Fixed [c]git restore --staged[/c] edge cases
Source
Changelog.gg summarizes and formats this update. How we read updates.
