TL;DR; #
git add -p
Чуть подробнее #
Команда git add -p (или --patch) проходит по всем файлам и спрашивает по каждому изменению, что ты хочешь с ним сделать:
❯ 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,?]?
А дальше интерактивный ввод. Ну, самое важное — это “y” и “n" — добавить эти изменения в индекс или пропустить. Есть варианты с пропустить или добавить “до конца файла”. Можно использовать как git add -p filename.
Напомню, индекс в git — это список файлов, которые будут закоммичены.
Важно, это действие добавляет наше изменение только в индекс. Его еще нужно закоммитить.
Как еще можно использовать? #
Как писал вот здесь, я всегда пользовался либо git add ., либо git add <filename>. Но тут есть загвоздка:
при git add . в индекс, а затем и в коммит, могут попасть лишние файлы про редактирование которых ты мог и забыть уже
Вот git add -p позволит более осознанно (преисполненно) пройтись по файлам перед тем как добавить их в индекс.
Так же напомню, что для удаления файла из индекса можно воспользоваться командой git reset filename.