Пошук уроків, статей та іншого контенту
Виправите повідомлення коміту та додасте до нього пропущені зміни за допомогою git commit --amend.
git commit --amendКоманда git commit --amend змінює останній коміт поточної гілки.
Її використовують, коли потрібно:
виправити повідомлення останнього коміту;
додати до останнього коміту пропущені зміни;
одночасно змінити повідомлення та додати зміни.
--amendне створює ще один коміт. Git замінює останній коміт новою версією.
Це зручно під час локальної роботи, коли ви щойно створили коміт і помітили невелику помилку.
Припустімо, ви створили коміт із невдалим повідомленням:
git add README.md
git commit -m "оновив файл"Щоб змінити повідомлення останнього коміту, виконайте:
git commit --amend -m "Оновив README"Після цього останній коміт матиме нове повідомлення:
git log --oneline -1Можливий результат:
a1b2c3d Оновив READMEІдентифікатор коміту також може змінитися, оскільки Git створює нову версію коміту.
Іноді після створення коміту ви помічаєте, що забули додати файл або частину змін.
Спочатку перевірте стан репозиторію:
git statusДодайте пропущені зміни до індексу:
git add styles.cssПотім приєднайте їх до останнього коміту:
git commit --amend --no-editОпція --no-edit означає: залишити поточне повідомлення коміту без змін.
У результаті:
нові зміни потраплять до останнього коміту;
окремий додатковий коміт не створиться;
повідомлення останнього коміту залишиться таким самим.
Можна додати пропущені зміни та одразу змінити повідомлення:
git add styles.css
git commit --amend -m "Оновив стилі сторінки"У цьому випадку Git:
візьме зміни, додані через git add;
додасть їх до останнього коміту;
замінить повідомлення коміту на Оновив стилі сторінки.
Нижче наведено послідовність команд для демонстрації. Вона створює тимчасовий репозиторій, робить помилковий коміт, а потім виправляє його.
mkdir amend-example
cd amend-example
git init
printf "# Проєкт\n" > README.md
git add README.md
git commit -m "додав файл"
printf "\nОпис проєкту\n" >> README.md
# Додаємо пропущені зміни до останнього коміту та виправляємо повідомлення
git add README.md
git commit --amend -m "Додав опис проєкту"
git log --oneline -1Після виконання останньої команди повідомленням останнього коміту буде:
Додав опис проєктуФайл README.md міститиме і заголовок, і опис, але всі ці зміни перебуватимуть в одному коміті.
--amend і новим комітомБез --amend пропущені зміни створили б окремий коміт:
git add styles.css
git commit -m "Додав пропущені стилі"Історія тоді могла б виглядати так:
b2c3d4e Додав пропущені стилі
a1b2c3d Оновив стилі сторінкиЯкщо ж використати:
git add styles.css
git commit --amend --no-editІсторія залишиться з одним комітом:
c3d4e5f Оновив стилі сторінкиТак історія буде компактнішою, а один завершений крок роботи описуватиметься одним комітом.
git commit --amend додає лише ті зміни, які вже потрапили до індексу через git add.
Наприклад:
git commit --amend --no-editне додасть автоматично всі незбережені зміни з робочої директорії.
Правильна послідовність:
git status
git add файл
git commit --amend --no-editЯкщо потрібно додати кілька файлів:
git add README.md styles.css
git commit --amend --no-editПеред виконанням команди корисно перевірити, що саме підготовлено до коміту:
git diff --cachedЯкщо виконати команду без -m і без --no-edit:
git commit --amendGit відкриє текстовий редактор. У ньому можна змінити повідомлення коміту, зберегти файл і закрити редактор.
Якщо повідомлення вже правильне, але потрібно лише додати підготовлені зміни, зручніше використати:
git commit --amend --no-editgit addКоманда:
git commit --amend --no-editне включить зміни, які залишилися лише у робочій директорії.
Виправлення:
git add файл
git commit --amend --no-editПеред amend перевірте підготовлені зміни:
git diff --cachedЯкщо файл не потрібно додавати до коміту, приберіть його з індексу:
git restore --staged файлПісля цього повторіть git commit --amend.
git commit --amend працює лише з останнім комітом поточної гілки. Він не призначений для редагування довільного старого коміту.
Оскільки --amend замінює коміт, він змінює історію Git. Якщо коміт уже було опубліковано у спільному віддаленому репозиторії, така зміна може створити проблеми для інших учасників.
Для початку використовуйте --amend переважно з локальними комітами, які ще не були передані іншим.
git commit --amend змінює останній коміт.
Для зміни повідомлення використовуйте:
git commit --amend -m "Нове повідомлення"Щоб додати підготовлені зміни, але залишити повідомлення без змін, використовуйте:
git add файл
git commit --amend --no-editПеред amend перевіряйте підготовлені зміни командою git diff --cached.
Команда працює лише з останнім комітом поточної гілки.
Не змінюйте опубліковані коміти без узгодження з іншими учасниками команди.