Git-репозиторий
Узнайте, что такое Git-репозиторий, как его инициализировать и клонировать с помощью git init и git clone, сохранять и отправлять изменения.
Что такое Git-репозиторий?
Git-репозиторий — это хранилище файлов вашего проекта вместе с полной историей всех изменений, когда-либо в них внесённых. Он позволяет сохранять версии кода (коммиты), переключаться между ними и совместно работать с другими разработчиками без потери данных.
На этой странице рассматривается весь жизненный цикл репозитория: создание, внесение и сохранение изменений, подключение к удалённому репозиторию и публикация результатов работы. Каждый шаг ссылается на отдельную главу, где можно изучить тему подробнее.

Директория .git
Всё, что превращает папку в репозиторий, хранится в одной скрытой поддиректории .git в корне проекта. В ней находятся история коммитов, ветки, теги, конфигурация и область подготовки изменений. Удалите .git — и останутся лишь обычные файлы без истории версий. Скопируйте .git вместе с файлами — и вы скопируете весь репозиторий целиком.
Локальные и удалённые репозитории
Git — это распределённая система контроля версий, поэтому вы будете работать с двумя видами репозиториев:
- Локальный репозиторий находится на вашем компьютере. Вы создаёте в нём коммиты, ветки и просматриваете историю без подключения к сети.
- Удалённый репозиторий находится на сервере (например, GitHub или Bitbucket). Это общая копия, в которую команда отправляет изменения и откуда их получает.
Типичный рабочий процесс: вносите изменения локально, фиксируете их в виде коммитов, а затем синхронизируете с удалённым репозиторием.
Git Init для инициализации нового репозитория
Используйте команду git init, чтобы превратить существующую папку в репозиторий. Эта команда выполняется один раз, когда проект ещё не имеет системы контроля версий.
git init
git initПри выполнении в папке проекта создаётся скрытая поддиректория .git, и выводится примерно следующее:
Initialized empty Git repository in /path/of/project/.git/Можно также создать репозиторий в именованной папке за один шаг, передав имя директории:
git init directory
git init <directory>Это создаст папку (если она не существует) и инициализирует в ней пустой Git-репозиторий. Пока ни одна ветка не указывает на коммит; ветка по умолчанию (обычно main или master, в зависимости от версии Git и конфигурации) появляется только после первого коммита.
Git Clone для клонирования существующего репозитория
Если проект уже существует на удалённом сервере, запускать git init не нужно. Вместо этого используйте git clone, чтобы скопировать его на свой компьютер. Это тоже разовая операция для каждого проекта.
git clone repo url
git clone <repo url>Клонирование загружает полную историю и рабочие файлы и — в отличие от git init — автоматически настраивает источник как удалённый репозиторий с именем origin. Это означает, что вы можете сразу же выполнять git push и git pull без дополнительной настройки.
Git Add и Git Commit для сохранения изменений в репозитории
Сохранение изменений в Git — это двухэтапный процесс. Сначала git add перемещает изменения в область подготовки (также называемую индексом) — промежуточную зону, где вы выбираете, что именно войдёт в следующий снимок состояния. Затем git commit записывает это подготовленное содержимое как постоянную точку в истории. Разделение операции позволяет фиксировать только часть изменений за раз.
Приведённая ниже последовательность создаёт файл, проверяет его статус, подготавливает его и фиксирует:
- перейти в директорию
/path/of/project - создать новый файл
GitCommit.txtс содержимым "commit example for git repo" - выполнить git status, чтобы убедиться, что новый файл не отслеживается
- выполнить
git add GitCommit.txt, чтобы переместить его в область подготовки - выполнить
git commitс сообщением, описывающим выполненную работу
git add and git commit
cd /path/of/project
echo "commit example for git repo" >> GitCommit.txt
git status
git add GitCommit.txt
git commit -m "added GitCommit.txt to the repo"Запустите git status в любой момент, чтобы увидеть, какие файлы не отслеживаются, подготовлены или изменены. В следующий коммит войдут только файлы, явно добавленные с помощью git add. Чтобы полностью исключить из репозитория артефакты сборки, секреты или зависимости, перечислите их в файле .gitignore.
Git Remote Add для подключения к удалённому репозиторию
Если репозиторий создан с помощью git init, у него ещё нет удалённого репозитория. Добавьте его с помощью команды git remote. По соглашению основной удалённый репозиторий называется origin:
git remote add
git remote add origin <remote_repo_url>Перед отправкой изменений убедитесь, что удалённый репозиторий зарегистрирован:
git remote -vЭто выводит URL для получения и отправки изменений для каждого настроенного удалённого репозитория, например:
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)(Репозитории, созданные с помощью git clone, уже имеют настроенный origin, поэтому этот шаг можно пропустить.)
Git Push для взаимодействия с репозиторием
Если вы использовали git clone, удалённый репозиторий уже настроен, поэтому вы можете выполнить git push для отправки изменений. Если вы использовали git init, сначала необходимо добавить удалённый репозиторий (см. выше). Вы можете воспользоваться таким хостинговым Git-сервисом, как GitHub или Bitbucket, создать там репозиторий и использовать предоставленный URL для подключения локального проекта.
После добавления удалённого репозитория вы можете отправить локальные ветки в него:
git push
git push -u origin mainФлаг -u (сокращение от --set-upstream) выполняет два действия: отправляет ваши изменения и связывает локальную ветку с удалённой. После установки этой связи вы можете выполнять просто git push и git pull, не указывая каждый раз имя удалённого репозитория или ветки.
Git Config для настройки конфигурации
Перед первым коммитом Git должен знать, кто вы. Команда git config задаёт параметры, управляющие идентификацией пользователя, настройками и поведением репозитория. Параметры хранятся на трёх уровнях, каждый из которых переопределяет более широкий.
Используйте флаг --global для настройки параметров текущего пользователя. Они применяются ко всем вашим репозиториям, что является правильным уровнем для имени и электронной почты:
git repository, git config global user.name
git config --global user.name <name>
git config --global user.email <email>Используйте --local (по умолчанию, если флаг уровня не указан), чтобы задать параметр только для текущего репозитория. Это удобно, когда в одном проекте нужна другая идентификация, отличная от глобальной:
git repository, git config local user.email
git config --local user.email <email>Используйте --system для настройки конфигурации для всех пользователей и репозиториев на компьютере — например, общего редактора по умолчанию:
git config system editor
git config --system core.editor <editor>Если один и тот же ключ задан на нескольких уровнях, локальный приоритет выше глобального, а глобальный выше системного, поэтому значение на уровне репозитория всегда имеет наивысший приоритет.
Всё вместе
Для нового проекта, который вы хотите опубликовать, полная последовательность выглядит так:
git init
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
echo "# My Project" >> README.md
git add README.md
git commit -m "Initial commit"
git remote add origin <remote_repo_url>
git push -u origin mainЕсли же проект уже существует на удалённом сервере, вы пропускаете git init и git remote add — git clone <repo url> даёт вам готовый к работе репозиторий одной командой.
Далее изучите отдельные команды: git add и git commit для сохранения работы, git status для её проверки, а также git push / git pull для синхронизации с удалённым репозиторием.