<p><a href="/daily/2022/11/20/version-controlled-commented-out-code">Yesterday's email</a> talked about whether commented-out code should be present if your code is version-controlled, but how do you avoid committing it in the first place?</p>
<p>You could make sure that you remove everything manually before you stage and commit your changes, or I like to use <code>git add --patch</code> (or <code>git add -p</code>) to interactively stage my changes, allowing me to select which parts of files I want to include in my commit and ignore anything else. The <code>--patch</code> option also works for other commands, including <code>checkout</code> and <code>reset</code>.</p>
<p>If you've already committed something like some debug code, you can use <code>git commit --amend</code> to amend the previous commit before pushing it, or if you have a separate clean-up commit, you can use <code>git rebase --interactive</code> and either the squash or fixup options to amend the original commit.</p>
<p>If some old code has been removed and you want to find it, you can use <code>git log -S</code> with a string to search for, and Git will show a list of commits where the specified string was changed.</p>
<p>If instead, you wanted to search for text within the commit message, you can use <code>git log --grep</code> with a string like an issue number to see a list of commits with that text in the commit message subject line or body.</p>
<p>I hope these tips help keep unwanted code out of your version-control repository.</p>
<p><a href="/daily/2022/11/20/version-controlled-commented-out-code">Yesterday's email</a> talked about whether commented-out code should be present if your code is version-controlled, but how do you avoid committing it in the first place?</p>
<p>You could make sure that you remove everything manually before you stage and commit your changes, or I like to use <code>git add --patch</code> (or <code>git add -p</code>) to interactively stage my changes, allowing me to select which parts of files I want to include in my commit and ignore anything else. The <code>--patch</code> option also works for other commands, including <code>checkout</code> and <code>reset</code>.</p>
<p>If you've already committed something like some debug code, you can use <code>git commit --amend</code> to amend the previous commit before pushing it, or if you have a separate clean-up commit, you can use <code>git rebase --interactive</code> and either the squash or fixup options to amend the original commit.</p>
<p>If some old code has been removed and you want to find it, you can use <code>git log -S</code> with a string to search for, and Git will show a list of commits where the specified string was changed.</p>
<p>If instead, you wanted to search for text within the commit message, you can use <code>git log --grep</code> with a string like an issue number to see a list of commits with that text in the commit message subject line or body.</p>
<p>I hope these tips help keep unwanted code out of your version-control repository.</p>