Робота з GitHub
Існує дзеркало репозиторію OpenWrt на GitHub: https://github.com/openwrt/openwrt.
Створіть fork цього репозиторію за допомогою інтерфейсу GitHub, клонуйте його на свій комп’ютер, створіть нову гілку для змін, відправте її назад на GitHub та створіть pull request.
Якщо ви не знаєте, як це зробити — читайте далі.
Створіть обліковий запис на GitHub — це буде публічне сховище з вашим fork'ом OpenWrt і точка для всіх подальших дій.
Встановіть `git` на свій ПК і налаштуйте ім’я користувача та електронну пошту:
git config --global user.name "Ваше ім’я" git config --global user.email "ваш@email"
Також бажано вказати редактор за замовчуванням:
git config --global core.editor "назва-редактора"
Потім дотримуйтесь інструкцій GitHub щодо Fork A Repo та створення локальної копії fork'у.
Після цього створіть нову гілку:
git checkout -b моя-гілка
Усі наступні коміти будуть додані саме в цю гілку. Для перемикання між гілками використовуйте:
git checkout ім’я-гілки
Після внесення змін додайте файли:
git add -i
Потім зробіть коміт з підписом:
git commit --signoff
Формат повідомлення:
Короткий заголовок Детальний опис змін. Signed-off-by: Ім’я Прізвище <email@example.com>
Надішліть зміни до свого GitHub-репозиторію:
git push --all
Після цього ви зможете створити Pull Request через веб-інтерфейс GitHub: Creating a pull request.
Об’єднання (squash) комітів
PR має складатися з логічно завершених змін, а не з десятків “виправлень після рев’ю”.
Коли настане час об’єднати коміти, використовуйте squash.
Перейдіть у директорію проєкту, перевірте доступні гілки:
git branch -a
Перейдіть у гілку, яку потрібно об’єднати:
git checkout ім’я-гілки
Перегляньте лог, щоб порахувати, скільки комітів треба об’єднати:
git log
Скиньте останні `X` комітів:
git reset HEAD~X
Потім знову додайте зміни:
git add -i
І зробіть один новий коміт:
git commit --signoff
Надішліть нову версію PR:
git push -f
GitHub оновить PR автоматично.
Альтернатива: інтерактивний rebase
Інтерактивна версія squash — більш гнучка:
git rebase -i HEAD~X
Ви зможете обрати, які коміти об’єднати, перейменувати або видалити.
Відкриття закритого Pull Request
GitHub не дозволить повторно відкрити PR, якщо після його закриття ви:
- зробили force push у гілку; - або видалили гілку.
Але якщо повернути гілку до того самого commit hash, який був у момент закриття PR — ви зможете відкрити його знову.
Приклад:
# Дізнайтесь hash коміту X, на якому було закрито PR git log -1 testbranch # Перейдіть до цього коміту git checkout xxxxxxxxxx # Видаліть стару гілку git branch -D testbranch # Створіть нову з таким самим іменем git checkout -b testbranch # Відправте на GitHub git push -f origin testbranch
Після цього кнопка “Reopen” стане доступною — але лише якщо ви самі закривали PR. Якщо це зробив адміністратор, зверніться до нього.
Після відкриття PR можна оновити його новими змінами:
git checkout новий-хеш git branch -D testbranch git checkout -b testbranch git push -f origin testbranch