Пример 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