The Command Line

The Command Line as the Common Denominator

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:

Tracing the Git commands a terminal UI runs when it startsShell
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 | sort
Output
git 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.