Interactive staging

A major addition to my Git workflow has been the ability to interactively add hunks of code to be committed.

There's git add -i to interactively add, though I usually go straight to git add -p to use patch.

This will ask you to confirm if you want to add each hunk to the commit (a.k.a. the staging area) or not.

For example, here's the prompt I get whilst working on the post for this email:

diff --git a/source/_daily_emails/2024-05-06.md b/source/_daily_emails/2024-05-06.md
index 42fe48f..ef36a2b 100644
--- a/source/_daily_emails/2024-05-06.md
+++ b/source/_daily_emails/2024-05-06.md
@@ -4,10 +4,12 @@ date: 2024-05-06
permalink: daily/2024/05/06/interactive-staging
tags:
- software-development
- # - drupal
- # - php
- # - podcast
+ - git
cta: ~
snippet: |
TODO
---
+
+A major addition to my Git workflow has been the ability to interactively add hunks of code to be committed.
+
+There's `git add -i` to interactively add, though I usually go straight to `git add -p` to use `patch`.
+There's `git add -i` to interactively add, though I usually go straight to `git add -p` to use `patch`.
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]?

I can add the whole hunk, split it into smaller hunks, add all the hunks in the file or ignore this hunk and later hunks in the file.

Then the process is repeated for any following hunks.

This means I can add the relevant hunks to craft the commit I want and I can keep my commits small and meaningful, and easy to revert if there is an issue.