Fork — это ваша личная копия чужого репозитория на GitHub. Ключевой инструмент Open Source разработки и способ внести вклад в проект без прав на него.
Fork vs Clone: в чём разница
| Fork | Clone | |
|---|---|---|
| Где создаётся | На GitHub (онлайн) | На вашем компьютере (локально) |
| Связь с оригиналом | GitHub помнит связь | Независимая копия |
| PR в оригинал | Можно создать | Нельзя (нет связи) |
| Когда нужен | Вы не member репозитория | Вы member или работаете со своим |
Обычная схема: Fork → Clone форка → работа → PR в оригинал.
Зачем нужен Fork
Когда вы не member репозитория
Хотите добавить функцию в популярную библиотеку? У вас нет прав пушить туда напрямую. Решение:
Оригинал (чужой) Ваш форк
github.com/facebook/react → github.com/ваш-username/react
нет прав полные права
↓
Работаете локально
↓
PR в оригинал
Экспериментировать без риска
Форкните любой проект и экспериментируйте как угодно — оригинал не пострадает.
Взять за основу
Вам нравится проект, хотите развивать его в своём направлении — форкните и ведите отдельно.
Как сделать Fork
На GitHub
- Откройте репозиторий который хотите форкнуть
- Нажмите кнопку Fork (вверху справа, рядом со Star и Watch)
- Выберите аккаунт куда форкнуть (обычно ваш личный)
- Нажмите Create fork
Через 5-10 секунд GitHub перенесёт вас на вашу копию:
github.com/оригинал/repo → github.com/ВЫ/repo
forked from оригинал/repo
Клонируйте именно форк
Это самая частая ошибка! Нужно клонировать ваш форк, а не оригинал.
В GitHub Desktop
- File → Clone Repository → вкладка GitHub.com
- В списке найдите репозиторий с пометкой Forked from…
- Выберите его → Clone
Как проверить что клонировали правильно
В GitHub Desktop: Repository → Repository Settings
✅ Правильно:
Primary remote (origin): https://github.com/ВАШ-USERNAME/repo-name
❌ Неправильно:
Primary remote (origin): https://github.com/ЧУЖОЙ-USERNAME/repo-name
Если origin указывает на оригинал — удалите и клонируйте заново.
Полный цикл: Fork → PR
1. Fork на GitHub
Нажали Fork → получили копию.
2. Clone форка
GitHub Desktop → Clone → выбрали форк → папка на компьютере.
3. Создайте ветку
Branch → New Branch → feature/guide-kazan
4. Работайте и коммитьте
Обычные коммиты — они идут в ваш форк.
5. Push в форк
Push origin — изменения уходят в ваш форк на GitHub.
6. Создайте PR в оригинал
На GitHub откройте ваш форк → нажмите Compare & pull request.
Критически важно: проверьте направление PR:
base repository: ОРИГИНАЛ/repo ← compare: ВАШ-USERNAME/repo
↑ куда ↑ откуда
Если base указывает на ваш форк — нажмите «compare across forks» и исправьте.
7. Заполните описание и создайте PR
PR появится в оригинальном репозитории, во вкладке Pull requests.
Синхронизация форка с оригиналом
Оригинальный проект продолжает развиваться пока вы работаете. Ваш форк «отстаёт».
Через GitHub (просто)
На странице вашего форка появится баннер:
«This branch is N commits behind original:main»
Нажмите Sync fork → Update branch.
В GitHub Desktop после синхронизации
После Sync fork на GitHub:
1. Переключитесь на main в GitHub Desktop
2. Fetch origin → Pull origin
3. Локальный main теперь актуален
Обновите рабочую ветку
В GitHub Desktop: Branch → Update from default branch
Если ваша ветка изменила те же файлы что и оригинал — будет конфликт.
Разрешите его и продолжайте. Подробнее: Разрешение конфликтов.
Что происходит после merge вашего PR
Мейнтейнер принял ваш PR и смёрджил. Ваши изменения теперь в оригинальном проекте!
После этого:
1. Удалите ветку в форке (GitHub предложит)
2. Синхронизируйте форк: Sync fork на GitHub
3. В GitHub Desktop: Fetch + Pull на main
Удалить форк
Если форк больше не нужен:
Настройки вашего форка на GitHub → Settings → Danger Zone → Delete this repository.
Это удалит только ваш форк, оригинал не затронется.
Форк и Open Source: этикет
Перед работой
- Прочитайте CONTRIBUTING.md — там правила проекта
- Посмотрите открытые Issues — возможно задача уже есть
- Если задачи нет — создайте Issue и напишите что берётесь
В PR
- Заполните описание — мейнтейнеры получают десятки PR
- Одна задача — один PR, не смешивайте изменения
- Будьте готовы к правкам — первый PR редко принимают без замечаний
После отказа
Не расстраивайтесь если PR не приняли. Это нормально. Мейнтейнер может:
- Попросить изменить подход
- Объяснить что задача уже решается по-другому
- Отклонить по причинам не связанным с качеством кода
Поблагодарите за ответ и продолжайте.
Форк vs Collaborator
| Fork | Collaborator | |
|---|---|---|
| Как получить доступ | Кнопка Fork (сам) | Владелец репо приглашает |
| Push в оригинал | Нельзя, только через PR | Можно напрямую |
| Для кого | Внешние контрибьюторы | Члены команды |
Если вы работаете в команде над своим проектом — вы collaborator. Fork нужен только чтобы вносить вклад в чужие проекты.
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!