Инструмент который помогает решать неприятные ситуации случившиеся в локальном репозитории.
Гит не удаляет никакой комит, он мы можем просто потерять его во всег цепочках истории(бранчах).
Именно git reflog который пишет все наши действия поможет нам выкрутиться из пикантной ситуации.
Что особо приятно, что reflog маркатет каждый комит в соответвии с его последовательностью, поэтому мы можем даже не заглядывать в него, если возможно посчитать на пальцах какой посчету он от поточного комита(перехода на комит), в нашем случает:
Другими словами reflog логирует перемещение каретки HEAD, это лог для нас очень полезен.
Гит не удаляет никакой комит, он мы можем просто потерять его во всег цепочках истории(бранчах).
Именно git reflog который пишет все наши действия поможет нам выкрутиться из пикантной ситуации.
Ситуация №1. Поспешный git reset --hard
$ git reflog
43c13e7 HEAD@{0}: reset: moving to 43c1
1ec62107 HEAD@{1}: commit: Add third section
1ec62107 HEAD@{2}: commit: Add second section
1ec62107 HEAD@{3}: commit (initial): Add first section
Вот из этой истотрии мы увидим хеш коммита, который мы потеряли благодаря поспешному git reset --hard 43c1
Что особо приятно, что reflog маркатет каждый комит в соответвии с его последовательностью, поэтому мы можем даже не заглядывать в него, если возможно посчитать на пальцах какой посчету он от поточного комита(перехода на комит), в нашем случает:
$ git reset --hard HEAD@{1}
Другими словами reflog логирует перемещение каретки HEAD, это лог для нас очень полезен.
Ситуация №2. Удаление силой бранча, который все-таки содержал полезные изменения.
Восстановление бранчи состоит в том, что нам нужно сослаться на комит, который был HEAD в удаленной бранче. Ведь имея конкретный комит мы имеет весь хвост истории предшевствовавший ему - а это и есть ни что иное как бранч.
Тут нам приходит на помошь git log. Да по умолчанию он выводит историю поточной бранчи. Но указав ему директиву рефлога, мы увидим историю всех локальных комитов просто по привязке во временном диапазоне, то есть мы увидим историю перемещения каретки HEAD, а это и деланье новых комитов и переход из бранчи на бранчу.
$ git log --walk-reflogs
commit b7a5df73f03de5bdf534f889d8d2c0a9bf89b1e0
Reflog: HEAD@{0} (Jane <jane example.com="">)
Reflog message: checkout: moving from aviary to master
Author: Jane <jane example.com="">
Add clownfish.
commit 2805df73fsdfgdbdf534f889aassRta9bf89b1e0
Reflog: HEAD@{1} (Jane <jane example.com="">)
Reflog message: commit: Add birds.
Author: Jane <jane example.com="">
Add birds.
Тут мы можем найти хеш код спасительного коммита, или же увидеть его позицию в поточном рефлоге и воспользоваться ею
Комментариев нет:
Отправить комментарий