Основные команды Git
Статус репозитория
git status
Показывает: какие файлы изменены, что добавлено в staging, что не отслеживается.
Самая частая команда. Используй её перед каждым коммитом.
Просмотр изменений
git diff # что изменил, но не добавил
git diff --staged # что добавил в staging
git diff HEAD~1 # разница с предыдущим коммитом
git diff branch1..branch2 # разница между ветками
Добавление в staging
git add file.txt # конкретный файл
git add . # все изменения
git add *.php # все PHP-файлы
git add folder/ # всю папку
git add -p # интерактивно (по частям)
git add -p — мощная штука. Если в файле несколько несвязанных изменений, можно добавить только часть.
Удаление из staging
git restore --staged file.txt # убрать из staging
git restore --staged . # убрать всё
Коммит
git commit -m "Fix: исправил баг с авторизацией"
git commit -am "Fix: ..." # сразу add + commit (только для отслеживаемых файлов)
git commit --amend # изменить последний коммит
Хорошие сообщения коммитов
Conventional Commits — стандарт, который понимают все:
feat: добавить регистрацию пользователей
fix: исправить ошибку при пустом email
docs: обновить README
refactor: вынести логику в сервис
test: добавить тест на регистрацию
chore: обновить зависимости
style: форматирование кода
perf: ускорить запрос на 30%
Правило: тип: что сделано — в настоящем времени, до 72 символов.
Плохо: fix, update, qwerty, asdfgh.
Хорошо: fix: исправить 500 на странице профиля.
История
git log # вся история
git log --oneline # кратко
git log --oneline -10 # последние 10
git log --graph --oneline # с графом веток
git log --author="Иван" # коммиты автора
git log -- file.txt # история файла
git log -p file.txt # с диффами
Отмена изменений
git restore file.txt # откатить файл до последнего коммита
git restore . # откатить все файлы
git restore --source=HEAD~1 file.txt # откатить до конкретного коммита
⚠️ git restore уничтожает твои правки. Если хочешь сохранить — сначала git stash.
Stash — временное хранилище
git stash # спрятать все изменения
git stash -u # включая неотслеживаемые файлы
git stash list # список stash'ей
git stash pop # вернуть последний
git stash apply stash@{2} # вернуть конкретный
git stash drop # удалить последний
git stash clear # удалить все
Кейс: срочно надо переключиться на другую ветку, а правки незакоммичены. git stash — и переключайся.
Удаление файлов
git rm file.txt # удалить и добавить удаление в staging
git rm -r folder/ # папку
git rm --cached file.txt # убрать из Git, но оставить на диске
git rm --cached — когда файл случайно закоммитил (например, .env).
.gitignore
Файл в корне репозитория. Что в него попадает — Git игнорирует:
# Зависимости
node_modules/
vendor/
# Переменные окружения
.env
.env.local
# Сборка
dist/
build/
.next/
# IDE
.idea/
.vscode/
*.swp
# Логи
*.log
storage/logs/
# OS
.DS_Store
Thumbs.db
Правило: всё генерируемое (зависимости, сборка, логи, кеш) — в .gitignore.
Что делать, если файл уже в Git
Если .env уже закоммичен:
git rm --cached .env
echo ".env" >> .gitignore
git add .gitignore
git commit -m "Remove .env from tracking"
Итог
Минимальный цикл работы:
git status
git add .
git commit -m "feat: описание"
git push
Дальше — ветки и переключение.