← Back to context

Comment by MaxBarraclough

10 hours ago

To get your bearings regarding where you got to with your uncommitted work, you might do something like:

    git status && git diff HEAD

That will tell you which files you've touched and will show you their diffs. If necessary you can search within the diff: press '/' to bring up the search feature (assuming you're using the default less pager).

To search for all mentions of 'TODO' in the repo, ignoring untracked files:

    git grep TODO

or, case insensitive variant:

    git grep -i TODO

I have a very involved `gq` alias that helps me find and finish pending work. It works either in the current repository or a folder containing multiple repositories.

Basically, my assumption is that `gq` should return empty, which means I have a clean slate, and can start taking on new work. Otherwise, there is ongoing work that needs attention.

It just lists:

  * modified/untracked files
  * stashed changes
  * local-only branches (not tracking a remote branch)
  * branches out-of-sync with their upstream (either ahead or behind)
  * branches that aren't the main branch (even if tracking and in-sync with a remote upstream)

Getting this command to return empty is a surprisingly effective way to stay productive, especially when losing focus due to too much work.

It's basically inbox-zero for git.

But it only works if you like working with a clean worktree.