Что такое fork (форк) в контексте Git и GitHub/GitLab?

«Что такое fork (форк) в контексте Git и GitHub/GitLab?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Fork (форк) — это полная копия чужого репозитория на вашу учетную запись на платформе (GitHub, GitLab, Bitbucket). Это создает персональную удаленную точку для работы, позволяющую вносить изменения без прямого доступа к исходному проекту.

Отличие от git clone:

  • git clone создает локальную копию репозитория на вашем компьютере.
  • Fork сначала создает удаленную копию на платформе, которую затем можно клонировать локально.

Типичный рабочий процесс (workflow) для внесения вклада:

  1. Нажать кнопку "Fork" на странице исходного (upstream) репозитория на GitHub.
  2. Клонировать свой форк на локальную машину:
    git clone https://github.com/YOUR-USERNAME/REPOSITORY-NAME.git
  3. Добавить исходный репозиторий как удаленный upstream для синхронизации:
    git remote add upstream https://github.com/ORIGINAL-OWNER/REPOSITORY-NAME.git
  4. Создать ветку, внести изменения, сделать коммиты и отправить (push) их в свой форк.
  5. Создать Pull Request (PR) из ветки вашего форка в основную ветку исходного репозитория.

Важно: Форк не обновляется автоматически. Чтобы синхронизировать его с исходным проектом, нужно выполнить:

git fetch upstream
git merge upstream/main  # или rebase
git push origin main