oliverdavies.uk/source/_daily_emails/2024-05-06.md
Oliver Davies 5eba6de81a Update daily email permalinks
This is a follow-up to commit 3be9031de8
as each daily email has a `permalink` value that overrides the default
content type permalink.
2024-05-21 00:03:52 +01:00

51 lines
1.7 KiB
Markdown

---
title: Interactive staging
date: 2024-05-06
permalink: daily/2024/05/06/interactive-staging
tags:
- software-development
- 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`.
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:
```shell
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.