2012-03-17 1 views

ответ

3
git reset --hard HEAD^ 

Эта команда сбрасывает ветвь на предыдущую фиксацию, то есть фиксацию перед фиксацией слияния, которая является той, которую вы хотите отменить. Ваша работа будет оставлена ​​нетронутой.

Помните, что все, что было сделано, все еще существует как свободные объекты, и вы всегда можете использовать git reflog, чтобы вернуться к любой версии, на которую указывал ранее HEAD. Вот почему так важно совершать часто с git, вы можете отменить все сделанные вами изменения с легкостью.

+1

Все эти ответы, используя 'git reset --hard_some local commit_', делают ваш репозиторий в порядке, но оставьте все совершает ошибку из-за неправильного удаленного репозитория в вашем локальном репозитории, поэтому ни один из них не является полным «отменой». git gc не удалит неправильные коммиты, потому что они находятся в вашем рефлоге (поскольку вы ссылались на них в последнее время). Я думаю, что они в конечном итоге истекут, но если вы хотите немедленно их убить, это требует более глубокой хирургии. – skierpage

+0

@skierpage Исправить. Комиты все еще там, болтаются, пока вы их не очистите. Существуют различные способы сделать это. Самый простой способ - повторное клонирование репозитория (если вы можете выбросить тот, который вы используете сейчас) – ralphtheninja

3

Один из способов сделать это

$ git reset --hard latest-good-commit-hash 

Использование git log --all (или более графически, используйте gitk --all), чтобы увидеть фиксации истории

3

Попробуйте git reflog. Reflog позволяет вам отменить практически любую операцию. Что-то вроде этого

git reset --hard [email protected]{1} 

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

+0

Спасибо! Я добавил и совершил, но не толкнул. то, что было добавлено и совершено, не будет преодолено этим сейчас? – Barka

+0

Правильно, если бы вы добавили и совершили то, что вы добавили и совершили, все равно будет после этого. –

+0

@ user277498, см. Также вывод 'git reflog', прежде чем вы выполните' reset'. Он содержит информацию о том, что на самом деле означает суффикс '@ {1}', не должно быть никакой магии :) –

Смежные вопросы