git init
На этой странице подробно описывается команда git init. Вы узнаете об основном функционале и дополнительных возможностях этой команды. Приводятся следующие сведения:
- использование команды
git initи ее опции; - обзор каталога
.git; - пользовательские значения переменных среды для каталога
git init; - сравнение
git initиgit clone; - создание чистых репозиториев с помощью
git init; - шаблоны для
git init.
Команда git init создает новый репозиторий Git. С ее помощью можно преобразовать существующий проект без управления версиями в репозиторий Git или инициализировать новый пустой репозиторий. Большинство остальных команд Git невозможно использовать без инициализации репозитория, поэтому данная команда обычно выполняется первой в рамках нового проекта.
При выполнении команды git init в текущем рабочем каталоге создается подкаталог .git со всеми необходимыми метаданными Git для нового репозитория. Метаданные включают подкаталоги для объектов, ссылок и файлов шаблонов. Кроме того, создается файл HEAD, который указывает на текущий извлеченный коммит.
Кроме создания каталога .git, корневой каталог существующего проекта не изменяется каким-либо образом (в отличие от SVN, Git не требует наличия подкаталога .git в каждом подкаталоге).
По умолчанию команда git init инициализирует конфигурацию Git в подкаталоге .git по соответствующему пути. При необходимости путь подкаталога можно изменить. Если присвоить переменной среды $GIT_DIR пользовательское значение пути, команда git init инициализирует файлы конфигурации Git по этому пути. Такой же результат можно получить, если передать команде аргумент --separate-git-dir. Часто отдельный подкаталог .git создается из тех соображений, что системные файлы конфигурации с точкой перед именем (.bashrc, .vimrc и др.) должны размещаться в домашнем каталоге, а папка .git — в другом месте.
Связанные материалы
git branch
СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
Использование
По сравнению с SVN, создавать новые проекты с управлением версиями при помощи команды git init намного проще. Git не требует создавать репозиторий, импортировать файлы и извлекать рабочую копию. Кроме того, для Git не требуются права администратора или доступ к серверу. Для получения полноценного репозитория Git достаточно перейти в подкаталог проекта и выполнить команду git init.
git init Преобразование текущего каталога в репозиторий Git. Команда создает подкаталог .git в текущем каталоге и позволяет начать регистрацию версий проекта.
git init <directory> Создание пустого репозитория Git в указанном каталоге. Выполнение этой команды создаст новый подкаталог с именем
Если команда git init уже выполнялась по отношению к каталогу проекта и в нем есть подкаталог .git, команду git init можно безопасно выполнить для этого каталога повторно. Существующая конфигурация .git при этом не изменится.
Сравнение git init и git clone
Краткое замечание: git init и git clone легко спутать, поскольку обе команды можно использовать для инициализации нового репозитория Git. Однако команда git clone зависит от git init и предназначена для создания копии существующего репозитория. Выполнение git clone сначала вызывает git init, чтобы создать новый репозиторий, затем копирует данные из существующего репозитория и извлекает новый набор рабочих файлов. Подробнее см. на странице о команде git clone.
Чистые репозитории: git init --bare
git init --bare <directory> Инициализируйте пустой репозиторий Git без рабочего каталога. Общедоступные репозитории необходимо всегда создавать с флагом --bare (см. пояснения ниже). Обычно названия репозиториев после инициализации с флагом --bare оканчиваются на .git. Так, чистый вариант репозитория под названием my-project должен храниться в каталоге my-project.git.
Флаг --bare приводит к созданию репозитория без рабочего каталога. В таком репозитории нельзя редактировать файлы и вносить изменения. Чистый репозиторий создается для выполнения команд git push и git pull, но не для прямых коммитов. Центральные репозитории всегда следует создавать чистыми, поскольку при отправке веток в обычный репозиторий существует риск перезаписи изменений. Просто представьте, что флаг --bare превращает репозиторий из среды разработки в хранилище. По этой причине для рабочих процессов Git центральный репозиторий практически всегда создается чистым, а локальные репозитории разработчиков — обычными.
Команда git init --bare чаще всего используется для создания удаленного центрального репозитория:
ssh <user>@<host> cd path/above/repo git init --bare my-project.git Сначала устанавливается SSH‑соединение с сервером, на котором будет размещаться центральный репозиторий. Затем нужно перейти в каталог, где планируется хранить проект, и с помощью флага --bare создать центральный репозиторий‑хранилище. Позднее разработчики смогут клонировать каталог my-project.git для создания локальной копии на рабочих компьютерах.
Шаблоны git init
git init <directory> --template=<template_directory> Так выполняется инициализация нового репозитория Git и копирование в него файлов из каталога <template_directory>.
С помощью шаблонов можно инициализировать новый репозиторий с заранее заданным подкаталогом .git . В настройках шаблона можно указать каталоги и файлы, которые будут по умолчанию скопированы в подкаталог .git нового репозитория. Доступные по умолчанию шаблоны Git обычно находятся в каталоге `/usr/share/git-core/templates` (путь может отличаться).
Доступные по умолчанию шаблоны — это удобный справочный ресурс, в котором можно найти примеры использования возможностей шаблонов. В таких шаблонах в том числе показана настройка полезной функции Git hook. При создании шаблона можно задать нужные элементы Git hook. Это позволит инициализировать новые репозитории Git с готовыми к работе элементами hook. Дополнительные сведения о Git hook см. на странице о Git hook.
Настройка
git init <directory> --template=<template_directory> Все варианты конфигураций для команды git init <каталог> можно использовать с аргументом <каталог>. При передаче аргумента <каталог> команда выполняется в соответствующем каталоге. Если каталог не существует, он будет создан. Помимо вышеописанных опций, git init имеет еще ряд параметров командной строки. Их полный перечень приводится ниже.
-Q
--QUIET
Вывод только критических сообщений, сообщений об ошибках и предупреждений. Вывод других сообщений блокируется.
--BARE
Создание чистого репозитория (см. раздел «Чистые репозитории» выше).
--TEMPLATE=
Указание каталога с шаблонами для использования (см. раздел «Шаблоны git init» выше).
--SEPARATE-GIT-DIR=
Создание текстового файла, содержащего путь к каталогу . Данный файл служит ссылкой на каталог .git и может быть полезен, если каталог .git нужно хранить отдельно от рабочих файлов проекта (например, на другом диске). Параметр --separate-git-dir обычно используют в следующих случаях:
- Необходимо хранить системные файлы конфигурации с точкой перед именем (
.bashrc, .vimrcи др.) в домашнем каталоге, а папку.git— в другом месте. - История Git стала занимать слишком много места и требует переноса на диск большей емкости.
- Проект Git требуется разместить в общедоступном каталоге, например
`www:root`
Можно выполнить команду git init --separate-git-dir для существующего репозитория. В этом случае каталог .git будет перемещен по указанному пути .
--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)] Назначение прав доступа для нового репозитория. Данный параметр позволяет с помощью указания прав Unix задать пользователей и группы, которым разрешено осуществлять операции push и pull в репозитории.
Примеры
Создание нового репозитория Git для существующей базы кода
cd /path/to/code \
git init \
git add . \
git commit Создание нового чистого репозитория
git init --bare /path/to/repo.git Создание шаблона git init и инициализация нового репозитория Git на основе этого шаблона
mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.
Блог Bitbucket
Образовательные программы DevOps