55 lines
1.5 KiB
Markdown
55 lines
1.5 KiB
Markdown
---
|
|
title: Easy Git Commit Targeting
|
|
description: Shortened SHA hashes and relative offsets
|
|
date: 2017-04-21
|
|
tags:
|
|
- Tech
|
|
---
|
|
|
|
A generally agreed upon goal of a developer is to use the mouse as little as possible. An often overlooked moment of touching the mouse is the seemingly inevitable moment of having to target a git commit via it's SHA hash. Truth is this doesn't need to be an ordeal.
|
|
|
|
**Let's look at some alternative ways to target commits**.
|
|
|
|
## By Shortened SHA Hash
|
|
|
|
Traditionally to find the `git diff 123abc456def789ghi` on a SHA you'd use the entire SHA hash. Instead, you can type just the first few characters and Git will figure out the rest.
|
|
|
|
``` bash
|
|
git diff 123abc
|
|
```
|
|
|
|
## Tilde
|
|
|
|
A common target is the previous commit from the HEAD. Using `HEAD~` will specify the intention of one commit before the HEAD.
|
|
|
|
``` bash
|
|
git diff HEAD~
|
|
```
|
|
|
|
### Past Tilde
|
|
|
|
Adding a number after the tilde `~` will target a commit prior to the head equal to the number specified.
|
|
|
|
``` bash
|
|
git diff HEAD~3
|
|
```
|
|
|
|
## Stacked Carets
|
|
|
|
Alternatively, the number of caret characters after HEAD will similarly target a commit prior to HEAD equal to the number of carets.
|
|
|
|
``` bash
|
|
git diff HEAD^^^
|
|
```
|
|
|
|
## Combine These Tricks
|
|
|
|
So close! Ever want to target the commit just previous to a SHA hash? It's easier than you think.
|
|
|
|
``` bash
|
|
git diff 123abc~
|
|
```
|
|
|
|
# Summary
|
|
|
|
Through a combination of shortened SHA hashes, HEAD, and relative tilde/caret characters anyone can fly through git history with confidence.
|