↓Перейти к содержанию
  1. Git: руководства и команды/

Как создать локальный репозиторий Git: полное руководство

·5 минут·

Локальный репозиторий — это папка на вашем компьютере, которую Git отслеживает. Всё, что происходит внутри: создание файлов, их изменение, история коммитов — всё хранится здесь. Это первый шаг перед началом любого проекта с контролем версий. В этой статье разберём, как создать локальный репозиторий, настроить его и сделать первый коммит.

Предварительные требования #

Перед созданием репозитория убедитесь, что:

  1. Git установлен. Проверьте: git --version. Если не установлен, читайте «Установка и настройка Git».
  2. Git настроен. Указаны имя и email: git config --global user.name "Ваше Имя".
  3. Есть папка для проекта (создадим в процессе).

Шаг 1: создание папки для проекта #

# Создать папку
mkdir my-project

# Перейти в неё
cd my-project

Если папка уже существует — просто перейдите в неё:

cd /путь/к/существующей/папке

Шаг 2: инициализация Git репозитория #

git init

Вывод:

Initialized empty Git repository in /home/user/my-project/.git/

Команда git init создаёт скрытую папку .git — это и есть репозиторий. В ней хранится вся история, конфигурация и метаданные Git. Не трогайте и не удаляйте эту папку.

Проверьте что всё создалось:

ls -la
# drwxr-xr-x .
# drwxr-xr-x ..
# drwxr-xr-x .git   ← вот он

git status
# On branch main
# No commits yet
# nothing to commit

Что находится в папке .git #

.git/
├── config        — конфигурация репозитория
├── HEAD          — указатель на текущую ветку
├── hooks/        — скрипты для хуков (pre-commit и др.)
├── info/
├── objects/      — хранилище объектов Git (коммиты, деревья, блобы)
└── refs/         — ссылки (ветки, теги)

Никогда не редактируйте файлы в .git/ вручную — это может повредить репозиторий.

Шаг 3: локальная конфигурация (опционально) #

Глобальные настройки уже установлены (git config --global). Для этого репозитория можно задать другие настройки — например, другой email:

# Настройки только для этого репозитория
git config user.email "[email protected]"

# Проверить конфигурацию
git config --local --list
# user.name=Иван Петров
# [email protected]

Шаг 4: создание файлов #

Создайте первые файлы проекта. Начните с README:

echo "# Мой проект" > README.md
echo "Описание проекта" >> README.md

Для реального проекта создайте нужные файлы в IDE или редакторе. Git начнёт отслеживать их после git add.

Проверьте статус:

git status
# Untracked files:
#   README.md

Шаг 5: добавление файлов в индекс #

# Добавить конкретный файл
git add README.md

# Добавить все файлы
git add .
# или
git add -A

# Проверить что добавлено
git status
# Changes to be committed:
#   new file: README.md

Шаг 6: первый коммит #

git commit -m "Initial commit: add README"

Вывод:

[main (root-commit) a1b2c3d] Initial commit: add README
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

Первый коммит создан! Теперь у репозитория есть история.

Шаг 7: просмотр истории #

# Полный журнал
git log

# Компактный формат
git log --oneline
# a1b2c3d Initial commit: add README

# Подробности конкретного коммита
git show HEAD

Полный пример: проект с нуля #

# 1. Создание и инициализация
mkdir webapp
cd webapp
git init

# 2. Настройка (если нужны особые настройки)
git config user.email "[email protected]"

# 3. Создание .gitignore сразу
cat > .gitignore << 'EOF'
node_modules/
.env
*.log
.DS_Store
EOF

# 4. Создание начальных файлов
echo "# My Web App" > README.md
echo "console.log('Hello');" > index.js

# 5. Добавление в индекс
git add .gitignore README.md index.js

# 6. Проверка
git status
git diff --staged

# 7. Первый коммит
git commit -m "Initial commit: project scaffold"

# 8. Просмотр
git log --oneline
git branch

# 9. Создание ветки для разработки
git switch -c develop

Связывание с удалённым репозиторием #

После создания локального репозитория его можно связать с GitHub или GitLab:

# Создайте репозиторий на GitHub (через веб-интерфейс)
# Затем добавьте remote:

# По SSH (рекомендуется)
git remote add origin [email protected]:username/my-project.git

# По HTTPS
git remote add origin https://github.com/username/my-project.git

# Проверить
git remote -v

# Переименовать ветку в main
git branch -M main

# Первый push
git push -u origin main

Как отменить инициализацию #

Если случайно запустили git init в неправильной папке:

# Удалить папку .git — репозиторий исчезнет
rm -rf .git

# Убедиться что Git больше не видит репозиторий
git status
# fatal: not a git repository

Файлы проекта останутся нетронутыми — удаляется только папка .git.

Инициализация существующего проекта #

Если у вас уже есть папка с кодом, git init работает точно так же:

cd /path/to/existing/project
git init

# Добавить все существующие файлы
git add .

# Первый коммит
git commit -m "Initial commit: добавлен существующий код проекта"

Часто задаваемые вопросы #

Что находится в папке .git и почему её нельзя удалять? В .git/ хранится вся история коммитов, ветки, теги и конфигурация. Удаление этой папки уничтожает всю историю Git, файлы проекта останутся, но превратятся в обычную папку без версионирования.

Почему нужно указывать имя и email? Git записывает автора в каждый коммит. На GitHub и GitLab эта информация используется для привязки коммитов к вашему профилю и отображения в статистике.

Что будет, если инициализировать Git внутри другого Git-репозитория? Git не запрещает это, но это плохая практика. Вложенные репозитории создают путаницу. Правильное решение — git submodule для включения одного репозитория в другой.

Как отменить коммит? git reset HEAD~1 отменяет последний коммит, оставляя изменения в рабочей директории.

Какая разница между git add . и git add -A? В Git 2.x практически никакой разницы. Оба добавляют новые, изменённые и удалённые файлы. git add -A применяется ко всему репозиторию независимо от текущей папки.

Заключение #

Создание локального репозитория — это git init, добавление файлов — это git add, сохранение состояния — это git commit. Три команды, с которых начинается любой проект.

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