Что такое Git fork
Git fork — это операция, которая создаёт копию удалённого репозитория на платформе Git, обычно на сервере, таком как GitHub или GitLab.
Ключевые особенности git fork
- Создание копии репозитория: git fork позволяет создать копию проекта на платформе Git. Репозиторий, который вы получаете после fork — ваш, можно делать с ним что угодно.
- Внесение изменений изолированно: Форк позволяет вносить свои изменения в проект, а затем предложить их для интеграции в исходный репозиторий через pull request.
- Изоляция работы: git fork позволяет изолировать вашу работу от оригинального репозитория, обеспечивая безопасное пространство для экспериментов и изменений.
- Связь с оригиналом сохраняется: git fork оставляет связь с оригинальным репозиторием, что позволяет обновлять его содержимое, взяв коммиты из оригинального репозитория.
- Совместная работа: git fork и последующие Pull Requests позволяют командам и сообществам сотрудничать над проектами, предлагая изменения через Pull Request, которые могут быть рассмотрены и внесены в оригинальный проект.
Пример использования git fork
На платформе GitHub перейдите на страницу исходного репозитория (например, https://github.com/aliaskov/bashscripts) и нажмите кнопку «Fork». После этого вы можете склонировать этот репозиторий, так как он теперь ваш, но сохраняет связь с репозиторием, по которому он был форкнут:
git clone https://github.com/YOUR_USERNAME/bashscripts.git
cd bashscripts
Issue в GitHub
В GitHub, issue (задача) представляет собой место для обсуждения, отслеживания и управления работой над конкретной задачей или проблемой в проекте.
Каждая задача (issue) обычно представляет собой определённое изменение, исправление ошибки, предложение новой функциональности или общую проблему, требующую внимания. Каждая задача имеет название и описание, которые помогают понять суть проблемы или предложенного изменения.
Категории задач (метки)
Ошибка
Улучшение
Документация
Pull Requests в Git и GitHub
Pull Request — это механизм, предоставляемый некоторыми платформами совместной разработки, такими как GitHub, для предложения внесения изменений из одной ветки или форка в другую ветку или репозиторий.
Рабочий процесс pull request (6 шагов)
1. Получить последнюю версию
Вытащить изменения на ваш компьютер — получить самую последнюю версию изменений:
git pull
2. Создать ветку
Создаём новую ветку и называем её «feature_x» и переключаемся на неё:
git checkout -b feature_x
3. Зафиксировать изменения (закоммитить)
Сообщения коммитов важны — они описывают историю вашего кода:
git add <filename>
git add *
git commit -m "Commit message"
3а. Загрузить (запушить) изменения
Ветка не доступна другим пользователям, пока вы не загрузите её в ваш удалённый репозиторий:
git push origin <branch>
3б. Открыть Pull Request
Pull Request инициирует обсуждение ваших коммитов. Можно открыть PR в любой момент:
- когда у вас мало или вообще нет кода, но вы хотите поделиться скриншотами или общими идеями
- когда вы застряли и нуждаетесь в помощи или совете
- когда вы готовы к тому, чтобы кто-то прорецензировал вашу работу
4. Обсудить и прорецензировать код
Как только Pull Request открыт, человек или команда, рецензирующая ваши изменения, может обсудить с автором предложенные изменения, указать на конкретные строки или файлы.
5. Ребейз и тестирование
Как только ваш pull request пройдёт рецензирование, а ветка пройдёт ваши тесты, вы можете перебазировать (rebase) вашу ветку на master. Чтобы воспроизвести все изменения и все коммиты на ветке master или main:
git rebase master
main, а не master. Используйте:
git rebase main
Команда из лекции — git rebase master (исторически устоявшееся название, актуально для старых репозиториев).
6. Merge — слить ветку с основной
Теперь, когда ваши изменения были проверены, пришло время объединить ваш код с веткой master:
git checkout master
git merge <branch>
Обновление форкнутого репозитория через upstream
Если оригинальный репозиторий продолжает развиваться, ваш форк может отстать. Для синхронизации используется upstream — дополнительный remote, указывающий на оригинальный репозиторий.
Шаги синхронизации (из источника FeatureDevelopmentWithGit)
1. Проверить связи с начальным репозиторием:
git remote -v
# origin https://github.com/YOUR_USERNAME/JavaCourse.git (fetch)
# origin https://github.com/YOUR_USERNAME/JavaCourse.git (push)
2. Добавить новый источник (upstream):
git remote add upstream https://github.com/ORIGINAL_AUTHOR/JavaCourse
3. Обновить и получить новые ветки:
git fetch upstream
4. Перейти на ветку master:
git checkout master
5. Слить ветки (возможны конфликты):
git merge upstream/master
6. Залить в свой репозиторий на GitHub:
git push origin master