Когда-то (я думаю, примерно в версиях 1.6.x) git узнал об изменениях внутри подмодулей. Это меня только раздражает:
Поставщик статуса $ git | grep изменен: # modified: vendor / rails (измененное содержимое)
$ git diff vendor / diff --git a / vendor / rails b / vendor / rails --- a / vendor / rails +++ b / vendor / рельсы @@ -1 +1 @@ -Подпроект коммит 046c900df27994d454b7f906caa0e4226bb42b6f + Подпроект коммит 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
Пожалуйста, останови это?
Редактировать:
Хорошо, у меня есть ответ. Теперь у меня другой вопрос:
Могу я вставить это ~/.gitconfig
? Судя по моему первоначальному мнению, я не могу этого сделать, и я не увидел ничего многообещающего, просматривая патч. (Думаю, я еще могу придумать псевдоним.)
Ответы:
Существует даже возможность установить режим игнорирования для каждого добавленного подмодуля в файле .gitmodules.
Как раз сегодня я столкнулся с этой проблемой и сразу же после того, как нашел решение, написал об этом статью в своем блоге: Как игнорировать изменения в подмодулях git
Суть его:
Просто добавьте в этот
.gitmodules
файл одну строчку :источник
git status
. Также вам нужно как минимум 1.7.4 или лучше..gitignore
файла существует частная версия с именемexclude
, расположенная в.git/info/
, которая не обрабатывается версиями. Есть ли соответствующий файл для.gitmodules
файла, который позволит вам подавлять изменения в подмодуле только в вашем экземпляре родительского репозитория, не внося изменений в.gitmodules
?Есть два типа уведомлений об изменениях, которые вы можете подавить.
Первое
untracked content
происходит, когда вы вносите изменения в свой подмодуль, но еще не зафиксировали их. Родительский репозиторий замечает это иgit status
сообщает об этом соответственно:modified: modules/media (untracked content)
Вы можете подавить их с помощью:
Однако, как только вы зафиксируете эти изменения, родительский репозиторий снова обратит внимание на них и сообщит о них соответствующим образом:
Если вы хотите подавить и это, вам нужно игнорировать
all
измененияисточник
.gitignore
файла существует частная версия с именемexclude
, расположенная в.git/info/
, которая не обрабатывается версиями. Есть ли соответствующий файл для.gitmodules
файла, который позволит вам подавлять изменения в подмодуле только в вашем экземпляре родительского репозитория, не внося изменений в.gitmodules
?ignore = all
Часть полезна.Обновление: См (и upvote) nilshaldenwang «s ответ о возможности добавить в
.gitmodules
файл конфигурации параметр для игнорирования грязного состояния данного субмодуля.Итак, git 1.7.2 отсутствует и включает
--ignore-submodules
опцию дляstatus
.Откуда
git help status
:Значение, которое я хочу
dirty
.Я использую псевдоним, потому что мне лень:
источник
ignore=dirty
отдельных записей в.gitmodules
файл.Как вы упомянули, подмодуль patch git: игнорировать грязные подмодули для сводки и статуса находится в стадии разработки.
Также объявлено в выпуске Git 1.7.2-rc2 :
Смысл:
Относительно этого варианта сейчас не совсем тот подход :
"
git diff
" и "git status
" будут использовать это значение конфигурации для каждого подмодуля.Использование "
--ignore-submodule
" отменяет это значение по умолчанию (и новый параметр "none" будет добавлен туда, чтобы иметь возможность переопределить настройки конфигурации).Другой подход, позволяющий сделать git status (или любую команду git) игнорированием определенного подмодуля, доступен в Git 2.13 (второй квартал 2017 г.):
См. Больше в « Игнорировать новые коммиты для подмодуля git ».
источник
ignore = dirty
"Вы также можете использовать
установить
submodule.ignore = dirty
в вашем.git/config
файле.--global
установит флаг игнорирования в вашем~/.gitconfig
и применит ко всем вашим репозиториям. Без него он должен быть установлен.git/config
только для репо, в котором вы сейчас находитесь.Единственная документация, которую я могу найти по этому
submodule.<name>.ignore
поводу, находится в документации git-config . Я переместил его из файла .gitmodules в свой ~ / .gitconfig, и он все еще у меня работает.источник
Вам нужно добавить
в .gitmodules
источник
Итак, git v1.7.2-rc2 имеет то, что я хочу:
Создание собственного git howto:
источник
git clone git://git.kernel.org/pub/scm/git/git.git git
.Я ответил на этот вопрос здесь более подробно.
Просто беги
чтобы добавить параметр локальной конфигурации, чтобы игнорировать эти изменения.
источник
Возможно, вы не захотите добавлять
ignore = dirty
что-либо.gitmodules
, вы можете более избирательно подходить к изменениям, которые вы хотите игнорировать.Для этого добавьте шаблоны в
.git/submodule_foo/bar/info/exclude
, гдеsubmodule_foo/bar/
путь к подмодулю.Шаблоны похожи на шаблоны, которые вы бы добавили
.gitignore
, причем корнем является каталог подмодуля. Например, этот шаблон игнорируетbuild
каталог в подмодулеsubmodule_foo/bar/
:источник