Основные команды
Зачем это на собесе
Базовые вопросы: как устроен Git, чем
fetchотличается отpull, что такое индекс.
Объяснение
Git — распределённая система контроля версий: история — граф коммитов, ветка — подвижный указатель на коммит, HEAD — текущая позиция.
Три области: рабочий каталог → git add → индекс (staging) → git commit → репозиторий.
git init / git clone <url>
git status -sb # состояние кратко
git add -p # выборочное добавление кусков (patch)
git commit -m "feat(orders): add filters"
git commit --amend --no-edit # дополнить последний коммит (только неопубликованный)
git log --oneline --graph --decorate --all
git diff / git diff --staged / git diff main...feature
git show <hash>
git branch feature/x && git switch feature/x # или git switch -c feature/x
git switch main
git restore file.ts / git restore --staged file.ts # отменить правки / убрать из индекса
git remote -v
git fetch origin # скачать изменения без слияния
git pull --rebase origin main # fetch + rebase (чистая история)
git push -u origin feature/x
git push --force-with-lease # безопасная принудительная отправка
git tag -a v1.2.0 -m "release"
git blame file.ts / git bisect start # поиск коммита, внесшего баг| Команда | Смысл |
|---|---|
fetch | скачивает объекты и обновляет origin/*, рабочий каталог не трогает |
pull | fetch + merge (или rebase с --rebase) |
clone | копия репозитория |
.gitignore | файлы, которые не отслеживаются (node_modules, dist, .env) |
.gitattributes | нормализация концов строк, LFS |
Хорошие коммиты: небольшие, атомарные, с понятным сообщением (см. Conventional Commits), проходящие тесты.
Нюансы и подводные камни
git add .добавляет лишнее (секреты, артефакты): просматривайтеgit status/git diff --staged.- Не переписывайте опубликованную общую историю (
--amend,rebase,push -f) без договорённости. .envи секреты в истории остаются даже после удаления: нужна ротация и чистка истории.- Разные окончания строк (CRLF/LF) —
core.autocrlf,.gitattributes. - Большие бинарные файлы — Git LFS.
Практика
- Создайте репозиторий, сделайте серию коммитов, посмотрите граф.
- Используйте
git add -pиgit restore --staged. - Найдите баг через
git bisect.
Вопросы с ответами
Чем
git fetchотличается отgit pull?
fetchтолько скачивает изменения,pullдополнительно объединяет их с текущей веткой.
Что такое индекс (staging area)?
Промежуточная область, в которой формируется содержимое следующего коммита.