Я вернул фиксацию по ошибке — как восстановить изменения

#git #github

Вопрос:

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

 git push -f origin last_commit_before_changes:master  

Я не ожидал, что он внесет изменения локально, поэтому по ошибке я переписал все (включая мою резервную копию…..), и я еще не перешел в правильную ветку. Можно ли исправить эту глупую ошибку? Разница все еще где-то хранится? Это не отображается, когда я это делаю git log .

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

Комментарии:

1. Просто хочу отметить, что обычно безопаснее использовать git revert его для возврата изменений, если только нет конкретной причины, по которой вы также хотите удалить его из истории.

Ответ №1:

 git push -f origin last_commit_before_changes:master  

Этого будет достаточно: принудительно обновите удаленный пульт master с помощью локального филиала last_commit_before_changes .

Предполагая, что ваш местный мастер был в курсе последних событий, вы можете просто сделать:

 git push -f origin master:master  

Если ваш мастер отстал (так как вы работаете с другими), просто выполните эту команду и попросите всех коллег сделать это (обратите внимание, что выбора нет -f ).:

 git push origin master  

Это должно все восстановить.

Более сложный способ — проверить журналы с:

 git reflog  

И найдите там то, что было хэшем origin/master до сильного толчка.

Тогда это должно все исправить:

 git push -f origin lt;hash found in refloggt;:master  

Обратите внимание, что большинство команд git являются неразрушающими. Старые коммиты там просто скрыты для пользовательского интерфейса. Git сохраняет все в течение некоторого длительного периода или до тех пор, пока вы не принудите сбор мусора.