Форк - ваша копія чужого репозиторію на GitHub. Через форк вносять зміни в проєкти, куди немає прав на запис: так працює більшість open source, включно з Laravel.
Схема з двома віддаленими репозиторіями:
git clone git@github.com:olena/framework.git # ваш форк - це origin
cd framework
git remote add upstream https://github.com/laravel/framework.git
git remote -v
| Remote | Що це | Права |
|---|---|---|
origin |
ваш форк | читання й запис |
upstream |
оригінальний репозиторій | лише читання |
Робочий цикл:
git fetch upstream
git switch -c fix/route-cache upstream/13.x # гілка від актуального стану оригіналу
# ... зміни, коміти ...
git push -u origin fix/route-cache # у свій форк
Далі на GitHub - pull request з olena:fix/route-cache у laravel:13.x.
Синхронізація форку:
git fetch upstream
git switch main
git merge --ff-only upstream/main
git push origin main
Або кнопка «Sync fork» на сторінці форку на GitHub, або gh repo sync.
Правила, що позбавляють проблем:
- не комітьте в
mainфорку - тримайте його точною копієюupstream/main, а кожну зміну робіть в окремій гілці. Тоді синхронізація завжди fast-forward; - гілку для pull request створюйте від свіжого
upstream/<цільова гілка>, а не від застарілогоmainфорку; - якщо оригінал просунувся під час рев'ю -
git fetch upstream && git rebase upstream/13.xіgit push --force-with-lease; - цільова гілка має значення: у Laravel виправлення йдуть у гілку поточної версії, а нові можливості - в
master; це описано в правилах внеску.
Дозвіл супровідникам («Allow edits by maintainers») на pull request дає їм змогу дописати дрібні виправлення прямо у вашу гілку.