Сервер GitLab, где найти жестко удаленный неотправленный коммит

Сервер GitLab, где найти жестко удаленный неотправленный коммит

Моя операция push не удалась, так как мой коллега закоммитил одну строку в ту же ветку, над которой я работал, а я забыл спрятать свою, поэтому я попытался отменить коммит коллеги и скопировать его в свои изменения, таким образом, как я думал, существовал бы только исходящий коммит. Это не сработало так, как я хотел, поэтому я попытался сбросить его коммит, и я щелкнул правой кнопкой мыши по коммиту, а затем нажал Reset->Delete --Hard (в visual studio), что удалило все его и мои коммиты.

Я снова зафиксировал свои изменения, только не смог отправить их на сервер. Я нашел команду git reflog, но не уверен, смогу ли я использовать ее без использования десктопного клиента Git.

Есть ли способ найти мой невыложенный коммит с сервера с помощью SSH-клиента? Или мне просто все переписать? Около 50-100 строк кода потерялись.

РЕШЕНО:

Используйте меню Visual Studio Git в верхнем левом углу -> Открыть в командной строке, затем

git reflog 

затем

git cherry-pick <SHA-1> 

где SHA-1 — это голова ветви (например, HEAD@{1}), как описано в ссылке ниже в ответах пользователя user1686.

решение1

Либо git reflogили git fsck --unreachableкак описано вhttps://stackoverflow.com/questions/30035998/удаленная-ветка-неожиданно-git-в-визуальной-студииможно найти недавно утерянные коммиты.

Однако методы восстановления необходимо запускать в репозитории, где находятся эти коммиты.быливидимый ранее. Если коммит не был успешно отправлен, то его вообще не будет на сервере Git — единственное место, где он будет — это ваш локальный репозиторий Git в VS.

(Хотя в репозитории сервера также может быть «reflog», он будет обновляться только в случае успешной отправки. Например, SSH можно использовать для восстановления коммитов, которые были успешно отправлены, но были перезаписаны более поздним принудительным отправкой, но не тех, которые были отклонены сразу.)

Я нашел команду «git reflog», но не уверен, смогу ли использовать ее без использования десктопного клиента Git.

«git reflog» — это изИнструменты командной строки Git, которые обычно входят в комплект большинства настольных клиентов Git, но на самом деле не привязаны ни к одному приложению.

Вы уже используете клиент Git для настольного компьютера — Visual Studio, — который также устанавливает копию Git, поэтому вам будет достаточно перейти cdв исходный каталог и запустить его gitоттуда.

Связанный контент