gitmodules
Название
gitmodules — определение свойств подмодулей
Краткое описание
$GIT_WORK_TREE/.gitmodules
Описание
Файл .gitmodules, расположенный в каталоге верхнего уровня рабочего дерева Git, является текстовым файлом с синтаксисом, соответствующим требованиям git-config[1].
Файл содержит по одному подразделу для каждого подмодуля, а значение подраздела — имя подмодуля. В качестве имени задаётся путь, по которому был добавлен подмодуль, если оно не было изменено с помощью параметра --name команды git submodule add. В каждом разделе подмодуля также содержатся следующие обязательные ключи:
- submodule.<name>.path
-
Определяет путь относительно каталога верхнего уровня рабочего дерева Git, по которому должен быть извлечён подмодуль. Имя пути не должно оканчиваться на
/. Все пути подмодулей в файле.gitmodulesдолжны быть уникальными. - submodule.<name>.url
-
Определяет URL, по которому можно клонировать репозиторий подмодуля. Это может быть либо абсолютный URL, готовый для передачи команде git-clone[1], либо (если он начинается с
./или../) путь относительно исходного репозитория суперпроекта.
Кроме того, есть несколько необязательных ключей:
- submodule.<name>.update
-
Определяет процедуру обновления по умолчанию для указанного подмодуля, то есть способ обновления подмодуля командой
gitsubmoduleupdateв суперпроекте. Используется только командойgitsubmoduleinitдля инициализации одноимённой переменной конфигурации. Допустимые значения:checkout,rebase,mergeилиnone, но не!command(по соображениям безопасности). Подробнее см. описание командыupdateв git-submodule[1]. - submodule.<name>.branch
-
Имя удалённой ветки для отслеживания обновлений вышестоящего подмодуля. Если параметр не указан, по умолчанию используется удалённый репозиторий
HEAD. Специальное значение.указывает, что имя ветки в подмодуле должно совпадать с именем текущей ветки в текущем репозитории. Подробнее см. документацию к--remoteв git-submodule[1]. - submodule.<name>.fetchRecurseSubmodules
-
Этот параметр позволяет управлять рекурсивной выборкой данных для данного подмодуля. Если этот параметр также присутствует в записи подмодуля в
.git/configсуперпроекта, значение в ней переопределяет значение из.gitmodules. Оба значения можно переопределить в командной строке с помощью параметра--[no-]recurse-submodulesдля командgitfetchиgitpull. - submodule.<name>.ignore
-
Определяет, при каких обстоятельствах
gitstatusи семейство команд diff показывают подмодуль как изменённый. Поддерживаются следующие значения:- all
-
Подмодуль никогда не будет считаться изменённым (но всё равно появится в выводе status и commit, если он был добавлен в индекс). Добавление подмодуля с помощью (
newcommits) можно принудительно выполнить с помощью git add --force <submodule.path>. Этот параметр влияет на командыstatus,update-index,diffиlog(из-за лежащей в их основе командыdiff). - dirty
-
Все изменения рабочего дерева подмодуля игнорируются; учитываются только зафиксированные различия между
HEADподмодуля и его состоянием, записанным в суперпроекте. - untracked
-
Игнорируются только неотслеживаемые файлы в подмодулях. Зафиксированные различия и изменения отслеживаемых файлов будут отображаться.
- none
-
Изменения в подмодулях не игнорируются: отображаются все зафиксированные различия, а также изменения отслеживаемых и неотслеживаемых файлов. Это значение используется по умолчанию.
Если этот параметр также присутствует в записи подмодуля в
.git/configсуперпроекта, значение в ней переопределяет значение из.gitmodules.Оба значения можно переопределить в командной строке с помощью параметра
--ignore-submodules. На командыgitsubmoduleэтот параметр не влияет. - submodule.<name>.shallow
-
Если установлено значение true, подмодуль будет клонирован поверхностно (с глубиной истории 1), если только пользователь явно не запросит обычное клонирование.
Примечания
Git не разрешает использовать символическую ссылку в качестве файла .gitmodules в рабочем дереве и откажется извлекать такой элемент дерева. Это обеспечивает согласованное поведение при доступе к файлу через индекс или дерево и через файловую систему, а также помогает Git надёжно выполнять проверки безопасности содержимого файла.
Примеры
Рассмотрим следующий файл .gitmodules:
[submodule "libfoo"]
path = include/foo
url = git://foo.com/git/lib.git
[submodule "libbar"]
path = include/bar
url = git://bar.com/git/lib.git В нём определены два подмодуля: libfoo и libbar. Предполагается, что они будут извлечены в пути include/foo и include/bar; для обоих подмодулей указан URL, который можно использовать для их клонирования.
См. также
gitmodules
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/gitmodules