🐛 Типичные ошибки — урок 22

К оглавлению урока

⚡ Топ ошибок

  • Push в upstream вместо origin — вы не владелец оригинала!
  • PR в неверную сторону — указали не тот репозиторий/ветку назначения
  • Забыли синхронизировать форк → merge-конфликты
  • Коммит прямо в main форка (вместо feature-ветки)

Ошибка 1: Push в upstream вместо origin

После добавления upstream-remote некоторые случайно пушат изменения в оригинальный репозиторий вместо своего форка.

# НЕВЕРНО — если у вас нет прав на оригинальный репозиторий:
git push upstream feature_x   # ошибка: Permission denied или rejected

# ВЕРНО — всегда пушить в свой форк (origin):
git push origin feature_x
Правило: origin = ваш форк. upstream = оригинальный репозиторий. Пушить нужно только в origin. В upstream изменения попадают через PR.

Ошибка 2: PR в неверном направлении

При создании PR GitHub предлагает выбрать откуда и куда вы хотите влить изменения. Ошибка: указать неверный базовый репозиторий или ветку.

# Правильное направление PR (пример на GitHub):
# base repository: ORIGINAL_AUTHOR/repo (оригинал)  <—  base: main
# head repository: YOUR_USERNAME/repo  (ваш форк)   <—  compare: feature_x

# Ошибка: выбрать base = ваш форк (PR внутри форка — не попадёт в оригинал)

Ошибка 3: Забыли синхронизировать форк

Если вы давно не обновляли форк от upstream, ваша ветка может отстать на много коммитов. При попытке создать PR GitHub покажет конфликты или отстание.

# РЕШЕНИЕ: обновить форк перед началом работы
git fetch upstream
git checkout master
git merge upstream/master
git push origin master

# Затем создать ветку от свежего master
git checkout -b new-feature

Ошибка 4: Коммит прямо в main/master форка

Удобно, но создаёт проблемы: при создании PR изменения от разных задач смешаются. Трудно разделить PR по задачам.

# НЕВЕРНО — коммитить прямо в main
git checkout main
# ... вносим изменения ...
git commit -m "Add feature"
git push origin main   # PR будет содержать ВСЕ коммиты вашего main

# ВЕРНО — всегда работать в отдельной ветке
git checkout main
git pull
git checkout -b feature-add-thing
# ... вносим изменения ...
git commit -m "Add feature"
git push origin feature-add-thing
# PR будет содержать только коммиты этой ветки

Ошибка 5: Неинформативное название PR или коммита

Сообщения коммитов важны — они описывают историю вашего кода. Название PR с понятным описанием облегчает ревью.

# НЕВЕРНО
git commit -m "fix"
git commit -m "changes"
git commit -m "asdf"

# ВЕРНО
git commit -m "Fix null pointer in login form validation"
git commit -m "Add date field to README"
git commit -m "closes #9: implement temperature amplitude calculation"

Ошибка 6: Пробелы в имени ветки

# НЕВЕРНО — пробелы недопустимы в именах веток
git checkout -b "my feature branch"  # ошибка

# ВЕРНО — используйте дефисы или нижнее подчёркивание
git checkout -b my-feature-branch
git checkout -b feature_x
git checkout -b GH-9-fix-login