Коміт у git — це об'єкт, що містить посилання на:
- знімок стану (snapshot), що записаний раніше в індекс
- метадані автора
- коментарі
- нуль чи більше вказівників на інші коміти, що є прямими батьками даного коміту
Залежно від ситуації, у коміта може бути така кількість батьків:
- 0 для першого коміта
- 1 для звичайного коміта
- декілька для коміта, що отримується в результаті злиття двох чи більше гілок.
Створення коміту
Виконуючи команду git commit, Git створюєте коміт. При цьому Git вираховує контрольну суму для кожного підкаталогу і зберігає ці об'єкти-дерева в Git-репозиторій. Після цього Git створює об'єкт для коміту, в якому є метадані і вказівник на об'єкт-дерево. Таким чином, Git зможе відтворити поточний стан, коли в цьому буде необхідність.
Стани файлів
Перед збереженням будь-якого файлу Git рахує контрольну суму, і вона стає індексом цього файлу. Тому не можливо внести зміну у файлу чи папки, щоб Git цього не помітив.
Всі файли можуть знаходитись в одному з трьох станів: зафіксований, змінений, підготовлений. Зафіксований означає, що файл уже збережений у вашій локальній базі. Змінений - файли, що змінювались, але ще не зафіксованні. Підготовлені - всі змінені файли, що відмічені для включення в наступний коміт.
Використання git commit
використання: git commit [<ключі>] [--] <шлях>
Коміт ключі
-F, --file <файл> прочитати повідомлення з файлу
--author <автор> перевизначити автора для коміту
--date <дата> перевизначити дату для коміту
-m, --message <повідомлення>
коміт повідомлення
-c, --reedit-message <commit>
повторно використати та редагувати повідомлення з визначеного коміту
-C, --reuse-message <commit>
повторно використати повідомлення з визначеного коміту
-e, --edit редагувати коміт
-a, --all закомітити всі змінені файли
-i, --include додати визначені файли до індексу з коміту
--interactive інтерактивно додавати файли
-p, --patch інтерактивно додавати зміни
-o, --only комітити тільки визначені файли
--dry-run показати, що може бути закомічено
--branch показати інформацію, щодо гілки
--amend внести зміни в попередній коміт
-u, --untracked-files
показати файли, що не відслідковуються
Приклади
При записі вашої власної роботи, контент змінених файлів в робочому дереві тимчасово зберігається в проміжну зону, який має назву індекс ("index"), за допомогою команди git add.
edit file.txt
git add file.txt
git commit -m "у файл була додана строка Hello world"
Ми редагуємо файл file.txt. Наша зміна - це додавання строки "Hello world". Коли ми виконуємо команду git add file.txt, то ми цей файл додаємо в індекс. При виконанні git commit відбувається збереження змін у вигляді snapshot.
edit file.txt
git commit -am "у файл була додана строка Hello world"
Використання ключа -a дозволяє нам уникати введення зайвих команд. При її виконані спочатку буде переглянуто робоче дерево на предмет змін, і потім відповідні зміни будуть збережені.
Загальний процес