wiki
This page contains an outdated translation of the original content. Please check the English version for the most accurate information (and consider updating the translation if you are able to help out)!

Часті проблеми при роботі з osu! wiki

Нічого не значущі описи коммітів

Під цим звичайно розуміють описи коммітів з описом, начебто Update ru.md, які за замовчуванням створює веб-інтерфейс GitHub. Такий опис неінформативний і має малу цінність.

Якщо хтось сказав вам про це, або ви бачите, що всі ваші повідомлення про комміти однакові, це означає, що ви не використовували значущих повідомлень про комміти, коли могли, або намагалися перемістити, редагувати та/або видалити кілька файлів за допомогою веб-інтерфейсу GitHub.

Добрий опис дозволяє зрозуміти суть змін, не заглядуючи всередину комміта. Воно може бути як і коротким, так і довгим, але не більше 72 символів: залишок буде прихований в веб-інтерфейсі. Якщо ви відчуваєте, що однієї пропозиції недостатньо і при цьому ви редагуєте декілька файлів, є сенс розбити правку на декілька коммітів (по одному на кожен файл, наприклад).


Як виправити опис (інструкція для веб-інтерфейсу Github; в GitHub Desktop так зробити не можна):

  1. Відкрийте свій форк osu-wiki.
  2. Створіть нову гілку з такою самою по сенсу назвою, як у гілки з незрозумілими коммітами (наприклад, update-translation-2).
  3. Створіть пулл-реквест в свому форку.
  4. Якщо ви не бачили полей base fork і head fork, натисніть на посилання compare across forks.
  5. Виберіть свій форк в полі head fork.
  6. Виберіть проблемну гілку в полі compare.
  7. Виберіть свій форк в полі base fork.
  8. Виберіть тільки що створені гілку в полі base.
  9. Натисніть на кнопку Create pull request.
  10. Не заповнюючи назви і опису, знову натисніть на кнопку Create pull request.
  11. Знизу сторінки, біля кнопки Merge pull request, натисніть на стрілку вниз.
  12. Виберіть пункт Squash and merge.
  13. Натисніть на кнопку Squash and merge.
  14. Придумайте короткий опис всіх своїх змін в гілці - воно стане описом комміта.
  15. По бажанню, заповніть детальний опис.
  16. Натисніть на кнопку Confirm squash and merge.
  17. Відкрийте репозиторій ppy/osu-wiki.
  18. Закрийте свій минулий пулл-реквест, де було багато неінформативних коммітів.
  19. Створіть пулл-реквест на основі нової гілки.
  20. Опис для пулл-реквестів можна скопіюваи з тільки що закритого (на нього можна вставити посилання).
  21. Натисніть на кнопку Create pull request. Якщо всі минулі зауваження вами вже виправлені, попросіть про те, щоб новий пулл-реквест влили.

Технічно це найкращий спосіб стиснути комміти з гілки, якщо обмежитись лише використанням веб-інтерфейсу GitHub. Неможливо стиснути коміти за допомогою GitHub Desktop.

Відстаюча гілка "master"

Роблячи форк osu-wiki, ви отримуєте копію репозиторія на той момент. Коли в оригінальному репозиторію є нові зміни, вони не потрапляють в форк - Github не надає таких можливостей.


Тим не менш, оновляти гілку все-таки можна - або вручну, або за допомогою сторонніх сервісів, наприклад, Upriver, про який і йде мова.

  1. Відкрийте Upriver.
  2. При першому відвідуванні натисніть на посилання Sign in with GitHub.
  3. Натисніть на кнопку Authorize upriver.
  4. Заповніть поля:
    • into: ваш форк osu-wiki;
    • branch: master;
    • from: ppy/osu-wiki;
    • branch: master;
    • force?: так.
  5. Натисніть на кнопку Pull.
  6. Натисніть на кнопку Close.
  7. Закрийте Upriver.

Після цього гілка master в вашому форку буде нарівні з ppy:master, і від неї можна буде відводити нові гілки зі змінами, не боячись конфліктів.

Конфлікти в пулл-реквесті

Конфлікт змін може статися в двох випадках:

  • Ви змінили файли в відсталій гілці, а в основному репозиторії хтось змінив цей же файл, але по-іншому;
  • Крів вас, правкою статті займалася інша людина і його зміни були влиті раніше ваших.

В залежності від важкості конфліктів, є два рішення.

  1. Якщо в вашому пулл-реквесті є кнопка Resolve conflicts, натисніть на неї, щоб відкрити редактор.
    1. Знайдіть один з конфліктів (GitHub їх підсвічує).
    2. Все, що знаходиться між маркерами <<<<<<< и =======, - ваші зміни; все, що між ======= и >>>>>>> master, - теперішня версія статті в ppy/master.
    3. Вирішіть конфлікт. Щоб залишити вашу версію змін, видаліть правку, зроблену іншою людиною; щоб відмовитись від ваших змін, видаліть їх. В обох випадках, видаліть маркери <<<<<<<, ======= і >>>>>>> master.
    4. Вирішить конфлікти, що залишились.
    5. Коли всі конфлікти будуть вирішені, активується кнопка Mark as resolved - натисніть на неї.
  2. Якщо кнопка Resolve conflicts не активна, вам прийдеться оновити свою гілку, скинувши всі зміни, і внести їх заново.
    • Примітка: так варто поступати, якщо ви користуєтесь лише веб-інтерфейсом GitHub. Вирішити конфлікт можна за допомогою більш складних програм, але їх опис виходить за рамки цеї статті.