Восстановить потерянные данные мерзавца? - PullRequest
0 голосов
/ 21 марта 2019

После слияния ветвей функций в локальной (с мастером) и отправки на удаленную, уже завершенная функция теряется от главной (удаленной). Есть ли способ восстановить потерянные файлы?

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Вы можете вернуться в историю Git. Э.Г.

git reset --soft HEAD~N

где N - число последних коммитов, которые вы хотите отменить. Параметр --soft будет сохранять изменения удаленного репо локально на сцене. Вы также можете использовать параметр --hard, чтобы полностью удалить изменения (вы всегда можете извлечь их из удаленного репо).

Другой вариант - просмотреть ваш gitlog с помощью команды git log, найти фиксацию, которая указывает на состояние до того, как было сделано решающее изменение (вы можете использовать grep для фильтрации сообщений фиксации), и проверить эту фиксацию с помощью команды.

git checkout COMMIT_HASH

где COMMIT_HASH - ваш хеш коммита

Вернувшись в историю, попытайтесь найти ваш потерянный код. Затем вы можете либо скопировать его куда-нибудь, выполнить git reset --hard, git pull, вставить его в последний источник и выполнить новый коммит, либо попытаться использовать функцию выбора вишни в git.

Обратите внимание, , предложенные решения будут возможны, только если недавние толчки не переопределяют историю репо (это может произойти в случае пуша с параметром --force) или они произошли, но у вас нет еще не потянул их

Кроме того, помните, что git распространяется VCS , поэтому в случае толчка с силой и вытягиванием вы можете попытаться найти коллегу из вашей команды, который еще не выполнял вытягивание и восстановить историю из его местного репо.

1 голос
/ 21 марта 2019

Ситуация не ясна до того, как вы увидели дерево или команды слияния.

Но вы всегда можете использовать git reflog в локальном репозитории, который выполняет слияния.Вы увидите версию хранилища до слияния.Предполагая, что функция / файлы находятся на ветке или их легко добавить в отдельную ветку;оттуда вы можете просто создать новую ветку функций и передать ее на удаленное устройство.При слиянии вновь созданной ветви обратно в master, возможно, она будет делать то же самое.Так что лучше перебазировать новую ветку поверх мастер

...