1. Початок роботи: клонування проєкту
Почнімо з того, на чому ми зупинилися в попередній лекції. У вас уже є репозиторій, створений на GitHub. Тепер потрібно отримати його локальну копію на своєму компʼютері, щоб почати роботу. Цей процес називається клонуванням.
Крок 1. Запустіть IDE. Якщо у вас відкритий якийсь проєкт, закрийте його через File | Close Project. У початковому вікні (Welcome Screen) виберіть Clone Repository (або Get from VCS).
Крок 2. У вікні, що відкрилося, вставте URL вашого репозиторію. Такий спосіб зручний, коли ви клонуєте чужий репозиторій. URL можна скопіювати зі сторінки репозиторію на GitHub.
Якщо ви клонуєте свій репозиторій (наш випадок), найпростіше увійти у свій обліковий запис GitHub прямо з IDE. Для цього виберіть опцію Log in to GitHub. IDE відкриє браузер для авторизації.
На сторінці, що відкриється, натисніть зелену кнопку Authorize JetBrains. Після цього ви зможете вибирати свої репозиторії прямо зі списку в IDE. Виберіть потрібний проєкт і натисніть Clone.
Крок 3. IDE запитає, чи довіряєте ви цьому проєкту. Оскільки це ваш власний репозиторій, натисніть Trust Project.
Крок 4. Налаштування антивірусу (для користувачів Windows)
Антивірус Windows може попередити, що IDE намагається виконати дії, які він вважає підозрілими. Оскільки ми збираємося створювати й запускати програми, потрібно дозволити IDE працювати без обмежень. Натисніть кнопку «Automatically», щоб IDE сама додала потрібні папки до винятків антивірусу.
2. Збереження змін: Commit
commit — це «знімок», або збережений стан вашого проєкту в певний момент часу. Сприймайте його як точку збереження в грі: ви завжди можете повернутися до неї, якщо щось піде не так. Кожен коміт має унікальний ідентифікатор і повідомлення, яке описує зроблені зміни.
gitGraph
commit id: "Initial commit"
commit id: "Add user authentication"
commit id: "Fix login button bug"
commit id: "Refactor database connection"
Крок 1. Внесіть зміни.
Якщо ви клонували щойно створений репозиторій, у ньому буде лише один файл — README.md (і приховані папки IDE).
Відкрийте файл README.md і додайте до нього опис вашого проєкту. Щойно ви почнете редагувати файл, IDE підсвітить його імʼя синім кольором на панелі проєкту. Це означає, що файл змінено, але ці зміни ще не збережені в Git. IDE додасть зелену лінію там, де ви внесли зміни.
Крок 2. Відкрийте вікно Commit.
Ліворуч в IDE є вкладка Commit. Відкривши її, ви побачите всі зміни, готові до збереження. Це ваша область індексації (Staging Area).
Розберімося, що тут показано:
- Changes: тут розташовані файли, які Git уже відстежує, але які ви змінили. У нашому випадку це
README.md, до якого ми додали план проєкту. - Unversioned Files: це нові файли, які Git бачить у папці проєкту, але ще не відстежує.
Важливо
Перш ніж натиснути кнопку Commit, завжди уважно перевіряйте, навпроти яких файлів стоять позначки. Особливо це стосується першого коміту.
Якщо ви бачите в списку Unversioned Files папку .idea/ (а надто файл workspace.xml, який змінюється після майже кожного клацання мишею) або папку build/, — зупиніться! Ці службові файли не мають потрапляти у спільну історію. Гарна новина: якщо ви створили репозиторій із шаблоном .gitignore, Git сам приховає ці папки. Якщо ж вони видимі, додайте їх до ігнорування якнайшвидше (про це — наприкінці лекції).
Поки що ваше завдання для першого коміту — позначити основні файли проєкту й написати зрозуміле повідомлення в полі Commit Message.
Крок 3. Зробіть коміт.
Натисніть синю кнопку Commit. Готово! Ви зберегли «знімок» вашого проєкту в локальному репозиторії. Імʼя файла знову стане звичайного кольору.
3. Надсилання змін на GitHub: Push
Поки що ваші коміти зберігаються лише на вашому компʼютері. Щоб поділитися ними з командою або просто мати копію в надійному місці, потрібно надіслати їх до віддаленого репозиторію на GitHub.
sequenceDiagram
participant Локальний репозиторій (Ваш компʼютер)
participant Віддалений репозиторій (GitHub)
note over Локальний репозиторій (Ваш компʼютер): Ви зробили один або кілька комітів.
Вони існують лише тут.
Локальний репозиторій (Ваш компʼютер) ->> Віддалений репозиторій (GitHub): git push (надіслати коміти)
note over Віддалений репозиторій (GitHub): Ваші коміти скопійовано
і надійно збережено на сервері.
Крок 1. Натисніть кнопку Push.
В інтерфейсі кнопка Push розташована на головній верхній панелі інструментів (Main Toolbar). Вона виглядає як стрілка, спрямована вгору й праворуч. Натисніть її.
Крок 2. Перевірте й підтвердьте.
Відкриється вікно, у якому ви побачите всі коміти, готові до надсилання. Це ваш останній шанс переконатися, що ви надсилаєте саме те, що потрібно. Натисніть Push.
Якщо все минуло успішно, ви побачите спливне сповіщення IDE: Pushed commits to origin/main. Create pull request.
Крок 3. Перевірте результат на GitHub.
Після успішного надсилання відкрийте сторінку вашого репозиторію на GitHub у браузері. Ви побачите, що ваші зміни й файли зʼявилися там.
4. Панель керування Git
У вашій IDE є окрема панель інструментів Git, а також швидкі дії на верхній Main Toolbar. Це ваш центр керування версіями. Ознайоммося з основними кнопками.
Commit(позначка): відкриває панель для збереження змін.Push(стрілка вгору/праворуч): відкриває вікно для надсилання ваших комітів на GitHub.Branches: відкриває віджет для керування гілками (у лівому верхньому куті).Show Git Log: показує всю історію комітів вашого проєкту на вкладці Git. Ваша особиста машина часу.
Ранок починається з Update Project
Кнопка Update Project виконує одну з найважливіших дій — завантажує свіжі зміни від інших учасників команди із сервера GitHub на ваш компʼютер (виконує git pull).
Візьміть за звичку: щоранку, перш ніж написати бодай один рядок нового коду, натискайте цю кнопку. Якщо ви почнете працювати зі старим кодом, а ваші колеги вже внесли зміни в ті самі файли, до обіду можете отримати складний конфлікт злиття.
5. Використання .gitignore-файлів
Якщо у вашому проєкті зʼявляються службові файли або результати компіляції й ви не хочете, щоб вони випадково потрапили до репозиторію, додайте їх до винятків. Для цього в корені проєкту створюють спеціальний файл із назвою .gitignore.
Специфіка Kotlin і чому ми ігноруємо папки
У світі Kotlin стандартом де-факто є система збирання Gradle, а основним середовищем розробки — IntelliJ IDEA. Вони генерують багато службових файлів, які категорично не можна надсилати в Git:
build/— тут лежать результати компіляції вашого коду (файли.class, архіви.jar). Вони важать десятки й сотні мегабайт, а система збирання щоразу створює їх заново на компʼютері кожного розробника. Зберігати їх у Git означає швидко вичерпати місце на сервері..gradle/— локальний кеш системи збирання..idea/— локальні налаштування IDE (які файли у вас відкриті, розмір шрифту, шляхи до локальних SDK). Вашим колегам не потрібні ваші персональні налаштування інтерфейсу, а файлworkspace.xmlузагалі змінюється щосекунди.
Як додати файл до ігнорування вручну:
Крок 1. Припустімо, ви створили тимчасовий файл notes.txt із паролями до тестової бази. Клацніть по ньому правою кнопкою миші у вікні проєкту.
Крок 2. Перейдіть у меню Git -> Add to .gitignore -> Add to .gitignore. Ця опція додає вибраний файл до .gitignore у корені вашого проєкту.
Якщо у вас іще немає файла .gitignore, IDE запропонує його створити. Погоджуйтеся.
Крок 3. IDE автоматично додасть назву файла до .gitignore.
Після цього проігноровані файли відображатимуться в дереві проєкту сірим або оливковим кольором. Під час спроби зробити коміт Git просто «не побачить» ці файли. Головне — не забудьте закомітити сам файл .gitignore, щоб правила ігнорування завантажили всі учасники вашої команди.
А що, як я вже закомітив?
.gitignore ігнорує лише нові, ще не відстежувані файли. Якщо ви помилково вже закомітили папку build/, вона вже є в історії, і Git продовжить стежити за нею, навіть якщо ви додасте її до .gitignore. У такій ситуації потрібно буде очистити кеш (наприклад, командою git rm -r --cached build/ у терміналі). Але найкращий варіант — просто не допустити потрапляння «сміття» в перший коміт.
Правила для .gitignore
У файлі .gitignore вказують шаблони імен файлів і папок, які Git має ігнорувати. Порожні рядки ігноруються. Щоб додати коментар, почніть рядок із символу #.
*— замінює будь-яку кількість будь-яких символів. Наприклад,*.logігнорує всі файли з розширенням.log./— у кінці шаблону означає каталог. Наприклад,build/ігнорує весь вміст папкиbuild.!— на початку рядка інвертує правило. Наприклад, якщо у вас є правило*.log, але ви хочете відстежуватиimportant.log, додайте рядок!important.log.**— відповідає будь-якій кількості вкладених папок.
Приклад файла .gitignore для Kotlin і Gradle
# Результати компіляції та збирання Gradle
build/
.gradle/
out/
# Файли й налаштування локальної IDE
.idea/
*.iml
*.iws
# Файли операційної системи
.DS_Store
Thumbs.db
# Логи
*.log
Готові шаблони
Вам не потрібно писати ці файли з нуля. Є готові, перевірені спільнотою шаблони:
- Колекція
.gitignoreвід GitHub для різних мов і фреймворків: https://github.com/github/gitignore. - gitignore.io — зручний вебсервіс, який генерує файл
.gitignoreпід ваші технології (просто введіть Kotlin, Gradle, IntelliJ).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ