Как я могу откатить плохие изменения в локальный репозиторий git? - PullRequest
3 голосов
/ 17 апреля 2011

Я новичок в Git и столкнулся с одной большой проблемой.А именно, как вернуть репозиторий обратно в хорошее состояние, если я что-то не так делаю.Я видел, как использовать «git revert» для внесения изменений, отменяющих предыдущие изменения, и я прочитал довольно много вопросов о стековом потоке и связанных с ним местах, но я не нашел простого способа просто сказать «поставить свой локальныйХранилище вернулось к тому, что было до того, как я сделал X ", где X может быть операцией фиксации, слияния или другой операции с репозиторием.

Длинная история:

Этот бит мне особенно тяжело сегодня, когда япытался настроить ветку поддерева для сторонней зависимости (Jasmine), следуя инструкциям в книге ProGit по Объединение поддеревьев .Я выполнил шаги и настроил локальный репозиторий с веткой, которая отслеживала удаленный репозиторий Jasmine.Затем я подключил это с помощью дерева чтения к подкаталогу в моем объекте, и все было хорошо.К сожалению, ветка Jasmine содержала ссылку на субмодуль на непубличный URL, и когда я попытался это исправить, я внес изменения (и изменения) в ветку, в которой я отслеживал удаленный репозиторий.Независимо от того, что я сделал, чтобы попытаться отменить эти коммиты / изменения, мои команды 'git push' больше не могли работать, потому что хранилище считало, что у меня есть изменения в коде Jasmine, и пыталось протолкнуть их обратно через общедоступный URL, который я отслеживал.

Резюме: Я облажался с частью своего репозитория и не мог понять, как вернуть его в первоначальное состояние, в котором он находился до того, как я выполнил команды, вызванные моим статусом git newbie.

Есть ли возможность откатить весь репозиторий несколькими коммитами / изменениями или мне просто нужно клонировать его снова и начать заново, когда это произойдет?

1 Ответ

6 голосов
/ 17 апреля 2011

Используйте git-reflog

git reflog

Найдите ревизию, к которой вы хотите вернуться, к

git reset HEAD@{n}

(заменив n на правильное число)

Возможноgit reset --hard после этого, если у вас нечистое дерево работы;будьте очень осторожны, поскольку эти не подлежат восстановлению)

...