---
title: Self Code Review with Git Add Patch
description: Reduce errors and typos while building confidence with every chunk you commit.
date: 2017-05-04
tags:
  - Tech
  - Workplace
---

Code reviews reduce logical errors, call out typos, and prevents accidentally committing more code than intended ([1](https://www.atlassian.com/agile/code-reviews)). They're essential for _all sized teams_ pushing to the same code base while _maintaining sanity_.

Should a developer find themselves discovering any accidental "oops!" in their pull request it's a good indicator of a flaw in workflow. **Introducing the interactive self code review:**

``` bash
git add --interactive
```

Interactive adding in git offers a choose-your-own-adventure style "What Now>" series of options.

## The Useful Bit: _Git Patch_

Today let's look at the _**p**atch_ option. We can skip to the patch option in the future with this handy shortcut:

_Example pretends we have file.ext and have added a line that defines a version..._

``` bash
git add -p

diff --git a/file.ext b/file.ext
index sha1..sha2 sha3
-- a/file.ext
++ b/file.ext
{
  "name": "example json",
  +"version": "1.0.0",
  "private": true,
Stage this hunk [y,n,q,a,d,/,e,?]?
```

Looks like a huge chunk of stuff! Broken down, the response describes what file was modified followed by a chunk of color coated git diff.

### Now What? Staging Hunks of Code

Many options are provided in the "Stage this hunk?" prompt following a git add patch.

Pressing `?` in response to the prompt explains each valid response. These are some essentials:

* **y** - stage this hunk
* **n** - do _not_ stage this hunk
* **q** - quit

You'll find that by going through this process you can read every line you'd like to add to a commit and make better choices about them.

### Splitting `s`

These "magical" feeling chunks aren't always smart enough. Sometimes there's a need to split (with the `s` response) a chunk into smaller chunks. This comes up more often than you'd think if you're developing empathetically.

### `a` Add or `d` Don't Add Entire File

An `a` response will stage the current hunk and all the following within the current file automatically. This is **_not_ recommended because you're opting to skip parts of your personal code review**.

However, `d` is a nice way to skip adding anything from an entire file and can save a lot of time.

### Manually Editing

Typos or "oops!" can be quickly corrected with the `e` response. This will open just the chunk for quick adjustments including line adding and removal.

# Summary

Git patch has become a core part of my workflow to **ensure quality** and boost **personal confidence in the code I ship**. Give it a try today!
