Скасування комісії - це трохи страшно, якщо ви не знаєте, як це працює. Але насправді це надзвичайно просто, якщо ти розумієш.
Скажімо, у вас це є, де C - ваша HEAD, а (F) - стан ваших файлів.
(F)
A-B-C
↑
master
Ви хочете, щоб ядро здійснив C, і більше ніколи його не бачити і втратити всі зміни в локально модифікованих файлах . Ви робите це:
git reset --hard HEAD~1
Результат:
(F)
A-B
↑
master
Тепер Б - ГОЛОВА. Оскільки ви використовували --hard
, ваші файли повертаються до їх стану під час здійснення B.
Ах, але припустимо, вчинення C не було катастрофою, а лише трохи відключеним. Ви хочете скасувати виконання комісії, але збережіть зміни для невеликого редагування, перш ніж зробити це краще. Починаючи знову звідси, із C як вашого ГОЛА:
(F)
A-B-C
↑
master
Ви можете зробити це, залишивши --hard
:
git reset HEAD~1
У цьому випадку результат:
(F)
A-B-C
↑
master
В обох випадках HEAD - це лише покажчик на останню версію. Коли ви зробите це git reset HEAD~1
, ви скажете Git перемістити вказівник HEAD назад на один комікт. Але (якщо ви не використовуєте --hard
), ви залишаєте свої файли такими, якими вони були. Отже, тепер git status
показує зміни, які ви зареєстрували в C. Ви нічого не втратили!
Для найлегшого дотику ви навіть можете скасувати фіксацію, але залишити свої файли та індекс :
git reset --soft HEAD~1
Це не тільки залишає ваші файли в спокої, але навіть залишає ваш індекс в спокої. Коли ви це зробите git status
, ви побачите, що ті самі файли є в індексі, як і раніше. Насправді, одразу після цієї команди, ви могли б зробити, git commit
і ви повторили б той самий переклад, який ви мали.
І ще одне: припустимо, ви знищуєте команду, як у першому прикладі, але потім виявите, що вам це потрібно ? Жорстка удача, правда?
Ні, ще є спосіб повернути його. Введіть git reflog
і ви побачите список (часткових) фіксацій шас (тобто хешів), по яких ви переїхали. Знайдіть ви знищені комісії та зробіть це:
git checkout -b someNewBranchName shaYouDestroyed
Тепер ви воскресили це зобов'язання. Коміти насправді не руйнуються в Git протягом 90 днів, тому зазвичай ви можете повернутися та врятувати той, якого ви не хотіли позбутися.