JavaRush /Курси /Go SELF /Щоденний цикл розробника: Commit, Push і .gitignore

Щоденний цикл розробника: Commit, Push і .gitignore

Go SELF
Рівень 32 , Лекція 1
Відкрита

1. Початок роботи: клонування проєкту

Почнемо з того, на чому зупинилися в минулій лекції. У вас є репозиторій, створений на GitHub, і тепер вам потрібно отримати його локальну копію на свій компʼютер, щоб розпочати роботу. Цей процес називається клонуванням.

Крок 1. Запустіть вашу IDE. Якщо у вас уже відкрито якийсь проєкт, закрийте його через File | Close Project. На стартовому екрані (Welcome Screen) виберіть Clone Repository (або Get from VCS).

Крок 2. У вікні, що відкрилося, вставте URL вашого репозиторію. Такий спосіб зручний, якщо ви клонуватимете чужий репозиторій. URL можна скопіювати зі сторінки репозиторію на GitHub.

Введення URL для клонування

Якщо ви клонуєте свій репозиторій, найпростіше увійти у свій акаунт GitHub прямо з IDE. Для цього виберіть опцію Log in to GitHub. Ваша IDE відкриє браузер для авторизації.

Вікно авторизації JetBrains IDE на GitHub

На сторінці, що відкрилася, натисніть зелену кнопку Authorize JetBrains. Після цього ви зможете обирати свої репозиторії просто зі списку в IDE. Виберіть потрібний проєкт і натисніть Clone.

Список репозиторіїв для клонування

Крок 3. Ваша IDE запитає, чи довіряєте ви цьому проєкту. Оскільки це ваш репозиторій, натисніть Trust Project.

Крок 4. Налаштування антивірусу (для користувачів Windows)

Антивірус Windows може попередити, що IDE намагається виконати невідомі йому дії. Оскільки ми збираємося створювати програми й запускати їх, потрібно дозволити IDE працювати без обмежень. Натисніть кнопку «Automatically», щоб IDE сама додала потрібні папки до винятків антивірусу.

Налаштування винятків антивірусу

2. Збереження змін: Commit

commit — це «знімок», тобто збережений стан вашого проєкту в певний момент часу. Думайте про нього як про точку збереження в грі: ви завжди можете повернутися до неї, якщо щось піде не так. У кожного коміту є унікальний ідентифікатор і повідомлення, яке описує зроблені зміни.

        gitGraph
        commit id: "Перший коміт"
        commit id: "Додати автентифікацію користувача"
        commit id: "Виправити помилку кнопки входу"
        commit id: "Рефакторинг підʼєднання до бази даних"
    
Історія комітів. Кожен новий коміт будується на основі попереднього, створюючи хронологію розвитку проєкту.

Крок 1. Внесіть зміни.

Якщо ви клонували щойно створений репозиторій, він міститиме лише один файл — README.md і приховані папки IDE.

Відкрийте файл README.md і додайте в нього опис вашого проєкту. Щойно ви почнете редагувати файл, IDE підсвітить його назву синім кольором на панелі проєкту. Це означає, що файл змінили, але зміни ще не збережено в Git. IDE додасть зелену лінію там, де ви внесли зміни.

Підсвічування зміненого файлу

Крок 2. Відкрийте вікно Commit.

Ліворуч у IDE є вкладка Commit. Відкривши її, ви побачите всі зміни, готові до збереження. Це ваша область індексування (Staging Area).

Вікно Commit в IntelliJ IDEA

Давайте розберемо, що ми бачимо:

  • Changes: тут містяться файли, які Git уже відстежує, але які були змінені. У нашому випадку це README.md, до якого ми додали опис проєкту.
  • Unversioned Files: це нові файли, які Git бачить у папці проєкту, але ще не відстежує.

Важливо

Перед натисканням кнопки Commit завжди перевіряйте, навпроти яких файлів стоять позначки. Особливо це важливо для першого коміту.

Якщо ви бачите в списку Unversioned Files папку .idea/ (і особливо файл workspace.xml, який змінюється при кожному кліку мишею), а також папки bin/, vendor/ чи скомпільовані бінарні файли, наприклад myapp.exe, — зупиніться! Ці службові файли не повинні потрапляти до загальної історії. Добра новина: якщо ви створили репозиторій із шаблоном .gitignore (Go), 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) виглядає як стрілка, спрямована вгору й праворуч. Натисніть її.

Кнопка Push на Main Toolbar

Крок 2. Перевірте та підтвердіть.

Відкриється вікно, де ви побачите всі коміти, готові до надсилання. Це ваш останній шанс переконатися, що ви надсилаєте саме те, що потрібно. Натисніть Push.

Вікно підтвердження Push

Якщо все пройшло успішно, ви побачите спливаюче сповіщення IDE: Pushed commits to origin/main. Create pull request.

Крок 3. Перевірте результат на GitHub.

Після успішного надсилання відкрийте сторінку вашого репозиторію на GitHub у браузері. Ви побачите, що ваші зміни та файли вже там.

4. Панель керування Git

У вашій IDE є окрема панель інструментів Git, а також швидкі дії на верхній панелі Main Toolbar. Це ваш центр керування версіями проєкту. Давайте познайомимося з ключовими кнопками.

Елементи керування Git в IDE
  • Commit (галочка): відкриває панель для збереження змін.
  • Push (стрілочка вгору/вправо): відкриває вікно для надсилання ваших комітів на GitHub.
  • Branches: відкриває віджет для керування гілками (у лівому верхньому куті).
  • Show Git Log: показує всю історію комітів вашого проєкту на вкладці Git. Ваша особиста машина часу.

Починайте ранок з Update Project

Кнопка Update Project виконує одну з найважливіших функцій — завантажує свіжі зміни, зроблені іншими учасниками команди, із сервера GitHub на ваш компʼютер (виконує git pull).

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

5. Використання .gitignore-файлів

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

Специфіка Go: що ми ігноруємо

В екосистемі Go компіляція та тестування виконуються за допомогою вбудованих інструментів (go build, go test). Процес збірки й запуску тестів створює бінарні файли та кеші, які категорично не слід відправляти в Git:

  • bin/ або out/ — папки, куди ви можете складати готові скомпільовані програми. Вони унікальні для вашої операційної системи та архітектури процесора.
  • *.exe, файли без розширень (у Linux/macOS) — самі виконувані бінарні файли. Зберігати їх у Git — поганий тон: вони займають місце й не приносять користі іншим розробникам, оскільки скомпільовані під вашу конкретну ОС.
  • *.test, *.out — бінарні файли, створені під час тестів, а також файли профілювання й покриття коду (наприклад, coverage.out).
  • go.work та go.work.sum — файли локального робочого простору. На відміну від go.mod та go.sum, які обовʼязково мають бути в репозиторії, файли go.work і go.work.sum призначені лише для вашої особистої локальної зручності.
  • vendor/ — каталог із локальними копіями залежностей. У сучасних проєктах на Go Modules його часто додають до ігнору, а завантаження пакетів довіряють утиліті go mod.
  • .idea/ — локальні налаштування вікна IDE (які файли відкрито, розмір шрифту). Вашим колегам ваші особисті налаштування інтерфейсу не потрібні, а файл workspace.xml взагалі постійно змінюється.

Як додати файл до ігнору вручну:

Крок 1. Припустімо, ви створили тимчасовий файл notes.txt з паролями до тестової бази. Клацніть по ньому правою кнопкою миші у вікні проєкту.

Створення тимчасового файлу

Крок 2. Перейдіть до меню Git -> Add to .gitignore -> Add to .gitignore. Ця опція додає вибраний файл до файлу .gitignore в корені вашого проєкту.

Додавання в .gitignore через меню

Якщо у вас ще немає файлу .gitignore, IDE запропонує його створити. Погодьтеся.

Крок 3. Ваша IDE автоматично додасть імʼя файлу в .gitignore.

Файл додано в .gitignore

Після цього проігноровані файли відображатимуться в дереві проєкту сірим або оливковим кольором. Під час спроби зробити коміт Git просто «не побачить» ці файли. Головне — не забудьте закомітити сам файл .gitignore, щоб усі учасники вашої команди отримали ці правила ігнорування.

А що, якщо я вже закомітив?

.gitignore ігнорує тільки нові, ще не відстежувані файли. Якщо ви помилково вже закомітили папку bin/, вона є в історії, і Git продовжить стежити за нею, навіть якщо ви додасте її в .gitignore. У таких ситуаціях доведеться очистити кеш, наприклад командою git rm -r --cached bin/ у терміналі, але краще просто не допускати потрапляння сміття до першого коміту.

Правила для .gitignore

У файлі .gitignore вказуються шаблони імен файлів і папок, які Git повинен ігнорувати. Порожні рядки ігноруються. Щоб додати коментар, почніть рядок із символу #.

  • * — замінює будь-яку кількість будь-яких символів. Наприклад, *.log ігнорує всі файли з розширенням .log.
  • / — наприкінці шаблону означає каталог. Наприклад, build/ ігнорує весь вміст папки build.
  • ! — на початку рядка інвертує правило. Наприклад, якщо у вас є правило *.log, але ви хочете відстежувати important.log, додайте рядок !important.log.
  • ** — відповідає будь-якій кількості вкладених папок.

Приклад файлу .gitignore для Go


# Скомпільовані бінарні файли
*.exe
*.exe~
*.dll
*.so
*.dylib
bin/

# Файли тестування та профілювання
*.test
*.out

# Файли локального робочого простору Go
go.work
go.work.sum

# Каталог з локальними копіями залежностей (опціонально)
vendor/

# Файли й налаштування локальної IDE
.idea/

# Файли операційної системи
.DS_Store
Thumbs.db

Готові шаблони

Вам не потрібно писати ці файли з нуля. Існують готові, перевірені спільнотою шаблони:

  1. Колекція .gitignore від GitHub для різних мов і фреймворків: https://github.com/github/gitignore.
  2. gitignore.io — зручний вебсервіс, який генерує файл .gitignore під ваші технології (просто введіть Go, GoLand, IntelliJ).
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ