GIT ... возвращаясь - PullRequest
       2

GIT ... возвращаясь

0 голосов
/ 13 января 2012

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

Я использовал GIT Checkout HEAD ^

чтобы проверить это, но как подтолкнуть его сейчас? это говорит, что ветвь обновлена!

Любая помощь очень ценится! "" "

Ответы [ 3 ]

3 голосов
/ 13 января 2012

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

Если вы хотите, чтобы история показала, что фиксация никогда не существовала, вы можете удалить фиксацию с помощью git reset --hard HEAD^. (Обратите внимание, что при этом будут отменены любые изменения, внесенные вами в рабочий каталог. Затем вы можете нажать с флагом -f, чтобы принудительно удалить коммит из удаленного репозитория. Обратите внимание, что при этом другие могут столкнуться с проблемами, если они имеют извлек коммит, который вы удаляете. Что еще более важно, если кто-то нажал что-либо после вашего коммита, эти коммиты будут потеряны. Если вы не уверены, что кто-либо еще получил доступ к репо, первый вариант самый безопасный.

EDIT

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

2 голосов
/ 13 января 2012
git checkout

просто оформите старую версию.Это ничего не меняет.Таким образом, чтобы отменить коммит, вам нужно совершить противоположные изменения.Надеемся, что для этого

git revert *commit-id*

есть специальная команда. Поэтому, чтобы отменить последний тип фиксации

git revert HEAD

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

git cat-file -p HEAD

Определите номер требуемого коммита (первый или второй), а затем выполните

git revert -m 1 HEAD

или

git revert -m 2 HEAD
0 голосов
/ 13 января 2012

Сначала вы должны зафиксировать изменения.

Кроме того, если вы хотите отменить только один коммит, вы можете использовать git revert <commit> вместо git checkout.


Если вы просто сделали git checkout HEAD^, вам все равно нечего будет совершать;вы будете на "отдельной ветке".Если вы сделали что-то вроде git checkout HEAD^ -- ., вам придется зафиксировать поэтапные изменения перед нажатием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...