logo

Як git скасувати останній комміт

Як інженер-програміст чи веб-розробник, нам може знадобитися надіслати багато комітів у наш репозиторій Git.

Однак є деякі інші випадки, коли ми хочемо закріпити файли, які не будуть передані в наше сховище Git. Перед видачею будь-якого коміту іноді ми можемо забажати внести деякі додаткові зміни.

Як результат, ми вимагаємо скасувати останній комміт через наше сховище Git. Ми побачимо, як ми можемо скасувати останній комміт у цій темі.

Скасувати останню фіксацію Git разом зі скиданням

Ми можемо легко скасувати останню фіксацію git, виконавши команду, тобто 'git reset' разом із опцією, тобто '-soft' який захистить усі зміни, внесені до наших файлів. Ми повинні описати фіксацію для скасування, тобто «HEAD~1».

Останній коміт git буде видалено з нашого репозиторію Git.

 $ git reset --soft HEAD~1 

У цьому позначенні

'ГОЛОВА~1': Це означає, що ми хочемо скинути цей HEAD до одного коміту перед тим, як всередині історії журналу.

довгий до int java
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Яким буде ефект від наведеної вище команди?

Команда, тобто 'git reset' можна розглядати як команду, тобто протилежну до 'git add' , фактично вставляючи файли в індекс Git.

Якщо описувати варіант '-soft' , Git взагалі не змінюватиме файли в індексі чи каталозі виконання.

Наприклад, ми включили два файли в наш останній комміт, хоча ми хочемо внести деякі зміни в цей файл.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

У результаті подамо заявку 'git reset' разом із опцією '-soft' щоб скасувати останній комміт, а також реалізувати деякі додаткові зміни.

 $ git reset --soft HEAD~1 $ git status 

Над галуззю господар

Наша гілка випереджає master/origin на комміт 1 (застосуйте git push для публікації наших локальних комітів).

Зміни, які необхідно внести:

 (apply 'git restore --staged …' to unstage) 

новий файл: файл1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Як ми бачимо, файл усе ще залишається в індексі через скасування останнього коміту (зміни, які потрібно внести), хоча комміт було видалено.

Ми успішно виконали останню фіксацію в нашому репозиторії.

dateformat.format java

Жорстке скидання Git

У наведеному вище розділі ми можемо вважати, що ми можемо легко скасувати останній комміт і зберегти зміни виконано для будь-якого файлу всередині індексу. Але в деяких ситуаціях ми просто хочемо видалити зміни та коміти, внесені до будь-якого файлу.

Це мета опціону, тобто '-важкий' .

Щоб скасувати останню фіксацію та видалити всі зміни в індексі та каталозі, виконайте команду, тобто 'git reset' разом із опцією, тобто '-важкий' і опишіть фіксацію перед командою HEAD ('ГОЛОВА~1') .

 $ git reset --hard HEAD~1 

Усі коміти та зміни буде видалено з індексу та каталогу після використання '--важкий' команда. Тому ми повинні бути обережними.

Наприклад, ми зафіксували будь-який новий файл під назвою «file1» до нашого сховища Git.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Тепер припустімо, що ми хочемо скасувати останній комміт і видалити всі зміни.

aws червоне зміщення
 $ git reset --hard HEAD~1 

Тепер HEAD перебуває на другому коміті 90f8bb1

Тепер давайте перевіримо стан нашого сховища git.

 $ git status 

Над галуззю господар

Наша гілка є сучасною з master/origin (застосуйте команду git push для публікації наших локальних комітів).

string.valueof

Тепер немає нічого для фіксації, і робоче дерево чисте.

Змішане скидання Git коміту

Зберігайте зміни в нашому робочому каталозі, однак НЕ в індексі. Ми повинні застосувати команду, тобто ., 'git reset' разом із опцією, тобто '-змішаний' . Після цієї команди ми повинні просто додати 'HEAD~1' до останнього коміту.

 $ git reset --mixed HEAD~1 

Наприклад, ми включили будь-який файл під назвою «file1» до будь-якого коміту, який ми вимагаємо скасувати.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Просто ми виконуємо команду, тобто 'git reset' разом із опцією, тобто '-змішаний' для скасування останнього коміту.

В результаті, '-змішаний' команда є a 'мікс' серед жорсткого та м’якого скидання, тому його назва.

Над галуззю господар

Наша гілка випереджає master/origin на комміт 1 (застосуйте git push для публікації наших локальних комітів).

Невідстежувані файли: (застосуйте 'git add ...', щоб додати всередину того, що буде фіксовано)

 file1 

Нічого не включено для фіксації, але файли, які не відстежуються, присутні (застосуйте «git track» для відстеження).

Отже, ми виявили іншу практику повернення останнього коміту шляхом збереження змін, внесених у файли.

string.replaceall у java

Скасувати останнє закріплення разом із поверненням

Застосуйте команду, тобто 'git revert' і опишіть фіксацію, яку потрібно повернути, тобто 'ГОЛОВА' до коміту історії для повернення останнього коміту Git.

 $ git revert HEAD 

Команда 'git revert' відрізняється від команди 'git reset', оскільки вона може записувати будь-який новий коміт разом із деякими модифікаціями, визначеними шляхом дегенерації останнього коміту.

Ми можемо описати 'HEAD~1' за допомогою команди 'git reset', тому що ця команда reset встановить будь-яке нове місце HEAD, дегенеруючи описаний комміт.

Як наслідок, ми знову внесемо зміни в деякі файли для повернення та залишимо їх невиконаними. Ми зафіксували будь-який новий файл для нашого сховища Git, але ми хочемо дегенерувати цей комміт.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Якщо виконати команду «git revert», Git відкриє наш текстовий редактор для автоматичного внесення змін.

Як git скасувати останній комміт

Нове повідомлення з’явиться разом із новим хешем коміту, коли ми завершимо виконання повідомлення коміту.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Якщо нам знову доведеться перевірити нашу історію Git, ми можемо помітити новий комміт, доданий для скасування останнього коміту через наш репозиторій.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit