Основные команды Git и их краткое описание:
-
Инициализация и клонирование
git init— создаёт новый репозиторий в текущей папке.git clone <url>— клонирует удалённый репозиторий на локальную машину.
-
Состояние и изменения
git status— показывает текущее состояние рабочей директории (изменённые, новые, неотслеживаемые файлы).git diff— отображает различия между рабочей копией и последним коммитом.git diff --staged— показывает различия для файлов, добавленных в индекс (staging area).
-
Добавление и коммит
git add <file>— добавляет файл в индекс (staging area) для последующего коммита.git add. — добавляет все изменения в текущей директории в индекс.git commit -m "сообщение"— создаёт коммит с описанием изменений.git commit -a -m "сообщение"— автоматически добавляет и коммитит отслеживаемые файлы (не работает для новых файлов).
-
Удаление неотслеживаемых файлов из рабочей директории
— то есть те, которые:
не добавлены в индекс (git addне вызывался),
не находятся под управлениемGit,
не описаны в.gitignore.git clean -n— покажет, что будет удалено, но ничего не тронет.git clean -f. — удалить файлы.git clean -fd— удалить файлы и папки (рекурсивно).git clean -fx— удалить всё, включая файлы, игнорируемые через.gitignore.git clean -fdx— полная очистка: все неотслеживаемые файлы и папки, даже из.gitignore
-
Просмотр истории
git log— показывает историю коммитов.git log --oneline— краткий формат истории.git log --graph --all --oneline— визуализирует ветки и слияния.
-
Работа с ветками
git branch— список локальных веток.git branch <имя>— создаёт новую ветку.git checkout <ветка>— переключается на указанную ветку.git switch <ветка>— современная альтернатива checkout для переключения.git merge <ветка>— сливает указанную ветку в текущую.git branch -d <имя>— удаляет ветку (только если она слита).
-
Работа с удалённым репозиторием
git remote -v— показывает привязанные удалённые репозитории.git fetch— загружает изменения из удалённого репозитория, но не сливает их.git pull— эквивалент fetch + merge (обновляет текущую ветку).git push— отправляет локальные коммиты в удалённый репозиторий.git push origin <ветка>— отправляет конкретную ветку.
-
Отмена изменений
git restore <file>— отменяет изменения в рабочей копии файла.git restore --staged <file>— убирает файл из индекса (но сохраняет изменения в рабочей копии).git reset --hard HEAD— отменяет все локальные изменения и возвращает состояние последнего коммита.git revert <коммит>— создаёт новый коммит, отменяющий указанный.
-
Теги
git tag— список тегов.git tag v1.0— создаёт лёгкий тег.git tag -a v1.0 -m "релиз"— аннотированный тег.git push origin v1.0— отправляет тег на сервер.
Практические сценарии
-
Создание нового проекта и первый коммит
mkdir my-project cd my-project git init echo "# My Project" > README.md git add README.md git commit -m "Initial commit: add README" -
Подключение к удалённому репозиторию (например, на GitHub) и отправка кода
git remote add origin https://github.com/ваш-логин/my-project.git git push -u origin main -
Создание и переключение на новую ветку для новой функции
git checkout -b feature/login-form # или современный способ: git switch -c feature/login-form -
Завершение работы над функцией: слияние в main
git checkout main git merge feature/login-form git branch -d feature/login-form # удаляем ветку после слияния -
Отмена незакоммиченных изменений в файле
Допустим, вы случайно изменили
config.phpи хотите вернуть его состояние:# Оба варианта делают одно и то же git checkout config.php # Устаревший способ (deprecated) git restore config.php # Рекомендуемый с Git 2.23+ (2019 г.) -
Отмена последнего коммита (но сохранение изменений)
git reset --soft HEAD~1Коммит удалён, но изменения остались в индексе — можно переоформить коммит.
Если нужно полностью отменить и потерять изменения:
git reset --hard HEAD~1 -
Создание тега для релиза
git tag -a v1.0.0 -m "Первый стабильный релиз" git push origin v1.0.0