# Введение в систему контроля версий Git ## Что такое система контроля версий (СКВ)? * **Определение:** Система, которая записывает изменения в файле или наборе файлов с течением времени, чтобы вы могли в любой момент вернуться к более поздней версии. * **Зачем это нужно?** * Отслеживание истории изменений. * Возможность вернуться к предыдущим версиям. * Совместная работа над проектами. * Экспериментирование без риска потерять рабочую версию. * Управление различными ветками разработки. ## Что такое Git? * **Определение:** Распределенная система контроля версий. * **Распределенность:** Каждая копия репозитория является полноценным репозиторием со всей историей изменений. * **Автор:** Линус Торвальдс (создатель ядра Linux). * **Основные принципы:** * Целостность данных. * Поддержка нелинейной разработки (ветвление и слияние). * Скорость и эффективность. ## Основные понятия Git * **Репозиторий (Repository):** Хранилище всех файлов проекта и истории их изменений. * **Рабочая директория (Working Directory):** Каталог с текущими файлами проекта. * **Индекс (Staging Area):** Промежуточная область для подготовки изменений к коммиту. * **.git директория:** Скрытая директория, содержащая метаданные репозитория, историю, конфигурацию и т.д. * **Коммит (Commit):** Снимок состояния репозитория в определенный момент времени с описанием изменений. * Содержит информацию об авторе, дате и времени, а также комментарий. * **Ветка (Branch):** Независимая линия разработки. * Позволяет разрабатывать новые функции или исправлять ошибки изолированно от основной кодовой базы. * `main` (ранее `master`): Основная ветка разработки. * **Слияние (Merge):** Процесс объединения изменений из одной ветки в другую. * **Конфликт (Conflict):** Ситуация, когда Git не может автоматически объединить изменения из разных веток. * **Удаленный репозиторий (Remote Repository):** Репозиторий, расположенный на другом сервере (например, GitHub, GitLab, Bitbucket). ## Основные команды Git * `git init`: Инициализация нового Git-репозитория в текущей директории. * `git clone `: Копирование удаленного репозитория на локальную машину. * `git status`: Отображение состояния рабочей директории и индекса. * `git add <файл>` или `git add .`: Добавление файлов в индекс. * `git commit -m "<сообщение>"`: Фиксация изменений из индекса в репозитории с комментарием. * `git log`: Просмотр истории коммитов. * `git branch`: Управление ветками (создание, просмотр, удаление). * `git branch <имя_ветки>`: Создание новой ветки. * `git branch -d <имя_ветки>`: Удаление ветки (после слияния). * `git branch -D <имя_ветки>`: Принудительное удаление ветки. * `git checkout <имя_ветки>`: Переключение на указанную ветку. * `git checkout -b <новая_ветка>`: Создание и переключение на новую ветку. * `git merge <имя_ветки>`: Слияние указанной ветки с текущей. * `git push <имя_удаленного_репозитория> <имя_ветки>`: Отправка локальных коммитов в удаленный репозиторий. * `git pull <имя_удаленного_репозитория> <имя_ветки>`: Получение изменений из удаленного репозитория и их слияние с текущей веткой. * `git remote add <имя> `: Добавление нового удаленного репозитория. * `git remote -v`: Просмотр списка удаленных репозиториев. ## Рабочий процесс с Git (базовый) 1. Инициализация или клонирование репозитория. 2. Внесение изменений в файлы. 3. Добавление измененных файлов в индекс (`git add`). 4. Фиксация изменений с помощью коммита (`git commit`). 5. Отправка локальных коммитов в удаленный репозиторий (`git push`). 6. Получение последних изменений из удаленного репозитория (`git pull`). ## Заключение * Git - мощный инструмент для контроля версий. * Понимание основных концепций и команд необходимо для эффективной работы. * Регулярное использование Git помогает отслеживать изменения, сотрудничать и поддерживать целостность проекта. ## Следующие шаги * Установка Git на вашу машину. * Создание первого локального репозитория. * Подключение к удаленному репозиторию (например, на GitHub). * Практика с основными командами Git.