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 #

mergerebase
Историясохраняет развилкилинейная
Конфликтыодин раз на mergeпотенциально на каждый commit
Shared branchбезопаснеепереписывает — осторожно

Правило: rebase своих локальных коммитов на main; не rebase уже запушенных shared-веток без договорённости.

git fetch origin
git rebase origin/main

amend и 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.

Секреты в истории #

Если утёк токен:

  1. revoke
  2. gitleaks detect / git log -p -S 'token'
  3. BFG / git filter-repo — только осознанно + force push всех клонов

Проще не коммитить.

Итог #

add -p, осмысленные commit, rebase своей ветки, force-with-lease, reflog. Остальное — по мере боли, не из туториала на 4 часа 🔧