Русский ▾ Topics ▾ Latest version ▾ git-init last updated in 2.52.0

НАЗВАНИЕ

git-init - Создание пустого репозитория Git или переинициализация существующего

ОБЗОР

'git init' [-q | --quiet] [--bare] [--template=<каталог-шаблонов>]
	[--separate-git-dir <каталог-git>] [--object-format=<формат>]
	[--ref-format=<формат>]
	[-b <ветка> | --initial-branch=<ветка>]
	[--shared[=<права-доступа>]] [каталог]

ОПИСАНИЕ

Эта команда создаёт пустой репозиторий Git, то есть по существу только каталог .git с подкаталогами objects, refs/heads, refs/tags, и файлами шаблонов. Будет создана начальная ветка без коммитов (см. параметр --initial-branch для изменения её имени).

Если переменная среды GIT_DIR установлена, то она задаёт путь, который будет использоваться вместо .git в качестве базового пути для создания репозитория.

Если каталог хранения объектов задан с помощью переменной среды GIT_OBJECT_DIRECTORY, то каталоги с хеш-кодом sha1 будут создаваться в нём. В противном случае будет использоваться каталог по умолчанию, $GIT_DIR/objects.

Запускать git init внутри существующего репозитория безопасно: эта команда не будет перезаписывать то, что там уже есть. Основная цель, для которой это может потребоваться, состоит в том, чтобы подхватились новые шаблоны, добавленные с момента предыдущего запуска (или ещё, например, чтобы переместить репозиторий в другое место с помощью параметра --separate-git-dir).

ПАРАМЕТРЫ

-q
--quiet

Выводить только ошибки и предупреждения; весь остальной вывод будет скрыт.

--bare

Создать голый репозиторий. Если переменная среды GIT_DIR не задана, то ей будет присвоен текущий рабочий каталог.

--object-format=<формат>

Задаёт <формат> объектов (алгоритм хеширования) репозитория. Допустимые значения: sha1 и (если включён) sha256. По умолчанию: sha1.

Примечание: в настоящее время между репозиториями с алгоритмом хеширования SHA-256 и репозиториями с SHA-1 нет взаимной совместимости.

Исторически мы предупреждали, что позже, когда мы добавим подобные функции для их совместимости, репозиториям с SHA-256 могут понадобиться обратно несовместимые изменения. Но на сегодняшний день мы ожидаем, что могут потребоваться только совместимые изменения. Кроме того, если такие изменения окажутся необходимыми, можно ожидать, что репозиториями с SHA-256, созданными с помощью текущей версии Git, возможно будет использовать и в будущих версиями Git без потери данных.

--ref-format=<формат>

Задаёт <формат> хранения ссылок репозитория. Допустимые значения:

  • files: ссылки хранятся в виде несвязанного набора файлов и файла packed-refs. Это формат по умолчанию.

  • reftable: reftable-формат. Этот формат является экспериментальным, и его внутреннее устройство может измениться.

--template=<каталог-шаблонов>

Задаёт каталог с шаблонами. (См. раздел «КАТАЛОГ ШАБЛОНОВ» ниже)

--separate-git-dir=<каталог-git>

Вместо того, чтобы инициализировать репозиторий в $GIT_DIR или в ./.git/, создать текстовый файл, содержащий путь к реальному репозиторию. Этот файл будет выступать в роли независящей от файловой системы символической ссылки Git на этот репозиторий.

Если это повторная инициализация, то репозиторий будет перенесён в каталог по указанному пути.

-b <имя-ветки>
--initial-branch=<имя-ветки>

Использовать <имя-ветки> в качестве исходной ветки вновь созданного репозитория. Если не указано, будет использовано имя по умолчанию (в настоящее время — это «master», но в Git 3.0 это будет изменено на main). Значение по умолчанию может быть изменено в переменной конфигурации init.defaultBranch.

--shared[=(false|true|umask|group|all|world|everybody|<права-доступа>)]

Указывает, что репозиторий Git будет использоваться совместно несколькими пользователями. Это позволит пользователям, принадлежащим к одной группе, отправлять (push) изменения в этот репозиторий. При передаче этого параметра, переменная конфигурации 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, но также сделать репозиторий доступным на чтение для всех пользователей.

<права-доступа>

<права-доступа> — это 3-значное восьмеричное число с префиксом 0; каждый файл будет иметь режим доступа равный <правам-доступа>. Значение <прав-доступа> будет полностью перекрывать значение umask(2) пользователя (а не только ослаблять разрешения как это происходит с group и all). Так, 0640 создаст репозиторий, доступный группе на чтение, но не на запись или на исполнения для всех остальных; 0660 — доступный на чтение и запись текущему пользователю и его группе, но недоступный для остальных (каталоги и исполняемые файлы получат свой бит x при указании r для соответствующих классов пользователей).

В общих репозиториях флаг конфигурации receive.denyNonFastForwards по умолчанию включён, так что вы не cможете принудительно отправить в него (git push -f) изменения, которые не могут быть применены с помощью быстрой перемотки.

Если вы задали <каталог>, команда будет выполняться внутри него. Если этот каталог ещё не существует, он будет создан.

КАТАЛОГ ШАБЛОНОВ

Файлы и каталоги, из каталога шаблонов, чьи имена начинаются не с точки будут скопированы в $GIT_DIR после того, как он будет создан.

В качестве каталога шаблонов будет использоваться один из следующих (в порядке перечисления):

  • аргумент, указанный в параметре --template;

  • значение переменной среды $GIT_TEMPLATE_DIR;

  • переменная настройки init.templateDir; или

  • каталог шаблонов по умолчанию: /usr/share/git-core/templates.

Каталог шаблонов по умолчанию уже содержит некоторую структуру каталогов: рекомендованные «шаблоны исключений» (exlude patterns, см. gitignore[5]) и примеры файлов-перехватчиков (hook).

Примеры файлов-перехватчиков по умолчанию отключены. Чтобы включить один из них, переименуйте его, удалив суффикс .sample.

См. подробности того, как происходит вызов перехватчиков в githooks[5].

ПРИМЕРЫ

Создание нового репозитория Git для существующей кодовой базы
$ cd /путь/к/моей/кодовой/базе
$ git init      (1)
$ git add .     (2)
$ git commit    (3)
  1. Создать каталог /путь/к/моей/кодовой/базе/.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 являются более приоритетными, чем данная переменная конфигурации.

GIT

Является частью пакета git[1]