<p>Whenever you need to start a new task in a codebase, I think it's important to always try to start with a clean slate.</p>
<p>This is having an empty staging area and no lingering or uncommitted changes from previous tasks.</p>
<p>I do this to avoid having contaminated commits that contain multiple changes. Each commit should be related to one change.</p>
<p>You can use <code>git add -p</code> to <a href="/daily/2024/10/25/always-review-your-changes">review, stage and commit parts of your changes</a>, but as the uncommitted changes grow, you're less likely to do that and more likely to commit them at once with a generic commit message that offers no value when viewed in the commit log.</p>
<p>You're more likely to create better and more valuable commits and write better commit messages if you break them into chunks and commit the changes as you make them.</p>
<p>If you have extra files you don't want to commit, add them to a <code>.gitignore</code> file or <code>.git/info/exclude</code> so they're ignored.</p>
<p>If you have uncommitted changes that you want to hide for now but re-add later, <a href="/daily/2024/10/24/git-stash-is-underrated">git stash is your friend</a>.</p>
<p>If you want your changes to be completely separate, maybe <a href="/daily/2022/08/12/git-worktrees-docker-compose">git worktrees are for you</a>.</p>
format:full_html
processed:|
<p>Whenever you need to start a new task in a codebase, I think it's important to always try to start with a clean slate.</p>
<p>This is having an empty staging area and no lingering or uncommitted changes from previous tasks.</p>
<p>I do this to avoid having contaminated commits that contain multiple changes. Each commit should be related to one change.</p>
<p>You can use <code>git add -p</code> to <a href="/daily/2024/10/25/always-review-your-changes">review, stage and commit parts of your changes</a>, but as the uncommitted changes grow, you're less likely to do that and more likely to commit them at once with a generic commit message that offers no value when viewed in the commit log.</p>
<p>You're more likely to create better and more valuable commits and write better commit messages if you break them into chunks and commit the changes as you make them.</p>
<p>If you have extra files you don't want to commit, add them to a <code>.gitignore</code> file or <code>.git/info/exclude</code> so they're ignored.</p>
<p>If you have uncommitted changes that you want to hide for now but re-add later, <a href="/daily/2024/10/24/git-stash-is-underrated">git stash is your friend</a>.</p>
<p>If you want your changes to be completely separate, maybe <a href="/daily/2022/08/12/git-worktrees-docker-compose">git worktrees are for you</a>.</p>