Когда вы форкнули проект, ваша копия «замирает» в моменте форка. Оригинальный проект продолжает развиваться — в него мёрджат PR других разработчиков. Чтобы работать с актуальным кодом, нужно периодически синхронизировать форк.
Почему форк отстаёт
Момент форка: original: A──B──C
your fork: A──B──C (копия)
После работы: original: A──B──C──D──E──F (добавили D, E, F)
your fork: A──B──C──X──Y (вы добавили X, Y)
Ваш форк не знает о коммитах D, E, F пока вы его не синхронизируете.
Когда нужна синхронизация
- Перед началом новой задачи — чтобы работать с актуальным кодом
- Когда PR показывает конфликт — оригинал изменился пока вы работали
- Периодически — если проект активно развивается
Способ 1: Кнопка Sync fork на GitHub (самый простой)
Шаг 1: Откройте свой форк на GitHub
URL: github.com/ВАШ-USERNAME/имя-репозитория
Шаг 2: Убедитесь что вы на ветке main
Переключитесь на main если нужно.
Шаг 3: Найдите кнопку Sync fork
Под кнопкой Code вы увидите статус:
«This branch is N commits behind original:main»
Рядом — кнопка Sync fork.
Шаг 4: Обновите ветку
Нажмите Sync fork → Update branch.
GitHub автоматически получит новые коммиты из оригинала и добавит в ваш форк.
Что если кнопки нет?
Кнопка Sync fork появляется только если форк отстаёт от оригинала. Если кнопки нет — форк актуален, ничего делать не нужно.
Способ 2: GitHub Desktop
После того как синхронизировали форк через GitHub (шаги выше), нужно обновить локальную копию:
- Переключитесь на ветку main в GitHub Desktop
- Нажмите Fetch origin
- Нажмите Pull origin
Теперь локальный main совпадает с оригиналом.
Обновите рабочую ветку
После синхронизации main нужно обновить и рабочую ветку:
В GitHub Desktop:
1. Переключитесь на вашу ветку (например feature/guide-kazan)
2. Branch → Update from default branch (или «Merge into current branch» → выберите main)
Если ваши изменения затрагивают те же файлы что и новые коммиты из оригинала — возникнет конфликт. Разрешите его: Разрешение конфликтов.
Синхронизация через командную строку
Для тех кто работает с консолью:
# Один раз: добавьте оригинальный репо как upstream
git remote add upstream https://github.com/ОРИГИНАЛ-АВТОР/repo-name.git
# Каждый раз при синхронизации:
git fetch upstream # получить изменения из оригинала
git checkout main # переключиться на main
git merge upstream/main # влить изменения
git push origin main # обновить свой форк на GitHub
Синхронизация и конфликт в PR
Самый частый сценарий:
- Вы форкнули и начали работу
- Другой PR смёрджили в оригинал — изменили тот же файл что и вы
- Ваш PR теперь показывает конфликт
Как исправить:
1. Sync fork на GitHub (обновить main в форке)
2. Fetch + Pull в GitHub Desktop (обновить локальный main)
3. Branch → Update from default branch (обновить вашу ветку)
4. Разрешить конфликт в редакторе
5. Commit + Push
6. PR автоматически обновится — конфликт исчезнет
Почему не нужно создавать новый PR
После синхронизации и разрешения конфликта ваш существующий PR автоматически обновляется. Создавать новый PR не нужно.
Регулярная синхронизация
Если вы работаете над долгой задачей в активном проекте:
Начало работы: синхронизируйте форк
Каждые 2-3 дня: синхронизируйте форк и обновляйте ветку
Перед PR: убедитесь что форк актуален
Это сократит количество конфликтов и упростит их разрешение.
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!