Git учат с init и add. В проде важнее не уничтожить историю и не запушить секрет. Короткая карта 🗺️
Базовая гигиена #
git config --global user.name "Evgeny"
git config --global user.email "i@evgn.ru"
git config --global init.defaultBranch main
git config --global pull.rebase false # или true — но осознанно
git config --global fetch.prune trueПсевдонимы по вкусу:
git config --global alias.st "status -sb"
git config --global alias.lg "log --oneline --graph --decorate -20"Ежедневный цикл #
git switch -c fix/nginx-headers
# правки
git add -p # не всё подряд
git commit -m "…понятный subject…"
git pull --rebase origin main # если main уехал
git push -u origin HEADСообщения: subject на русском/английском — как в репо; тело — What/Why, не список файлов.
merge vs rebase #
| merge | rebase | |
|---|---|---|
| История | сохраняет развилки | линейная |
| Конфликты | один раз на merge | потенциально на каждый commit |
| Shared branch | безопаснее | переписывает — осторожно |
Правило: rebase своих локальных коммитов на main; не rebase уже запушенных shared-веток без договорённости.
git fetch origin
git rebase origin/mainamend и force #
git commit --amend --no-edit # только если ещё не push
git push --force-with-lease # никогда --force на main без приказа--force-with-lease не затрёт чужой push, если вы отстали.
stash #
git stash push -m "wip nginx"
git stash list
git stash popНе храните в stash секреты «на минуту» — минута растягивается.
Когда всё сломалось #
git reflog # ваш спасательный круг
git switch -c recover HEAD@{3}reset --hard — только если понимаете, что теряете uncommitted.
Хуки #
# .git/hooks/pre-commit или pre-commit framework
gitleaks protect --stagedВ monorepo — pre-commit / husky, но без 30-секундного хука на каждый commit.
Секреты в истории #
Если утёк токен:
- revoke
gitleaks detect/git log -p -S 'token'- BFG /
git filter-repo— только осознанно + force push всех клонов
Проще не коммитить.
Итог #
add -p, осмысленные commit, rebase своей ветки, force-with-lease, reflog. Остальное — по мере боли, не из туториала на 4 часа 🔧