Що таке коміти в Git?

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

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

Основні поняття

Кожен коміт у Git має унікальний ідентифікатор — хеш. Це функція, яка перетворює вхідні дані будь-якої довжини (зазвичай великих обсягів) у значення фіксованого розміру.

SHA-1 (Secure Hash Algorithm 1) — це алгоритм хешування, який перетворює вхідні дані на 40-символьний унікальний код. У Git вона використовується для неповторної ідентифікації об’єктів, таких як коміти. 

Алгоритм SHA-1 перетворює вхідні дані (наприклад, файли або зміни в коді) в цей хеш. Це дозволяє точно відстежувати зміни і забезпечує цілісність репозиторію, оскільки навіть найменша зміна у вмісті призводить до повністю іншого хешу.

Гілки в Git — це окремі лінії розвитку проєкту. Вони дозволяють працювати над новими функціями або виправленнями, не змінюючи основний код. Основна гілка зазвичай називається Main або Master, а від неї можна створювати інші, працювати над змінами й потім об’єднувати знову.

Області роботи в Git

HEAD показує на останній коміт у поточній гілці.

Індекс — це проміжне сховище, де збираються зміни перед створенням коміту.

Робочий каталог — це поточна тека з файлами проєкту, у якій ведеться розробка.

Робота з віддаленим репозиторієм

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

  • git push — надсилання комітів

Команда git push надсилає локальні зміни у віддалений репозиторій.

git push origin main

  • git pull – отримання змін

Команда git pull завантажує останні зміни з віддаленого репозиторію та зливає їх у локальну гілку.

git pull origin main

Створення коміту в Git

Розпочинаємо з основ:

  • Увійди до свого облікового запису GitLab.
  • Натисни «Create new project».
  • Введи назву проєкту, наприклад, my-sample-project.
  • Вибери параметр «Initialize repository with a README».
  • Натисни «Create project».

Клонуй репозиторій на локальний комп’ютер:

  • Скопіюй SSH-URL репозиторію з GitLab.
  • Відкрий термінал і виконай команду:

git clone git@gitlab.com:your-username/my-sample-project.git

  • Перейди до директорії проєкту:

cd my-sample-project

Створи нову гілку та внеси зміни:

  • Нова гілка:

git checkout -b example-tutorial-branch

  • Відкрий README.md та додай:

Hello world! I'm using Git!

  • Збережи зміни

Додай зміни та створи коміт:

  • Додай файл до індексу:

git add README.md

  • Створи коміт:

git commit -m "Added greeting to READM"

Відправ зміни до віддаленого репозиторію:

  • Надішли зміни до GitLab:

git push origin example-tutorial-branch

Створи Merge Request на GitLab:

  • Відкрий свій проєкт на GitLab.
  • Натисни «Create merge request».
  • Переконайся, що базова гілка — Main, а порівнювана — example-tutorial-branch.
  • Натисни «Submit merge request».

Ти впорався й створив свій перший коміт у Git та надіслав його до віддаленого репозиторію.

Команди для Git

  • Команда git cherry-pick 

Використовується для застосування змін з конкретного коміту в іншу гілку. Вона дозволяє вибірково переносити коміти без злиття всіх змін.

Корисні доповнення:

  1. -n, --no-commit — застосовує зміни без створення нового коміту.
  2. -e, --edit — відкриває редактор для зміни повідомлення коміту.
  3. -x — додає рядок Signed-off-by до коміту.

Приклад:

git cherry-pick 1234

git cherry-pick -n 1234

  • Команда git commit --amend 

Дозволяє змінити останній коміт, наприклад, додати файли або виправити опис.

Корисні доповнення:

  1. --no-edit — змінює коміт без відкриття редактора.
  2. --date — змінює дату коміту.

Приклад:

git commit --amend

git commit --amend --no-edit

  • Команда git squash

Об’єднує кілька комітів в один, допомагаючи зробити історію чистішою.

Приклад:

$ git rebase -i HEAD~3 # squash last 3 commit

$ git merge --squash new-feature

  • Команда git revert

Створює новий коміт, що скасовує зміни попереднього.

Приклад:

$ git revert HEAD  # HEAD refers to the latest commit

Корисні посилання

  1. Офіційна документація Git
  2. Про Git від GitHub
  3. Спільнота Git на Reddit
  4. Гра з відкритим кодом для вивчення Git
  5. Роадмап по вивченню Git
  6. Більше про роботу гілок та репозиторіїв
  7. Курс, де тебе навчать працювати з Git

Залишити відповідь

Дякуємо, що поділились