git add -p --ignore-submodules?
Есть ли способ игнорировать грязные подмодули при использовании git add --patch
?
Я поставил ignore = dirty
как объяснено здесь. Кажется, это работает только с git status
а также git diff
, я люблю git add -p
, Необходимость пропустить 10 грязных субмодулей каждый раз, когда я хочу добавить небольшое изменение, расстраивает меня.
Я не совсем понял, git add -i
пока, но похоже, что он обрабатывает грязные подмодули таким же образом.
2 ответа
Добавление тихо игнорировать обновления субмодуля, по словам Клинта, кажется слишком опасным.
Я не знаю, как это сделать с помощью add --patch, но я могу довольно близко подойти с помощью add --edit и сопоставления клавиш vim:
map <Leader>\x :%!sed '/^diff --git/\!{H;$\!d};x;1{$\!d;x};/\nindex[^\n]*160000\n/d'<CR>
пока будет карта \\x
устранить все подмодули обновления блоков. \!
s в этом - специфичные для vim escape-экраны, уберите эти обратные слеши, чтобы использовать sed в другом месте.
С Git 2.16.x/2.17 вам даже не понадобится --ignore-submodules
вариант,
с тех пор git add -p
"научили игнорировать локальные изменения в подмодулях, так как они не мешают частичному добавлению регулярных изменений в любом случае.
См. Коммит 12434ef (13 января 2018 г.) Нгуен Тай Нгук Дуй ( pclouds
)
(Объединено Юнио С Хамано - gitster
- в коммите e7e8077, 23 января 2018 г.)
добавить - интерактивный: игнорировать изменения подмодулей, кроме HEAD
За '
add -i
' а также 'add -p
', единственное действие, которое мы можем предпринять для грязной записи подмодуля, это обновить индекс новым значением из егоHEAD
,
Изменения содержимого внутри (из собственного индекса, неотслеживаемых файлов...) не имеют значения, по крайней мере, до 'git add -i
узнает о запуске нового интерактивного сеанса добавления внутри субмодуля.Игнорировать все другие изменения подмодулей, кроме HEAD.
Это уменьшает количество записей, которые пользователь должен проверить вgit add -i
и числоno
"они должны ответить"git add -p
'когда грязные подмодули присутствуют.