Як вже згадувалося в блозі Марка Лонгейра, пояснення Git Submodules Explained ,
Версії 1.7.0 і пізніших версій git містять дратівливу зміну поведінки підмодуля git.
Підмодулі зараз вважаються брудними, якщо вони мають будь-які модифіковані файли чи файли , що не відслідковуються , тоді як раніше це було б лише в тому випадку, якщо HEAD в підмодулі вказав на неправильну комісію.
Значення знаку плюс ( +
) у виході підмодуля git змінилося, і коли ви вперше стикаєтесь з цим, потрібно трохи часу, щоб з'ясувати, що відбувається не так, наприклад, переглянувши журнали змін або використовуючи біт біт на git .git, щоб знайти зміни. Користувачам було б набагато приємніше вводити інший символ "у вказаній версії, але брудно".
Ви можете виправити це:
або здійснити, або скасувати зміни / еволюції в кожному з ваших підмодулів, перш ніж повернутися до батьківського репо (де diff більше не повинен повідомляти про "брудні" файли). Щоб скасувати всі зміни вашого підмодуля просто cd
у кореневому каталозі вашого підмодуля і виконайте цеgit checkout .
dotnetCarpenter коментує, що ви можете:git submodule foreach --recursive git checkout .
або додати --ignore-submodules
до своїх git diff
, щоб тимчасово ігнорувати ці "брудні" підмодулі.
Нове у версії 1.7 Git
Як зауважує Ноам нижче , це питання зазначає, що, оскільки версія git 1.7.2, ви можете ігнорувати брудні підмодулі за допомогою:
git status --ignore-submodules=dirty
git commit -a
не турбуючись, додаючи ці зміни. Хоча вони позначеніM
спереду, вони не закінчаться у ваших зобов'язаннях.