Необхідні вступні:
- Прочитати, повторити та зрозуміти статтю про гіт . Це допоможе бути впевненим, що все вже налаштоване та готове до роботи
- Встановити Intellij IDEA.
- Виділити годинку особистого часу для повного засвоєння.
Клонуємо проект локально
Тут є два варіанти.- Якщо вже є гітхаб аккаунт і хочеться щось потім запушити, краще зробити форк проекту до себе і клонувати свою копію. Як зробити форк - я описував у цій статті на чолі приклад the forking workflow .
- Клонувати з мого репозиторію і зробити все локально без можливості всю справу запустити на сервер. Адже це буде мій репозиторій))
-
Копіюємо адресау проекту:
-
Відкриваємо Intellij IDEA і вибираємо Get from Version Control:
-
Копіюємо вставляємо адресау на проект:
-
Вам запропонують створити Intellij IDEA проект. Приймаємо пропозицію:
-
Так як немає системи збирання, і це не входить в завдання статті, вибираємо Create project from existing sources :
-
Далі буде така картина маслом:
З клонуванням розібралися, тепер можна і озирнутися на всі боки.
Перший погляд на Intellij IDEA як на гіт UI
Придивіться ще раз уважно на клонований проект: там вже можна отримати багато інформації про систему контролю версій. Перше – це Version Control панель у нижньому лівому кутку. У ній можна знайти всі локальні зміни та отримати список коммітів (аналог git log). Перейдемо в лекцію Log . Є певна візуальна складова, яка допомагає зрозуміти, як саме йшов процес розробки. Наприклад, видно, що створювалася нова гілка з коммітом added header to txt , який потім влився в майстер-гілку. Якщо натиснути на коміт, у правому кутку можна побачити всю інформацію про коміт: всі зміни та його метадані.Робота з репозиторієм
Корисні гарячі клавіші
Щоб далі працювати, потрібно запам'ятати кілька дуже корисних гарячих клавіш:- ctrl + t - отримати останні зміни з віддаленого репозиторію (git pull).
- ctrl + k — зробити коміт/дивитись усі зміни, які є на даний момент. Сюди входять і untracked, і modified файли (дивись мою статтю про гіт, там описано) (git commit).
- ctrl + shift + k – це команда для створення пуша змін на віддалений репозиторій. Всі коміти, які були створені локально і ще не віддалені, будуть запропоновані для пуша (git push).
- alt + ctrl + z — відкотити у конкретному файлі зміни до стану останнього створеного комміта у локальному репозиторії. Якщо у верхньому лівому куті виділити весь проект, то можна буде відкотити зміни всіх файлів.
Що ми хочемо?
Нам для роботи потрібно освоїти базовий сценарій, який використовується скрізь. Варто завдання реалізувати нову функціональність в окремій гілці та запушити її на віддалений репозиторій (далі потрібно створити ще пул-реквест на головну гілку, але це виходить за межі нашої статті). Що для цього потрібно зробити?-
Отримати всі зміни в основний гілці (master, наприклад).
-
На базі цієї основної створити окрему для своєї роботи.
-
реалізувати нову функціональність.
-
Перейти на основну гілку та перевірити, чи не було нових змін за час, поки працювали. Якщо не було, то все добре, а якщо було, то робимо таке: переходимо на працюючу гілку і робимо ребейз змін з основної гілки в нашу. Якщо все пройшло успішно, то чудово. Але цілком можуть бути конфлікти. І їх якраз можна буде заздалегідь вирішити, не гаючи часу на віддаленому репозиторії.
Здавалося б, навіщо це робити? Це правило гарного тону, яке запобігає виникненню конфліктів вже після пуша своєї гілки на локальний репозиторій (є, звичайно, ймовірність, що все одно вони будуть, але вона стає значно меншою ).
- Запустіть свої зміни на віддалений репозиторій.
Отримати зміни віддаленого сервера?
Я додав опис у README новим коммітом і хочу ці зміни отримати. Пропонується вибір між мерджем та ребейзом у разі, якщо були зроблені зміни і в локальному репозиторії та на віддаленому. Вибираємо мерж. Вводимо ctrl + t :Створити нову гілку на основі master
Тут усе просто.-
Переходимо в правий нижній кут і натискаємо на Git: master , вибираємо + New Branch .
Залишаємо галочку Checkout branch і пишемо ім'я нової гілки. Для мене це буде readme-improver .
Після цього Git:master зміниться на Git:readme-improver .
Імітуємо паралельну роботу
Щоб конфлікти з'явабося, їх хтось повинен створити :D Я через браузер відредагую README новим коммітом і таким чином зімітую паралельну роботу. Мовляв, хтось під час моєї роботи зробив зміни в тому ж файлі, що і я, що призведе до конфлікту. Я видалю слово "повністю" з 10 рядка.Реалізувати свою функціональність
Завдання полягає в тому, щоб змінити README та додати опис до нової статті, тобто те, що робота в гіті йде через Intellij IDEA. Додаємо це:Перевірити, чи не змінилася основна гілка
Виконали завдання, вона працює, тести написали, все гаразд. Але перш ніж пушити на сервер, потрібно перевірити, чи не було змін в основній гілці за цей час. Як це могло статися? Дуже просто: комусь дали завдання після вас, і цей хтось зробив її швидше за вас. Тому переходимо на master гілку. Для цього потрібно в нижньому правому куті зробити те, що показано нижче на малюнку:- accept yours — прийняти лише зміни із readme-improver.
- accept theirs — прийняти лише зміни із master.
- merge самому вибрати, що потрібно залишити, а що прибрати.
- Це зміни з readme-improver.
- Результат. Поки що так, як було до змін.
- Зміни з master гілки.
Запустити зміни на віддалений сервер
Наступний крок – запустити зміни на віддалений сервер та створювати пул-реквест. Для цього просто натискаємо ctrl + shift + k , після чого отримаємо:Бонусна частина
Не хотів спочатку додавати створення пул-реквесту до статті, але виходить не дуже закінченою через це. Тому переходимо на гітхаб репозиторій (якщо він ваш, звичайно)))) і бачимо, що гітхаб вже знає, що нам запропонувати:Корисні посилання
- JavaRush: Початок роботи з Git: докладний гайд для новачків
- GitHub: Демо-проект для роботи
- JavaRush: Розбираємо стратегії розгалуження у Гіті
- JetBrains: Set up a Git Repository
- Habr: Git rebase
- GitHub: Мій обліковий запис