У Git, як зробити відкат перебази, якщо ви не задоволені цим?
Git не має сухого запуску для перебазування. Якщо я зробив перебазу і ще не натиснув її, як мені повернутися до раніше, ніби цього ніколи не було?
У Git, як зробити відкат перебази, якщо ви не задоволені цим?
Git не має сухого запуску для перебазування. Якщо я зробив перебазу і ще не натиснув її, як мені повернутися до раніше, ніби цього ніколи не було?
Відповіді:
Ви можете використовувати релог, щоб знайти першу дію до початку перебази, а потім скинути - жорсткий назад до неї. напр
$ git reflog
b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...
$ git reset HEAD@{2} --hard
Тепер вам слід повернутися до початку перебазування.
Щоб знайти правильне місце для скидання, просто виберіть найближчий запис, який не починається з "перебазувати".
Якщо перебаза - це єдине, що ви зробили у гілці, тобто у вас немає невідправлених комітів / змін - тоді ви можете просто видалити локальну гілку за допомогою, git branch -Dа потім перевірити це ще раз:
$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch
Або для того ж ефекту ви можете скинути --hard до гілки початківця:
$ git reset --hard origin/my-branch
Якщо ви робили це, маючи інші незмінені коміти, тоді ви їх втратите. У цьому випадку просто скористайтеся підходом reflog вище, щоб повернутися до запису рефлог, де ви зробили коміти.
ORIG_HEADвихідне хеш-значення гілки, що перебазується. Тож замість того, щоб знайти число 2 для HEAD@{2}, ви можете просто використовувати ORIG_HEAD... але лише якщо ORIG_HEADце все ще не порушено. Набір команд Git встановлює його (rebase, am, reset і merge, за різних обставин).
Rebase зберігає резервну копію старого стану як ORIG_HEAD.
Таким чином, ви можете повернути останню базу даних, запустивши:
git reset --hard ORIG_HEAD