git-init
Имя
git-init — создать пустой репозиторий Git или повторно инициализировать существующий
Синтаксис
git init [-q | --quiet] [--bare] [--template=<template-directory>]
[--separate-git-dir <git-dir>] [--object-format=<format>]
[--ref-format=<format>]
[-b <branch-name> | --initial-branch=<branch-name>]
[--shared[=<permissions>]] [<directory>] Описание
Эта команда создаёт пустой репозиторий Git — по сути, каталог .git с подкаталогами для objects, refs/heads, refs/tags и файлами шаблонов. Будет создана начальная ветка без коммитов (её имя задаётся параметром --initial-branch, описанным ниже).
Если задана переменная окружения GIT_DIR, она указывает путь, который будет использоваться вместо ./.git в качестве основы репозитория.
Если каталог хранения объектов задан с помощью переменной окружения GIT_OBJECT_DIRECTORY, каталоги sha1 создаются внутри него; в противном случае используется каталог по умолчанию $GIT_DIR/objects.
Безопасно запускать git init в существующем репозитории. Команда не перезапишет то, что уже существует. Основная причина повторного запуска git init — добавить новые шаблоны (или переместить репозиторий в другое место, если задан параметр --separate-git-dir).
Параметры
-
-q -
--quiet -
Выводить только сообщения об ошибках и предупреждениях; весь остальной вывод подавляется.
-
--bare -
Создать голый репозиторий. Если переменная окружения
GIT_DIRне задана, ей присваивается текущий рабочий каталог. -
--object-format=<format> -
Задать для репозитория указанный формат объекта
<format>(алгоритм хеширования). Допустимые значения:sha1и (если поддерживается)sha256. Значение по умолчанию —sha1.Примечание: в настоящее время репозитории SHA-256 и SHA-1 несовместимы друг с другом.
Ранее мы предупреждали, что при добавлении функций совместимости репозиториям SHA-256 могут потребоваться несовместимые с предыдущими версиями изменения. Сейчас мы ожидаем только совместимых изменений. Кроме того, если такие изменения всё же окажутся необходимы, можно ожидать, что репозитории SHA-256, созданные в сегодняшней версии Git, будут доступны в будущих версиях Git без потери данных.
-
--ref-format=<format> -
Задать для репозитория указанный формат хранения ссылок
<format>. Допустимые значения:-
files -
для отдельных файлов с packed-refs. Это значение используется по умолчанию.
-
reftable -
для формата reftable.
-
-
--template=<template-directory> -
Указать каталог, из которого будут использоваться шаблоны. (См. раздел «КАТАЛОГ ШАБЛОНОВ» ниже.)
-
--separate-git-dir=<git-dir> -
Вместо инициализации репозитория как каталога
$GIT_DIRили./.git/создать там текстовый файл, содержащий путь к фактическому репозиторию. Этот файл служит символической ссылкой Git на репозиторий, независимой от файловой системы.При повторной инициализации репозиторий будет перемещён по указанному пути.
-
-b<branch-name> -
--initial-branch=<branch-name> -
Использовать
<branch-name>в качестве начальной ветки в создаваемом репозитории. Если параметр не указан, используется имя по умолчанию (сейчас этоmaster, но после выхода Git 3.0 оно изменится наmain). Имя по умолчанию можно настроить с помощью переменной конфигурацииinit.defaultBranch. -
Указать, что репозиторий Git будет использоваться совместно несколькими пользователями. Это позволяет пользователям, принадлежащим к одной группе, отправлять изменения в этот репозиторий. При указании этого параметра переменной конфигурации
core.sharedRepositoryприсваивается значение, обеспечивающее создание файлов и каталогов в$GIT_DIRс запрошенными правами доступа. Если параметр не указан, Git использует права доступа, сообщаемые командойumask(2).Параметр может принимать следующие значения; если значение не задано, используется
group:-
umask -
false -
Использовать права доступа, сообщаемые командой
umask(2). Значение по умолчанию, если параметр--sharedне указан. -
group -
true -
Сделать репозиторий доступным для записи группе (а также
g+sx, поскольку группа git может не быть основной группой всех пользователей). Этот параметр ослабляет ограничения безопасного значенияumask(2). Обратите внимание, что umask по-прежнему применяется к остальным битам прав доступа (например, если umask равен0022, использованиеgroupне отменит права на чтение для других пользователей, не входящих в группу). См.0xxx, чтобы точно задать права доступа к репозиторию. -
all -
world -
everybody -
То же, что и
group, но с правом чтения репозитория для всех пользователей. - <perm>
-
<perm>— трёхзначное восьмеричное число с префиксом0; для каждого файла будет установлен режим<perm>.<perm>переопределяет значениеumask(2) пользователя (а не только ослабляет ограничения, как это делаютgroupиall). Значение0640создаст репозиторий, доступный группе для чтения, но не для записи, и закрытый для остальных. Значение0660создаст репозиторий, доступный текущему пользователю и группе для чтения и записи, но закрытый для остальных (каталоги и исполняемые файлы получают битxиз битаrдля соответствующих классов пользователей).
-
По умолчанию в общих репозиториях включён флаг конфигурации receive.denyNonFastForwards, поэтому в них нельзя принудительно отправить изменения без перемотки вперёд.
Если указан <directory>, команда выполняется внутри него. Если этого каталога не существует, он будет создан.
Каталог шаблонов
Файлы и каталоги в каталоге шаблонов, имена которых не начинаются с точки, будут скопированы в $GIT_DIR после его создания.
Используется следующий каталог шаблонов (в порядке перечисления):
-
аргумент, указанный с параметром
--template; -
содержимое переменной окружения
$GIT_TEMPLATE_DIR; -
переменная конфигурации
init.templateDir; или -
каталог шаблонов по умолчанию:
/usr/share/git-core/templates.
Каталог шаблонов по умолчанию включает структуру каталогов, рекомендуемые «шаблоны исключения» (см. gitignore[5]) и примеры файлов хуков.
Все примеры хуков по умолчанию отключены. Чтобы включить один из примеров, переименуйте его, удалив суффикс .sample.
Общие сведения о выполнении хуков см. в githooks[5].
Примеры
- Создание нового репозитория Git для существующей кодовой базы
-
$ cd /path/to/my/codebase $ git init (1) $ git add . (2) $ git commit (3)
-
Создать каталог
/path/to/my/codebase/.git. -
Добавить все существующие файлы в индекс.
-
Зафиксировать исходное состояние в качестве первого коммита в истории.
-
Конфигурация
Всё содержимое этого раздела ниже данной строки выборочно включено из документации git-config[1]. Оно совпадает с содержимым этого документа:
-
init.templateDir -
Указать каталог, из которого будут копироваться шаблоны.
-
init.defaultBranch -
Позволяет переопределить имя ветки по умолчанию, например при инициализации нового репозитория.
-
init.defaultObjectFormat -
Позволяет переопределить формат объектов по умолчанию для новых репозиториев. См.
--object-format=в git-init[1]. Параметр командной строки и переменная окруженияGIT_DEFAULT_HASHимеют приоритет над этой настройкой. -
init.defaultRefFormat -
Позволяет переопределить формат хранения ссылок по умолчанию для новых репозиториев. См.
--ref-format=в git-init[1]. Параметр командной строки и переменная окруженияGIT_DEFAULT_REF_FORMATимеют приоритет над этой настройкой. - init.defaultSubmodulePathConfig
-
Логическое значение, указывающее, должны ли
gitinitиgitcloneавтоматически задаватьextensions.submodulePathConfigравнымtrue. Это позволяет всем новым репозиториям автоматически использовать расширение пути подмодуля. Если значение не задано, по умолчанию используетсяfalse.
init
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-init