Spec-Zone.ru › Git

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.

--shared[=(false|true|umask|group|all|world|everybody|<perm>)]

Указать, что репозиторий 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)
  1. Создать каталог /path/to/my/codebase/.git.

  2. Добавить все существующие файлы в индекс.

  3. Зафиксировать исходное состояние в качестве первого коммита в истории.

Конфигурация

Всё содержимое этого раздела ниже данной строки выборочно включено из документации 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

Логическое значение, указывающее, должны ли git init и git clone автоматически задавать 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API