Git Handbook
Минималистичный справочник по Git с объяснением флагов, привычными рабочими сценариями и аккуратными кнопками копирования в каждом сниппете.
1) Старт и настройка
Базовые команды, чтобы создать репозиторий, клонировать проект и настроить автора коммитов.
Создать репозиторий или получить существующий
git init
git clone <url>
git clone -b main <url>
Настроить имя и email
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global init.defaultBranch main
git config --list
2) Проверка состояния и изменений
Эти команды помогают понять, что изменилось локально и что уже попало в staging area.
git status
git status -sb
git diff
git diff --staged
git diff HEAD
3) Добавление изменений и коммиты
Это основной ежедневный цикл: выбрать изменения, добавить их в staging и сделать commit.
Добавить изменения
git add <file>
git add .
git add -A
git add -p
Сделать commit
git commit
git commit -m "feat: add login form"
git commit -am "fix: update button state"
4) Ветки: switch и checkout
Сейчас чаще используют git switch, но git checkout -b всё ещё очень распространён в реальных проектах.
Современный стиль через switch
git branch
git branch -a
git switch main
git switch -c feature/login-form
git branch -d feature/login-form
git branch -D feature/login-form
git branch -m feature/auth-form
Привычный стиль через checkout
git checkout main
git checkout -b feature/login-form
git checkout <commit>
git checkout -- <file>
5) Remote и синхронизация
Набор команд, чтобы посмотреть remote, получить обновления и отправить свою ветку.
git remote -v
git remote add origin <url>
git fetch origin
git pull origin main
git pull --rebase origin main
git push origin feature/login-form
git push -u origin feature/login-form
git branch -vv
6) История и сравнение изменений
Здесь команды, которые помогают понять историю проекта и сравнить ветки, коммиты или отдельные файлы.
git log --oneline
git log --graph --oneline --decorate
git log --stat
git show HEAD~1
git blame src/app.ts
git diff main..feature/login-form
git diff origin/main...HEAD
7) Откат, исправление и восстановление
Полезно понимать разницу между reset, restore, revert и amend — они решают разные задачи.
Убрать из staging или вернуть рабочий файл
git reset <file>
git reset
git restore <file>
git restore --staged <file>
git restore .
Исправить последний commit
git add .
git commit --amend
git commit --amend --no-edit
Безопасно отменить уже сделанный commit
git revert HEAD
git revert <commit>
git reset --hard HEAD~1
git reflog
8) Stash
Stash удобен, когда нужно временно убрать незавершённые изменения и быстро переключиться на другую задачу.
git stash
git stash push -m "wip: login form"
git stash -u
git stash list
git stash show -p
git stash apply stash@{0}
git stash pop
git stash drop stash@{0}
9) Привычные рабочие флоу
Ниже не просто команды по отдельности, а типовые последовательности, которые реально встречаются в работе.
Типичный старт работы над задачей от актуального main.
git switch main
git pull --rebase origin main
git checkout -b feature/login-form
git add .
git commit -m "feat: add login form"
git push -u origin feature/login-form
Когда main уже ушёл вперёд, а свою ветку нужно привести к актуальному состоянию.
git fetch origin
git switch feature/login-form
git rebase origin/main
git push --force-with-lease
Сценарий, который очень часто встречается во время работы.
git add path/to/file
git commit --amend --no-edit
Когда текущая задача не закончена, но нужно срочно уйти на hotfix.
git stash push -u -m "wip: login form"
git switch main
git pull --rebase origin main
git checkout -b hotfix/login-crash
Обычная последовательность после ручного исправления конфликтующих файлов.
git status
git add .
git rebase --continue
git rebase --abort