MyTetra Share
Делитесь знаниями!
Восстановить утраченный коммит в Git
Время создания: 17.01.2021 12:30
Автор: br0ke
Текстовые метки: git, vcs, restore, lost, commit, commits, restoring
Раздел: Информационные технологии - Git
Запись: and-semakin/mytetra_data/master/base/1610868609uz4gllrm9s/text.html на raw.githubusercontent.com

При неудачном ребейзе или при перемещении веток некоторые коммиты пропали из истории. Эти коммиты осталить в "подвешенном" состоянии (dangling state) и все ещё доступны для восстановления до тех пор, пока не будет запущен процесс сборки мусора (git gc).


Представим вот такую ситуацию:


$ git show-ref -h HEAD

7c61179cbe51c050c5520b4399f7b14eec943754 HEAD


$ git reset --hard HEAD^

HEAD is now at 39ba87b Fixing about and submit pages so they don't look stupid


$ git show-ref -h HEAD

39ba87bf28b5bb223feffafb59638f6f46908cac HEAD



HEAD переместился на один коммит назад и мы потеряли последний коммит и хотим его восстановить. Нам нужен sha хэш коммита, чтобы восстановить его назад. Git всё еще помнит про этот коммит, это видно по следующей команде:


$ git fsck --lost-found

[... some blobs omitted ...]

dangling commit 7c61179cbe51c050c5520b4399f7b14eec943754


Также можно найти утраченный коммит через reflog:


$ git reflog

39ba87b... HEAD@{0}: HEAD~1: updating HEAD

7c61179... HEAD@{1}: pull origin master: Fast forward

[... lots of other refs ...]


Так что теперь мы знаешь хэш утраченного коммита и можем вернуть его назад:


$ git merge 7c61179

Updating 39ba87b..7c61179

Fast forward

css/screen.css | 4 ++++

submit.html | 4 ++--

2 files changed, 6 insertions(+), 2 deletions(-)

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования