Как я могу переключить свой репозиторий git на конкретный коммит - PullRequest
149 голосов
/ 09 февраля 2011

В моем git-репозитории я сделал 5 коммитов, как показано ниже в моем журнале git:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc
Author: Michael 
Date:   Fri Feb 4 15:26:38 2011 -0800

commit b688d46f55db1bc304f7f689a065331fc1715079
Author: Michael
Date:   Mon Jan 31 10:37:42 2011 -0800

commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda
Author: Michael
Date:   Wed Jan 26 13:33:17 2011 -0800

commit 4771e26619b9acba3f059b491c6c6d70115e696c
Author: Michael 
Date:   Wed Jan 26 11:16:51 2011 -0800

commit 6e559cb951b9bfa14243b925c1972a1bd2586d59
Author: Michael 
Date:   Fri Jan 21 11:42:27 2011 -0800

Как я могу откатить мои предыдущие 4 коммита локально в ветке?Другими словами, как я могу создать ветку без моих последних 4 коммитов (предположим, у меня есть SHA этого коммита из git log)?

Ответы [ 4 ]

183 голосов
/ 09 февраля 2011

Чтобы создать новую ветку (локально):

  • С хэшем коммита (или его частью)

    git checkout -b new_branch 6e559cb
    
  • иличтобы вернуться к 4 коммитам из HEAD

    git checkout -b new_branch HEAD~4
    

Как только ваша новая ветка создана (локально), вы можете захотеть повторить это изменение на пульте с тем же именем: Как я могу перенести свои изменения в удаленную ветку


Для Отказ от трех последних коммитов , см. Ответ Лунариорна ниже .


Для перемещения текущей ветки HEAD в указанный коммит без создания новой ветки , см. Ответ Арпиагара ниже .

100 голосов
/ 22 июня 2015

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

 git checkout <commit_hash>

Он отсоединяет и указывает HEAD на указанную фиксацию и избавляет от создания новой ветки, когда пользователь просто хочет просмотреть состояние ветки до этой конкретной фиксации.


Тогда вы можете захотеть вернуться к последнему коммиту и исправить отсоединенную ГОЛОВУ:

Исправить отсоединенную головку Git?

56 голосов
/ 09 февраля 2011

Если вы хотите выбросить последние четыре коммита, используйте:

git reset --hard HEAD^^^^

Кроме того, вы можете указать хеш коммита, в который вы хотите сбросить:

git reset --hard 6e559cb
16 голосов
/ 09 февраля 2011

Просто извлеките коммит, с которого вы хотите начать новую ветку, и создайте новую ветку

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