#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 сохраняет все в течение некоторого длительного периода или до тех пор, пока вы не принудите сбор мусора.