Форки: работа с чужими проектами
Учимся брать чужой проект, делать в нём изменения и предлагать их автору — основа open source.
Форк (fork) — ваша личная копия чужого репозитория на GitHub, в которую у вас есть полные права.
Зачем нужен форк
Допустим, вы нашли в open source проект и хотите исправить в нём баг. Напрямую запушить в чужой репозиторий вы не можете — у вас нет прав. Решение: нажать кнопку Fork на GitHub. Так появится копия проекта в вашем аккаунте, где вы — полноправный владелец. Там вы свободно работаете, а потом предлагаете изменения оригиналу через Pull Request.
Форк против клона
| Форк | копия репозитория в вашем аккаунте на GitHub, операция на сайте |
| Клон | копия репозитория на вашем компьютере, операция git |
Типичный путь такой: форкаете на GitHub → клонируете свой форк к себе на машину.
git clone https://github.com/ВЫ/проект.gitДва remote: origin и upstream
Тут возникает тонкость. Ваш форк (origin) со временем отстанет от оригинального проекта, ведь там продолжают работу другие. Чтобы подтягивать свежие изменения из оригинала, добавляют второй remote — по соглашению его называют upstream:
git remote add upstream https://github.com/АВТОР/проект.git
git remote -vВывод:
origin https://github.com/ВЫ/проект.git (fetch) origin https://github.com/ВЫ/проект.git (push) upstream https://github.com/АВТОР/проект.git (fetch) upstream https://github.com/АВТОР/проект.git (push)
Теперь origin — это ваш форк (туда пушите), а upstream — оригинал (оттуда тянете обновления).
Синхронизация форка
Подтянуть свежие изменения из оригинала в свою ветку main:
git fetch upstream
git switch main
git merge upstream/main
git push origin mainТак ваш форк снова актуален, и можно начинать новую правку от свежей базы.
Форк — основа open source
Модель «форк + Pull Request» — это то, как устроена вся открытая разработка. Вы не можете писать в чужой проект напрямую, но можете сделать его копию, улучшить и вежливо предложить улучшение автору. Так тысячи незнакомых людей совместно развивают огромные проекты вроде Linux или React, не имея прав на запись в главный репозиторий. Любой может предложить правку — а мейнтейнеры решают, принять её или нет.
Этикет контрибьютора
Прежде чем слать правку в чужой проект, загляните в файл CONTRIBUTING.md — в нём авторы описывают свои правила. Хороший тон: сначала обсудить идею в Issue, делать небольшие изменения, следовать стилю кода проекта и описывать суть правки в Pull Request. Уважение к чужим правилам сильно повышает шанс, что вашу работу примут.
Итог
- Форк — личная копия чужого репозитория на GitHub, где у вас есть права.
- Форк делается на сайте, клон — на компьютере; обычно сначала форк, потом клон.
- Добавьте remote
upstreamна оригинал, чтобы подтягивать его обновления.