Git's Course Correction

The crammed-in roles, split into single-purpose tools
The crammed-in roles, split into single-purpose tools

In older versions of Git, git reset was used to unstage files. But reset could also rewind commit history depending on the options you passed. git checkout had the same problem: it handled both branch switching and file restoration. Multiple roles were crammed into single commands.

In 2019, Git 2.23 introduced restore and switch, cleanly separating file operations from branch operations. Git took the roles it had crammed into one command and split them apart. Software isn't born perfect. It improves as people use it.

If Git feels confusing, it's not your fault. Git's own history of change proves it.