Читать нас в Telegram

intend-to-add в Git

Рубрика: Переводы
,
197

Команда git add выполняется вслепую, но ее можно более или менее проконтролировать, используя опцию --patch. Но к сожалению, она хорошо работает только с изимененными или удаленными файлами, а вот неотслеживаемые ”(англ. untracked — это файлы, отсутствующие в предыдущем коммите)” файлы отображены не будут.

$ echo "Hello, World!" > untracked $ git status --short ?? untracked $ git add --patch No changes.

Это лечится опцией ”’--intend-to-add”’. В соответствии с документацией, эта опция меняет поведение git add следующим образом:

Отмечает только сам факт того, что изменения впоследствии будут учтены. В индексное дерево помещается только путь, без содержимого. Это может быть полезно, к примеру, для отображения неиндексированного содержимого этих файлов при использовании git diff или дальнейшей записи этих изменений с помощью git commit -a.

Это означает, что после выполнения git add --intend-to-add неотслеживаемые файлы будут добавлены в индексное дерево, но без содержимого (т.е. будет указан только путь). Теперь, при запуске git add --patch будут отображаться различия во всех ранее индексированных неотслеживаемых файлах даже с перечислением измененных строк. Это позволяет вам просмотреть весь файл, строка за строкой, прежде, чем индексировать его. Вы можете даже отменить индексирование каких-либо строк, просто удалив их из патча.

$ echo "Hello, World!" > untracked $ git status --short ?? untracked $ git add --intent-to-add untracked $ git status --short AM untracked $ git add --patch diff --git a/untracked b/untracked index e69de29..8ab686e 100644 --- a/untracked +++ b/untracked @@ -0,0 +1 @@ +Hello, World! Stage this hunk [y,n,q,a,d,/,e,?]?

Для удобства, можно в .gitconfig обозначить add --all --intent-to-add, например, за aa и add --patch за ap. И в таком случае для большинства коммитов достаточно будет писать:

$ git aa
$ git ap

Или в gitsh:
& aa & ap

Источник

Хинт для программистов: если зарегистрироваться на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Темы: