VSCode handles this very well too: select the lines you want to commit and do "Git: Stage selected ranges"
VSCode's interface to Git is superior to Git-native. Adding the concept of Sync, simplifying branching, so many niceties.
[alias]
sync = "git squash && git pull --rebase && git pop && git push" # YMMV
Git GUIs are always changing the interface to git. It gives you this weird lockin and islandification. Knowing how to actually use git can give you super powers.