Pick a client for what it shows you, and keep the decisions in the repository and in your configuration, where every tool obeys them:
Know what each button runs. VS Code 550 's Git 1,932 output channel, lazygit 82,729 's command log (bottom right in 19) and GitKraken 19,546 's activity log show the commands. "Sync" usually means pull, then push; "force push" in a GUI may or may not mean --force-with-lease (--force-with-lease).
Set policy in Git, not in the GUI. pull.ff only, commit.gpgSign, hooks, .gitattributes and the server's rules (Git Hooks and Automated Checks, Signing Commits and Workflows and Conventions) apply whatever the client; a GUI's own "rebase on pull" checkbox applies only to that GUI.
Keep the fundamentals in reach. When a GUI shows something strange, git status, git log --graph and git reflog (Reflog and Recovery) tell you what really happened, and they are all you have on a server.
Standardize lightly. A team can share hooks and conventions without agreeing on a client.
For BookNest, Sam uses the command line for everything that ends up in scripts and CI, VS Code's merge editor for conflicts and lazygit for interactive rebases. A new teammate may choose differently, and every commit they make still runs commitlint 18,754 .