Skip to content

Workflows git

Eugene Lazutkin edited this page Apr 18, 2026 · 6 revisions

Workflows: git

See Git Configuration for aliases, pretty formats, and diff viewers (delta + difftastic). See Shell Environment § Git shell aliases for the full alias table with completions.

Interactive git

For rarely used commands and anything requiring a code review, interactive tools work best.

  • gg (git-gui) — review files before commit, create a commit, create a branch.
  • gk (gitk --all) — project commit history, branches, tags. Individual file/folder commit history.
  • lzg (lazygit) — TUI alternative, similar to git-gui but in a terminal.
  • git ls — CLI commit log with tags and branches. CLI counterpart to gk.

All three GUI/TUI tools are installed by this project by default.

Working on features

Day-to-day feature-branch work uses a small set of shell aliases (gcob, gpush, gpull, gsw, gme, gst). Each wraps a git command with colored output and tab-completable branch names — see the alias table for details.

Typical feature-branch lifecycle:

# create a feature branch and switch to it
gcob feature-branch
# work on code, review changes with gg or lzg, commit
gpush
# switch back to the main branch and update it
gsw
gpull
# switch back to the feature branch (name is tab-completable)
gsw feature-branch
# merge the latest main into the feature branch
gme
gpush
# when the feature is ready, merge it back to main
gsw
gme feature-branch
gpush
# optionally tag the release
git tag 1.2.3
gpush --tags

Managing branches

gbr wraps git branch with tab completion. git br is an enhanced branch inspector that shows subject, date, and author.

# list local branches
gbr
# list with enhanced formatting (subject, date, author)
git br
# list all branches (local + remote) with enhanced formatting
git br -a

# delete a merged branch (tab-completable)
gbr -d feature-branch
# force-delete an unmerged branch
gbr -D experiment

# rename a branch
gbr -m old-name new-name

For more branch views see Git Configuration § Custom git commands: git brr (remote branches by date), git bs (tabular format), git mbs (your branches only).

Working with submodules

Many projects in this setup include associated GitHub wikis or other repositories as submodules. Two helpers keep them in sync:

Alias Description
gpurr Pull the current repo and all its submodules, then check out and pull the main branch in each submodule.
gpwiki Same as gpurr, but limited to submodules in directories called wiki or external_wiki.

Clone this wiki locally