💻 Примеры — Git fork в контексте PR

К оглавлению урока

⚡ Полный workflow fork → PR

# 1. Fork на GitHub (через браузер), затем:
git clone https://github.com/YOUR/repo.git
cd repo
git checkout -b feature_x
# ... вносим изменения ...
git add filename
git commit -m "Add feature x"
git push origin feature_x
# 2. Открыть PR на GitHub

# Обновить форк от upstream:
git remote add upstream https://github.com/ORIG/repo.git
git fetch upstream
git checkout master
git merge upstream/master
git push origin master

Пример 1: Fork и клонирование

Шаг на GitHub (через веб-интерфейс)

Перейдите на страницу репозитория (например, https://github.com/aliaskov/bashscripts) и нажмите кнопку «Fork». GitHub создаст копию репозитория в вашём аккаунте.

Клонирование форка на локальный компьютер

# Клонируйте СВОЙ форк (не оригинал):
git clone https://github.com/YOUR_USERNAME/bashscripts.git

cd bashscripts

# Убедиться, что находитесь в рабочей папке на master
git status

Пример 2: Создание ветки, коммит и push

Полный цикл от ветки до открытия PR:

# 1. Создаём ветку (без пробелов в имени)
git checkout -b feature_x

# 2. Создаём или редактируем файл
echo "New feature content" >> README.md

# 3. Добавляем в staging и коммитим
git add README.md
git commit -m "Add feature_x to README"

# 4. Пушим ветку в свой форк
git push origin feature_x

После этого GitHub предложит кнопку «Compare & pull request» — нажмите её для создания PR.

Совет: Ссылаясь на issue в описании PR, используйте #НОМЕР_ISSUE. Если написать просто #, выпадет список issues, из которого можно выбрать нужный. При merge PR issue может закрыться автоматически (если написать «Closes #НОМЕР»).

Пример 3: Обновление форка через upstream

Когда оригинальный репозиторий обновляется, ваш форк отстаёт. Синхронизация через upstream:

1. Проверить связи с начальным репозиторием:

git remote -v
# Вывод (только origin):
# 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/sergeylukichev/JavaCourse

3. Обновить и получить новые ветки:

git fetch upstream

4. Перейти на master:

git checkout master

5. Слить ветки (при отсутствии конфликтов — просто выйти из vi: :x):

git merge upstream/master

6. Залить в свой репозиторий на GitHub:

git push origin master

Пример 4: Полный PR-workflow из лекции

Сценарий: форкнули репозиторий преподавателя, вносим изменения, открываем PR с привязкой к issue.

# 0. Убедиться, что находимся на master
git status

# 1. Создаём issue на GitHub (через браузер — New Issue)

# 2. Создаём новую ветку по номеру issue
git checkout -b GH-9-temperature-amplitude

# 3. Пишем код / вносим изменения
# ... работа в редакторе ...

# 4. Проверяем список изменений
git status

# 5. Добавляем все изменения
git add .

# 6. Создаём коммит
git commit -m "first solution"

# 7. Пушим ветку в свой форк
git push --set-upstream origin GH-9-temperature-amplitude

# 8. Открываем PR на GitHub → New Pull Request → Create pull request
# В описании указать #9 (ссылка на issue)

# 9. После merge: возвращаемся на master и обновляемся
git checkout master
git pull