Отменить 'git push -f' с машины, у которой нет клонированной истории

276
Zach

Итак, предыстория. Мой жесткий диск умер на машине A. Почти вся моя работа уже была перенесена на GitHub, и все было на этом фронте, кроме одного хранилища. Итак, осознав это, я узнал: «Эй, круто, я на самом деле только что отправил tar-файл с последними изменениями в Guy Guyerson». Итак, я получаю файл tar, а затем делаю что-то глупое / показываю, какой я нянь с GitHub. Вместо того, чтобы клонировать репозиторий, затем добавить обновленные файлы, а затем нажать кнопку, я думаю: я должен иметь возможность просто отправить эти файлы, нет проблем. Я ввожу init, добавляю пульт, а затем нажимаю, но это не работает ... потому что слияния странные. Я знаю, что слияния плохие, поэтому я решил принудительно обновить эти файлы и нажать -f. Тем не менее, так как это новый каталог .git,

Можно ли как-то вернуться к этому, учитывая, что текущая локальная версия не имеет памяти о том, что все предыдущие коммиты были? У меня есть начало хэша, которое он перезаписал, но у пульта сейчас нет памяти об этом коммите.

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

Спасибо Зак

0
В какой среде вы работаете? Это затмение ??? Джава ??? Dale 8 лет назад 0
Извините, я не понимаю, почему среда имеет значение, но я работаю с терминала в Linux (хотя исходная машина была Mac). Код был полностью основан на C ++. К счастью, единственным участником проекта является я, так что это не большая потеря, кроме тех часов работы, которые я вложил в макросы, которые я потерял прямо сейчас. Zach 8 лет назад 0
Вот почему это может иметь значение. У меня было что-то подобное со мной в Java с использованием Eclipse. У меня фактически были УДАЛЕННЫЕ файлы, которые не были сохранены. Имейте в виду, я знал файл, который был удален и где он был. Eclipse хранит историю этого файла, даже если он удален. Поэтому я снова создал файл как пустой файл, в котором он существовал до этого, а затем щелкнул правой кнопкой мыши по нему и посмотрел в историю на то, что было в нем. Затем я восстановил его из истории Eclipse. Вот почему среда может иметь значение. Dale 8 лет назад 0

1 ответ на вопрос

0
Zach

The online version of GitHub does keep a record of those old commits, I just didn't know how to access them. For any future readers: if you have the commit ID you accidentally overwrote you can access it like this:

https://github.com/userName/repoName/tree/commitNum

From there, you can use the Tree/Branch dropdown to create a new branch from that commit. This can then be cloned to a local directory and then you can merge, etc from there.

Похожие вопросы