Every client in this section works on the same .git directory, so you can commit in one and push from another. VS Code 550 , lazygit 82,729 and tig 13,352 go further and drive your installed git program, showing you a view of its output. GIT_TRACE reveals it; here tig (lazygit and tig) starts in a detached tmux 49,533 terminal for two seconds:
tmux new-session -d -s l2-trace -x 95 -y 12 "GIT_TRACE=$HOME/tig-trace.log tig"
sleep 2 && tmux kill-session -t l2-trace
grep -o 'built-in: git .*' ~/tig-trace.log | cut -c 11-95 | sortgit config --list git log --encoding=UTF-8 --topo-order --date=raw --parents --no-color --show-notes '- git rev-parse --git-dir --is-inside-work-tree --show-cdup --show-prefix HEAD --symbol git show-ref --head --dereference git status --porcelain -z --untracked-files=normal
Five ordinary commands, plumbing such as rev-parse and show-ref and the stable --porcelain status format of Plumbing vs Porcelain, are all tig needs to draw its screen; sort is there because tig runs git log and git status in parallel, so their order varies.
Three facts make the command line the common denominator. It is the one interface present everywhere BookNest travels: on a server over SSH, inside a Docker 514 container (Docker), in every CI job (GitHub and Jenkins). Repository rules still apply: a commit from any client runs BookNest's Husky 35,333 hooks, commitlint 18,754 included, and a push meets the server's update hook. And new features reach the command line first; clients add commands such as git backfill (Partial Clone) later, if at all.
The command line is also what documentation, error messages and search results speak, and what scripts, aliases (Aliases) and automation build on. Learn it first, then choose a client for the jobs where a picture is clearer.