Коміт (керування версіями)
Коміт у 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 дозволяє нам уникати введення зайвих команд. При її виконані спочатку буде переглянуто робоче дерево на предмет змін, і потім відповідні зміни будуть збережені.
Загальний процес
- Загальний процес