Skip to content

Робота з Git

Yaroslav edited this page Dec 6, 2017 · 1 revision

Короткий опис того, як варто працювати з Git. Розглядається лише консольний варіант.

Отримання доступу на прямий запис до репозиторію (repository)

Ви можете перекладати гру і без прямого доступу на запис, але тоді вам доведеться працювати з форками (fork). В такому випадку ви можете пропустити цей пункт.

Якщо ви все-таки хочете працювати безпосередньо з цим репзиторієм, то інструкцію того, як отримати доступ на запис, ви можете знайти на форумі у розділі Contributing to existing translations

Початок роботи

Якщо розробники надали вам доступ, потрібно клонувати репозиторій собі локально. Для цього:

  1. Встановіть Git для вашої ОС: [https://git-scm.com/download/mac Mac], [https://git-scm.com/download/win Windows]. Для Linux - скористайтеся менеджером пакетів вашого дистрибутиву.
  2. Зайдіть на [сторінку проекту на GitHub](https://github.com/Ludeon/RimWorld-Ukrainian).
  3. Натисніть на зелену кнопку "Clone or Download", що знаходиться приблизно у правій верхній частині сторінки, та скопіюйте рядок: https://github.com/Ludeon/RimWorld-Ukrainian.git
  4. Запустіть термінал командного рядка або Git Bash в тому каталозі, де ви бажаєте створити локальний репозиторій (тобто, де будуть зберігатися файли перекладу) (ви, звісно ж, можете запустити його з будь-якого іншого місця і перейти до бажаного каталогу за допомогою відповідних команд).
  5. Клонуйте гілку master (якщо ви працюєте із форком, не забудьте замінити тут адресу на адресу вашого форка):
    git clone https://github.com/Ludeon/RimWorld-Ukrainian.git
  6. Отримайте інформацію про гілки:
    git fetch origin

Якщо ви не хочете писати розробникам, то можете просто зробити свій форк цього репозиторію та клонувати його: https://help.github.com/articles/fork-a-repo/ https://guides.github.com/activities/forking/ Або, якщо дуже коротко, натисніть на кнопку fork, що знаходиться майже у правому верхньому куту сторінки, а далі слідуйте підказкам.

Як мені оновити локальний репозиторій та отримати останні зміни з віддаленого репозиторію?

Про всяк випадок ще раз: локальний репозиторій - файли на вашому комп'ютері; віддалений репозиторій - https://github.com/Ludeon/RimWorld-Ukrainian, файли, що зберігаються на серверах GitHub'а.

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

git checkout master
git pull

Якщо у віддаленому репозиторії з'явилися нові гілки, а у вас вони відсутні, їх можна отримати наступних шляхом:

git fetch origin
git checkout <назва гілки>

Я зробив зміни та хочу додати їх до перекладу. Що мені робити?

  1. Визначтеся, з чим саме ви будете працювати: який орієнтовний об'єм змін та чому вони були зроблені.
  2. Перебуваючи в поточній робочій гілці '''локального''' репозиторію, переконайтеся, що у вас остання версія проекту в локальному репозиторії; про всяк випадок виконайте іще раз:
    git checkout master
    git pull
  3. Створіть окрему локальну гілку для своїх змін. Оберіть таку назву, яка біде показувати, над чи ви працюєте (наприклад, production-buildings):
    git checkout -b production-buildings
    Також зручно називати гілки відповідно до номеру issue, якому вона "присвячена":
    git checkout -b 625-DamageEvents
  4. Зробіть ту роботу, яку ви вважаєте потрібною, локально
  5. Після кожної логічно завершеної групи змін робіть комміт (commit):
    git add <шлях або шаблон шляху до файлів, які необхідно додати до індексу (тобто ті файли, які будуть додані до комміту>
    

    до того ж можна використовувати наступний синтаксис, якщо ви хочете додати абсолютно всі змінені файли:

    git add .
    

    Далі, власне кажучи, створюєте комміт:

    git commit -m "<повідомлення комміта>"
    

    Угода стосовно повідомлень до комміта '''(це важливо!)''':

    • написані англійською мовою;
    • довжина рядків не більша за 72 символи; перенесення здійснюється за допомогою дефісу згідно до правил мови;
    • перший рядок, заголовок - не більше ніж 50 символів;
    • якщо цей комміт вирішує якийсь issue, то на початку заголовка вказується '''посилання''' на номер завдання в issues у вигляді номеру та символу #, наприклад: Solve #42 або Fix #234;
    • точка в кінці заголовку не потрібна. Повідомлення має бути коротким та описувати зміни в цьому комміті. Варто розбивати великі зміни на декілька невеликих коммітів, які будуть логічно пов'язані між собою. Приклади коректних повідомлень:
    Fix #42 component label
    Solve #43. Add shotgun description
  6. Після того, як ви закінчите роботу, "залийте" ваші зміни у відповідну гілку на GitHub (у наступній команді назва гілки приведена лише як приклад):
    git push -u origin production-buildings
  7. На гітхабі створіть пулл-реквест (pull request) на сторінці "Pull requests". Оберіть як основу гілку поточну робочу (наприклад master), а як порівнювану - вашу production-buildings. Якщо ви працюєте із форком, то попередньо вам буде необхідно натиснути на посилання ```compare across forks``` та обрати ваш форк. Натисніть на зелену кнопку. Після цього на сторінці "Pull requests" має бути видно ваш пулл-реквест.
  8. Чекайте на критику від інших перекладачів та редагуйте ваші зміни згідно до неї. Після кожного виправлення повторюйте пункти 4-6. Створювати при цьому новий пулл-реквест не потрібно! Усі нові комміти з'являться у тому ж пулл-реквесті.
  9. Якщо проблем не буде, відповідальна людина натисне змержить (merge) ваші зміни до робочої гілки. Вітаю, ви таки зробили це.
  10. Тепер видаліть непотрібну більш гілку production-buildings локально та із сервера:
    git branch -d production-buildings
    git push origin --delete production-buildings