Git
Русский ▾ Topics ▾ Latest version ▾ git-init last updated in 2.48.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», но это может быть изменено в будущем; это имя можно изменить в переменной конфигурации 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]:

Warning

Missing ru/config/init.txt

See original version for this content.

GIT

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

scroll-to-top