Пошук уроків, статей та іншого контенту
Навчіться створювати commit, додавати зміни до індексу та редагувати останній commit за допомогою --amend.
commit — це зафіксований знімок змін у Git. Кожен commit містить:
зміни у файлах;
автора та час створення;
повідомлення з описом змін;
посилання на попередній commit.
Зазвичай зміни проходять три етапи:
Робоча директорія — файли змінені, але Git ще не підготував їх до commit.
Індекс — область підготовлених змін, які потраплять до наступного commit.
Репозиторій — зміни вже збережені в commit.
Стан файлів можна перевірити командою:
git statusПісля редагування файлів потрібно додати зміни до індексу за допомогою git add.
Наприклад, створимо файл і додамо його:
touch README.md
git add README.mdТепер файл підготовлений до commit. Перевіримо стан:
git statusGit покаже файл у секції Changes to be committed.
Можна вказати кілька файлів окремо:
git add index.html styles.cssЩоб додати всі зміни у поточній директорії, використовують:
git add .Команда git add -A додає всі зміни в репозиторії: створені, змінені та видалені файли.
Для початківців важливо пам’ятати: git add не створює commit. Команда лише переміщує вибрані зміни до індексу.
Коли потрібні зміни додані до індексу, створіть commit:
git commit -m "Add README file"Параметр -m задає повідомлення commit.
Повідомлення має коротко описувати результат змін. Наприклад:
git commit -m "Add login form"
git commit -m "Fix button alignment"
git commit -m "Update validation rules"Не варто використовувати нечіткі повідомлення:
git commit -m "Changes"
git commit -m "Update"
git commit -m "Fix"Такі повідомлення не пояснюють, що саме було зроблено.
Нижче наведено послідовність команд для створення локального репозиторію та першого commit:
mkdir git-commit-demo
cd git-commit-demo
git init
echo "# Git Commit Demo" > README.md
git add README.md
git commit -m "Add README file"
git statusПісля виконання git status робоча директорія має бути чистою. Це означає, що всі поточні зміни вже зафіксовані.
Якщо Git ще не знає ім’я автора та електронну адресу, перед створенням commit потрібно налаштувати їх:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"Після commit можна продовжити редагувати файли:
echo "This project demonstrates Git commits." >> README.mdТепер у файлі є нові зміни, але вони ще не належать жодному commit. Перевірити це можна так:
git statusЩоб створити окремий новий commit:
git add README.md
git commit -m "Add project description"У цьому випадку історія міститиме два commit:
Add README file
Add project description
--amendПараметр --amend дає змогу змінити останній commit. Його використовують, якщо потрібно:
виправити повідомлення commit;
додати файл, який випадково не потрапив до commit;
додати нові зміни до останнього commit.
--amend не створює звичайний додатковий commit. Він замінює останній commit оновленою версією.
Якщо потрібно змінити лише повідомлення останнього commit, виконайте:
git commit --amend -m "Add complete README description"Команда створить оновлену версію останнього commit із новим повідомленням.
Припустімо, після commit ми створили файл, який мав потрапити до цього самого commit:
echo "MIT License" > LICENSEДодаємо файл до індексу:
git add LICENSEТепер додаємо підготовлені зміни до останнього commit:
git commit --amend --no-editПараметр --no-edit залишає поточне повідомлення commit без змін.
Послідовність можна записати повністю:
echo "MIT License" > LICENSE
git add LICENSE
git commit --amend --no-editУ результаті файл LICENSE буде частиною останнього commit, а новий окремий commit не з’явиться.
Змінимо README.md:
echo "Usage instructions will be added soon." >> README.mdДодаємо зміни до індексу:
git add README.mdОновлюємо останній commit:
git commit --amend --no-editТепер останній commit містить і попередні, і щойно додані зміни.
--amendКоманда git commit --amend враховує лише зміни, які вже додані до індексу.
Наприклад:
echo "Prepared change" >> README.md
git add README.md
echo "Unprepared change" >> README.md
git commit --amend --no-editДо оновленого commit потрапить рядок Prepared change, але не Unprepared change. Остання зміна залишиться у робочій директорії.
Щоб додати її пізніше, потрібно виконати:
git add README.mdПісля цього можна знову використати git commit --amend --no-edit або створити новий commit.
Список commit можна переглянути командою:
git log --onelineПараметр --oneline показує кожен commit в одному рядку, наприклад:
a1b2c3d Add complete README descriptionДля перевірки поточного стану файлів використовуйте:
git statusКорисна послідовність перед створенням commit:
git status
git add README.md
git status
git commit -m "Describe the change"
git statusТак можна переконатися, що:
зміни існують;
потрібні файли додані до індексу;
commit створено;
робоча директорія не містить випадкових незбережених змін.
--amend--amend зручно використовувати одразу після створення commit, коли ви помітили невелику помилку:
пропустили файл;
забули додати частину змін;
неправильно написали повідомлення.
Не слід без потреби змінювати commit, який уже використовують інші розробники. Після публікації commit у спільному віддаленому репозиторії його заміна може створити проблеми для інших учасників. На початку роботи з --amend безпечно використовувати його для ще не опублікованого останнього commit.
git addgit commit -m "Update README"Якщо зміни не додані до індексу, Git не включить їх до commit.
Правильна послідовність:
git add README.md
git commit -m "Update README"git add . без перевіркиКоманда git add . може додати всі зміни в поточній директорії, зокрема ті, які не планувалося фіксувати.
Перед commit перевіряйте:
git status--amend створить новий commit--amend замінює останній commit, а не додає наступний. Для звичайної нової порції роботи потрібно використовувати:
git commit -m "Describe the new change"--amend без додавання змінЯкщо нові зміни не додані до індексу, вони не потраплять до оновленого commit. Спочатку виконайте:
git add path/to/fileПотім:
git commit --amend --no-editgit add додає зміни до індексу.
git commit -m "Message" створює commit із підготовлених змін.
git status показує стан робочої директорії та індексу.
git commit --amend -m "New message" замінює останній commit і змінює його повідомлення.
git commit --amend --no-edit додає підготовлені зміни до останнього commit, зберігаючи його повідомлення.
Перед використанням --amend потрібно додати потрібні зміни до індексу.
--amend найкраще застосовувати до останнього commit, який ще не був опублікований для інших розробників.