У нас был коммит, исправляющий проблему в нашей кодовой базе, которая была объединена с помощью запроса на включение. Коммит теперь нигде не найти. Я не знаю, как это было удалено, так как это было давно. Хорошо, что я могу видеть пулл-реквест, хэш коммита и разницу изменений в Stash. Если вся эта информация все еще существует в тайнике, как мне восстановить фиксацию?
Как восстановить утерянный коммит git из Atlassian Stash?
Ответы (2)
Если вы знаете хэш фиксации, вы можете проверить, существует ли фиксация в вашем локальном репозитории, просто вызвав git show
:
git show <commit-id>
Если коммит все еще существует, вы можете создать новую ветку с помощью git branch
git branch save-my-old-commit <commit-id>
Если коммит отсутствует в вашем локальном репозитории (что возможно, когда он недоступен из какой-либо ссылки), вы можете попытаться получить его непосредственно из удаленного репозитория, а затем проверить новую ветку:
git fetch origin <commit-id>
git branch save-my-old-commit FETCH_HEAD
Если исходная фиксация возникла из запроса на вытягивание, вы также можете попробовать извлечь из разветвленного репозитория (у меня нет опыта работы со Stash, поэтому я предполагаю, что он работает аналогично GitHub или Gitlab).
После того, как вы восстановили фиксацию в локальной ветке, вы можете действовать по своему усмотрению, например, выбирая фиксацию поверх текущей ветки.
У вас есть несколько вариантов (я перечисляю лишь некоторые из них, есть и другие варианты):
- Использование
git bisect
, чтобы узнать, когда (зафиксировать) он был "исчез" - Используйте
git reflog
на машине разработки, чтобы точно увидеть, что и когда было сделано (не было ли репо клонировано после этого момента) - заново создайте/переоткройте запрос на извлечение и снова объедините его.
Я рекомендую использовать git bisect
, чтобы узнать, когда он исчез.