Коміт (керування версіями)


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

Загальний процес ред.