Some of the complexity comes from the fact that in earlier versions it was reasonably expensive to add new subcommands. As a result more functionality got added to existing subcommands like git checkout. This made the UX more confusing.
In newer versions of git the cost of adding new subcommands is reduced and they've started adding more specific commands like git switch.
In newer versions of git the cost of adding new subcommands is reduced and they've started adding more specific commands like git switch.