ПОВЕРНЕНИЙ метод відхилити всі зміни:
Я знайшов це питання після того, як після прийняття злиття і забуваючи перевірку розвиватися відразу ж після цього. Ви здогадалися: я почав змінювати декілька файлів безпосередньо на master . D'Oh! Оскільки моя ситуація навряд чи унікальна (ми все це зробили, чи не; ->), я запропоную зворотний спосіб, яким я відкидав усі зміни, щоб майстер виглядав так, як знову розвивався .
Зробивши a, git diff
щоб побачити, які файли були змінені, та оцінив обсяг моєї помилки, я виконав:
git stash
git stash clear
Після першого внесення всіх змін, їх було видалено наступним чином. Усі зміни, внесені до файлів з помилкою в master, не відбулися і паритет відновлено.
Скажімо, я зараз хотів відновити ці зміни. Я можу це зробити. Перший крок - знайти хеш скрипту, який я щойно очистив / випав:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Дізнавшись хеш, я успішно відновив незапущені зміни за допомогою:
git stash apply hash-of-cleared-stash
Я не дуже хотів відновити ці зміни, просто хотів підтвердити, що можу отримати їх назад, тому я очистив їх ще раз.
Інший варіант - застосувати скриньку до іншої гілки , а не видаляти зміни. Таким чином, з точки зору очищення змін, що відбулися внаслідок роботи на неправильній гілці, stash
ви отримуєте багато гнучкості для відновлення після бу-бу.
Anyhoo, якщо ви хочете зворотного способу очищення змін у гілці, вищевикладене є менш небезпечним способом у цьому випадку використання.
git reset --hard HEAD^