Основные команды

↑ 6.1 Git · → Следующая

Желательно~3 мин чтенияУровень: middle

Зачем это на собесе

Базовые вопросы: как устроен 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/*, рабочий каталог не трогает
pullfetch + 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.

Практика

  1. Создайте репозиторий, сделайте серию коммитов, посмотрите граф.
  2. Используйте git add -p и git restore --staged.
  3. Найдите баг через git bisect.

Вопросы с ответами

Связанные темы