Ответ
Git CLI (Command Line Interface) — это основной и самый мощный способ взаимодействия с системой контроля версий Git. Он предоставляет полный контроль над репозиторием через набор команд.
Базовый рабочий цикл и команды:
-
Инициализация и клонирование:
# Создать новый локальный репозиторий в текущей директории git init # Склонировать удаленный репозиторий git clone <url-репозитория> # Пример: git clone https://github.com/user/project.git -
Отслеживание изменений и коммиты:
# Показать статус файлов (измененные, новые, неотслеживаемые) git status # Добавить конкретный файл в индекс (staging area) git add <имя_файла> # Добавить все измененные и новые файлы в индекс git add . # Добавить все файлы, включая удаленные git add -A # Закоммитить проиндексированные изменения с сообщением git commit -m "Краткое и информативное описание изменений" # Пример: git commit -m "FIX: исправлена обработка null в функции calculateTotal" -
Работа с ветками (branches):
# Показать список локальных веток (текущая помечена *) git branch # Показать все ветки (локальные и удаленные) git branch -a # Создать новую ветку git branch <имя_новой_ветки> # Создать и сразу переключиться на новую ветку git checkout -b <имя_новой_ветки> # В современных версиях Git можно использовать: git switch -c <имя_новой_ветки> # Переключиться на существующую ветку git checkout <имя_ветки> # или git switch <имя_ветки> # Удалить локальную ветку (только если она слита) git branch -d <имя_ветки> # Принудительное удаление ветки git branch -D <имя_ветки> -
Синхронизация с удаленным репозиторием (remote):
# Показать список удаленных репозиториев (обычно 'origin') git remote -v # Загрузить изменения с удаленного репозитория и слить с текущей веткой git pull # Более безопасный вариант: сначала fetch, потом merge/rebase git fetch origin # Скачать изменения, но не сливать git merge origin/main # Вручную слить изменения # Отправить локальные коммиты в удаленный репозиторий git push # При первом push в ветку нужно указать upstream git push -u origin <имя_ветки> -
Слияние изменений (merge) и перебазирование (rebase):
# Слить указанную ветку в текущую (создает merge-коммит) git merge <имя_ветки_для_слияния> # Перебазировать текущую ветку на указанную (линейная история) git rebase <базовая_ветка> # Продолжить rebase после разрешения конфликтов git rebase --continue # Отменить rebase в случае проблем git rebase --abort
Ключевые особенности работы Git через CLI:
- Локальность: Почти все операции (коммиты, просмотр истории, создание веток) выполняются локально, без доступа к сети.
- Три состояния файлов: Рабочая копия (working directory), индекс (staging area), репозиторий (
.gitdirectory). - Нелинейная история: Ветвление и слияние — это "первоклассные" операции.
- Целостность данных: Все объекты в Git идентифицируются SHA-1 хэшем, что гарантирует неизменность истории.
- Разрешение конфликтов: При слиянии или перебазировании конфликтующие изменения должны быть разрешены вручную путем редактирования файлов, их добавления (
git add) и завершения операции (git commitилиgit rebase --continue).