Пошук уроків, статей та іншого контенту
Створюватимете коміти з інформативними повідомленнями та дізнаєтеся, якими мають бути логічні атомарні зміни.
Коміт — це збережений у Git знімок підготовлених змін. Він містить:
зміни у файлах;
автора та час створення;
повідомлення коміту;
посилання на попередній коміт.
Коміт не зберігає всі зміни з робочої папки автоматично. Спочатку потрібно додати потрібні файли до області підготовки, а потім створити коміт.
Загальна послідовність має такий вигляд:
git add app.js
git commit -m "Add form validation"Команда git add додає зміни до області підготовки, а git commit зберігає саме підготовлені зміни в історії.
Для створення коміту з коротким повідомленням використовуйте параметр -m:
git commit -m "Add user registration form"Повідомлення після -m має бути в лапках. Воно повинно коротко пояснювати, що саме змінилося.
Повний приклад:
mkdir demo-project
cd demo-project
git init
printf "console.log('Hello');\n" > app.js
git add app.js
git commit -m "Add initial JavaScript file"
git log --onelineУ результаті Git створить перший коміт і покаже його в історії.
Перед створенням коміту корисно перевірити стан репозиторію:
git statusПриклад повідомлення:
Changes to be committed:
new file: app.jsЦе означає, що файл уже підготовлений і потрапить до коміту.
До коміту потрапляють лише зміни, додані командою git add.
Нехай у репозиторії є два змінені файли:
git statusChanges not staged for commit:
modified: app.js
modified: styles.cssЯкщо виконати:
git add app.js
git commit -m "Add application startup message"до коміту потрапить лише app.js. Зміни у styles.css залишаться в робочій папці для наступного коміту.
Перевірити підготовлені зміни можна командою:
git diff --cachedПараметр --cached показує саме ті зміни, які будуть включені до наступного коміту.
Добре повідомлення відповідає на запитання: «Що змінив цей коміт?».
Приклади інформативних повідомлень:
Add password validation
Fix incorrect total calculation
Update navigation styles
Remove unused helper functionНеінформативні повідомлення не допомагають зрозуміти історію проєкту:
Changes
Update
Fix
Work
asdfПоширений стиль — починати повідомлення з дієслова в наказовій формі:
Add — додати;
Fix — виправити;
Update — оновити;
Remove — видалити;
Refactor — змінити структуру коду без зміни поведінки.
У повідомленні не потрібно описувати кожен змінений рядок. Воно має стисло називати основну мету коміту.
Область підготовки дає змогу вибрати, які саме зміни збережуться в коміті.
Приклад:
printf "\nfunction greet(name) {\n return `Hello, ${name}`;\n}\n" >> app.js
printf "\nbody { color: navy; }\n" >> styles.css
git add app.js
git commit -m "Add greeting function"
git statusКоміт містить зміни app.js, але зміни styles.css ще не закомічені.
Після цього можна створити окремий коміт:
git add styles.css
git commit -m "Update page text color"Такий підхід дозволяє не змішувати в одному коміті зміни програмної логіки та стилів.
Атомарний коміт містить одну логічно завершену зміну. Його можна зрозуміти, перевірити та за потреби скасувати як окрему одиницю.
Приклади атомарних комітів:
Add email format validation
Fix empty shopping cart display
Update button styles
Remove duplicated date formatterНе варто поєднувати в одному коміті непов’язані зміни:
Add validation, change colors, rename files, and update documentationКраще розділити їх:
git add src/validation.js
git commit -m "Add email format validation"
git add styles.css
git commit -m "Update button styles"
git add README.md
git commit -m "Update project documentation"Атомарні коміти мають такі переваги:
історію змін легше читати;
простіше знайти коміт, який спричинив проблему;
легше переглядати зміни під час перевірки коду;
окрему зміну можна скасувати без зайвих змін.
Коміт не обов’язково має містити лише один файл. Важливо, щоб усі файли в ньому стосувалися однієї логічної зміни.
Якщо не передати повідомлення через -m, Git відкриє текстовий редактор:
git commitУ редакторі введіть повідомлення коміту, збережіть файл і закрийте редактор. Після цього Git створить коміт.
Для початківців зручніше використовувати короткий варіант:
git commit -m "Fix login error message"Після створення коміту переглянути останні записи історії можна командою:
git log --onelineПриклад результату:
a31f8c2 Fix login error message
7b42d10 Add login formКожен рядок містить:
скорочений ідентифікатор коміту;
повідомлення коміту.
Щоб переглянути деталі останнього коміту, виконайте:
git show HEADHEAD — це посилання на поточний коміт, тобто зазвичай останній коміт поточної гілки.
Якщо потрібно виправити повідомлення щойно створеного коміту, використовуйте:
git commit --amend -m "Correct login error message"Ця команда замінює останній коміт новим комітом із виправленим повідомленням. Вона також включає до оновленого коміту всі поточні підготовлені зміни.
--amend варто використовувати для виправлення останнього локального коміту, який ще не передано іншим розробникам. Не слід змінювати вже опубліковану історію без узгодження з командою.
Команда:
git commit -m "Update application"не включить незапідготовлені зміни. Спочатку додайте потрібні файли:
git add app.js
git commit -m "Update application"Команда:
git add .додає до області підготовки всі зміни з поточного каталогу. Перед комітом перевірте результат:
git status
git diff --cachedТак можна помітити випадково додані тимчасові файли або зміни, які не стосуються поточної задачі.
Повідомлення Update files не пояснює зміст зміни. Краще вказати конкретну мету:
Update product card layoutЗміни функціональності, форматування та документації краще зберігати окремими атомарними комітами, якщо вони не є частинами однієї логічної зміни.
Не створюйте коміт, якщо код перебуває в очевидно зламаному або незавершеному стані. Коміт має представляти зрозумілий етап роботи.
git commit зберігає підготовлені зміни в історії Git.
Перед комітом потрібно додати зміни командою git add.
Параметр -m дає змогу одразу вказати повідомлення:
git commit -m "Add search field"Повідомлення має коротко описувати мету зміни.
Атомарний коміт містить одну логічно завершену зміну.
git status і git diff --cached допомагають перевірити, що саме потрапить до коміту.
git log --oneline показує коротку історію комітів.
git commit --amend виправляє останній локальний коміт.