Skip to main content

Git

Last tended May 4, 2021 Tended once Planted May 4, 2021

Here are some of the git commands that I find useful when doing by work as a software engineer. Hopefully you will find them helpful too!

Commands

git checkout -

Quick: Checkout the previous branch

This is super handy when working with long or unwieldy branch names. With the - reference, you can convert the following set of commands into a reusable alias:

git checkout dev && git pull && git checkout - && git merge dev

git checkout -- .

Quick: Delete all changes in the current branch

When you just want to start from scratch on the current branch, this command is a huge timesaver. The -- refers to the current branch, while the . refers to all files. If you want to reset a particular file, you could swap the name with the ..

git commit -m "init" --allow-empty

Quick: Create a commit with no changes

When starting on a development task, sometimes it’s nice to set up branches and PRs before getting started on the work. The --allow-empty flag enables you to create commits without changing any files.

I use this when I have a feature branch that will be the target of bunch of smaller branches. Initializing a those with an empty commit helps be get organized in the beginning.

git diff branch_name -S "TODO:"

Quick: Search the diff between the current branch and branch_name for all strings matching TODO:

When working on a new feature, I like to leave myself todos to address before the branch is merged. Tracking these down can be tricky because there are other TODO:s in the codebase. I used to grep through the diff, but git’s -S flag is much easier.

git diff branch_name -G "/*-action"

Quick: Search the diff between the current branch and branch_name for all strings matching the /*-action RegEx pattern

Similar to the -S flag, -G lets you search through the diff using RegEx. I don’t know too much about regular expressions, but it’s nice to have the option in your toolbelt.

git log --before="2021-01-01 00:00"

Quick: Limit the log output to all commits before the provided date.

This is handy when you want to look at commits from a particular date or before a date (and/or after with --after=).