Git: рекомендации и команды (с расшифровкой)

Актуально на: 2026-02-18

Документ для работы по процессу “ветка → Pull Request → ревью → merge в main”. Цель: чтобы main всегда оставался стабильным и отражал “значимые версии”, а вся работа шла через PR с проверкой партнёром.

0) Принципы

  1. Не коммить в main напрямую (только через PR).
  2. Одна задача = одна ветка (не смешивать “план по персоналу” и “оптимизация UI” в одной ветке).
  3. Частые маленькие коммиты проще ревьюить, чем один огромный.
  4. До начала работы: синхронизируйся с main.
  5. После merge: подтяни main и удаляй локальную ветку.

1) Настройки на GitHub (делается один раз)

Рекомендуемые правила для ветки main в GitHub:

  • Require a pull request before merging
  • Require approvals: 1 (или 2)
  • (желательно) Require status checks (например, CI с npm run build)
  • Block force pushes

2) Ежедневный цикл работы (шаблон)

2.1 Обновить main перед началом

git checkout main
git pull

Что делает:

  • git checkout main — переключает текущую рабочую копию на ветку main.
    • checkout исторически делает 2 вещи: переключает ветку и/или восстанавливает файлы.
  • git pull — забирает изменения из удалённого репозитория и применяет их локально.
    • Технически это обычно git fetch + git merge (или rebase — зависит от конфигурации).

2.2 Создать рабочую ветку под задачу

git checkout -b feature/staff-plan

Что делает:

  • git checkout -b <name> — создаёт новую ветку <name> и сразу переключается на неё.
    • -b = “branch” (создать новую ветку).

Альтернатива (более современная команда, если хочешь):

git switch -c feature/staff-plan

Что делает:

  • git switch — переключение веток (без “восстановления файлов”, как у checkout).
    • -c = “create” (создать ветку).

2.3 Посмотреть, что изменилось

git status

Что делает:

  • Показывает текущую ветку и список изменённых/новых/удалённых файлов.

Полезный компактный формат:

git status -sb

Что делает:

  • -s = short (короткий вывод)
  • -b = branch (показывать строку про ветку + отношение к origin/...)

2.4 Добавить файлы в staging (подготовить к коммиту)

git add -A

Что делает:

  • Добавляет в staging все изменения: новые файлы, изменённые, удалённые.
    • -A = “all” (учесть удаление тоже).

Частичные варианты (если хочешь добавлять выборочно):

git add path/to/file.ts

Что делает:

  • Добавляет в staging только один файл.

2.5 Сделать коммит

git commit -m "Staff plan: initial UI skeleton"

Что делает:

  • Создаёт коммит из содержимого staging.
    • -m = message (сообщение коммита одной строкой).

2.6 Запушить ветку на GitHub

git push -u origin feature/staff-plan

Что делает:

  • Отправляет ветку feature/staff-plan в удалённый репозиторий origin.
    • -u = --set-upstream (установить “upstream” связь ветки с удалённой).
      • После этого можно делать просто git push / git pull без указания ветки.

2.7 Открыть Pull Request и получить ревью

Делается в GitHub UI:

  • Create Pull Request из feature/staff-planmain
  • Добавь партнёра в reviewers
  • Дождись approval

2.8 Доработки по комментариям ревью

Обычно это просто новые коммиты в той же ветке:

git add -A
git commit -m "Fix review comments"
git push

Что делает:

  • git push без аргументов работает, если есть upstream (см. -u выше).

2.9 После merge в main: обновить локально и убрать ветку

git checkout main
git pull
git branch -d feature/staff-plan

Что делает:

  • git branch -d <name> — удаляет локальную ветку.
    • -d = delete, но “безопасное” удаление: Git не даст удалить ветку, если она не смёржена.
    • Чтобы удалить принудительно (опасно): -D (force delete).

Удалить ветку на GitHub (если нужно):

git push origin --delete feature/staff-plan

Что делает:

  • Удаляет удалённую ветку.
    • --delete — флаг удаления ветки на remote.

3) Полезные команды диагностики

3.1 Посмотреть последние коммиты

git log --oneline -10

Что делает:

  • Показывает историю коммитов в компактном виде.
    • --oneline — сокращённый формат: <hash> <message>.
    • -10 — показать 10 записей.

3.2 Посмотреть изменения (diff)

git diff

Что делает:

  • Показывает изменения в рабочей директории относительно staging.
git diff --staged

Что делает:

  • Показывает изменения в staging относительно последнего коммита.
    • --staged (синоним: --cached) — diff того, что уже добавлено через git add.

3.3 Посмотреть remotes

git remote -v

Что делает:

  • Показывает список remote’ов и их URL.
    • -v = verbose (показывает fetch/push URL).

4) “Как откатиться” (аккуратно)

4.1 Отменить изменения в одном файле (НЕ в staging)

git restore path/to/file.ts

Что делает:

  • Возвращает файл к состоянию последнего коммита (или staging — зависит от флагов).

4.2 Убрать файл из staging (но оставить изменения в файле)

git restore --staged path/to/file.ts

Что делает:

  • --staged — применить действие к staging, не трогая рабочую копию.

4.3 Сбросить staging целиком (изменения в файлах останутся)

git reset

Что делает:

  • Убирает всё из staging, но оставляет изменения в рабочей директории.

5) Про игноры и “папка не должна попасть в Git”

Если папка должна быть локальной (пример: materials/), нужно 2 шага:

  1. Добавить правило в .gitignore (чтобы новые файлы не начинали отслеживаться).
  2. Если файлы уже отслеживаются — убрать их из индекса:
git rm -r --cached materials
git commit -m "Stop tracking materials/"

Что делает:

  • git rm --cached удаляет файлы из Git без удаления с диска.
    • -r = recursive (рекурсивно).

6) Настройка редактора для коммитов (чтобы не “всплывали файлы”)

Если git commit открывает редактор и это мешает:

git config --global core.editor "notepad"

Что делает:

  • git config меняет настройки Git.
    • --global — применить для текущего пользователя (все репозитории).
    • core.editor — какой редактор открывать для сообщений коммита, merge‑сообщений и т.п.

Для VS Code (важно --wait, чтобы Git ждал закрытия):

git config --global core.editor "code --wait"

7) Рекомендации по именованию

  • Ветки:
    • feature/<topic> — новая функциональность
    • fix/<topic> — багфикс
    • chore/<topic> — техдолг/рефактор/обновления
  • Сообщения коммитов (коротко и по сути):
    • Staff plan: add editor
    • Settings: defaultWorkspaceViewId
    • Perf: lighten autosave writes