TL;DR; #
git add -p
A bit more detail #
The git add -p
(or --patch
) command goes through all files and asks about each change, what you want to do with it:
❯ git add -p
diff --git a/ansible/file.yml b/ansible/file.yml
index 73f6b4d..899610f 100644
--- a/ansible/file.yml
+++ b/ansible/file.yml
@@ -52,7 +52,8 @@
loop:
- - "service"
+ - "node_modules"
+ - "systemd_templates"
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
Then it’s an interactive input. Well, the most important are “y
” and “n
" — to add these changes to the index or skip them. There are options to skip or add “to the end of the file”. It can also be used as git add -p filename
.
Reminder, the index in git is a list of files that will be committed.
Importantly, this action adds our change only to the index. It still needs to be committed.
How else can it be used? #
As I wrote here, I always used either git add .
or git add <filename>
. But there’s a catch:
with git add .
, extra files about which you might have forgotten can get into the index, and then into the commit
Here, git add -p
allows you to more consciously (thoughtfully) go through the files before adding them to the index.
Also, a reminder that to remove a file from the index, you can use the command git reset filename.