Как отменить git pull? - PullRequest
       74

Как отменить git pull?

216 голосов
/ 28 апреля 2011

Я хотел бы отменить мой git pull из-за нежелательных коммитов на удаленном источнике, но я не знаю, к какой ревизии мне нужно вернуться обратно.

Как я могу просто вернуться ксостояние, прежде чем я сделал Git тянуть на удаленном источнике?

Ответы [ 5 ]

353 голосов
/ 28 апреля 2011

Или, чтобы сделать его более явным, чем другой ответ:

git pull 

упс

git reset --keep HEAD@{1}

Версии git старше 1.7.1 не имеют --keep. Если вы используете такую ​​версию, вы можете использовать --hard - но это опасная операция, поскольку она теряет все локальные изменения.


Комментатору

ORIG_HEAD - это предыдущее состояние HEAD, устанавливаемое командами, которые могут иметь опасное поведение, чтобы их было легко отменить. Теперь менее полезно использовать Git reflog: HEAD @ {1} примерно эквивалентно ORIG_HEAD (HEAD @ {1} всегда является последним значением HEAD, ORIG_HEAD - последним значением HEAD перед опасной операцией)

60 голосов
/ 28 апреля 2011

git reflog show должен показать вам историю HEAD. Вы можете использовать это, чтобы выяснить, где вы были до pull. Тогда вы можете reset ваш HEAD на этот коммит.

23 голосов
/ 01 сентября 2015

Это сработало для меня.

git reset --hard ORIG_HEAD 

Отмена слияния или вытягивания:

$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD       (4)

Оформить заказ: HEAD и ORIG_HEAD в Git , чтобы узнать больше.

15 голосов
/ 28 августа 2015

Найдите <SHA#> для коммита, который вы хотите использовать.Вы можете найти его в github или набрав git log или git reflog show в командной строке, а затем выполните git reset --hard <SHA#>

0 голосов
/ 07 апреля 2019

Из https://git -scm.com / docs / git-reset # Documentation / git-reset.txt-Undoamergeorpullinsideadirtyworkingtree

Отменить слияние или вытащить грязное рабочее дерево

$ git pull           (1)
Auto-merging nitfol
Merge made by recursive.
 nitfol               |   20 +++++----
 ...
$ git reset --merge ORIG_HEAD      (2)

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

После проверки результата слияния вы можете обнаружить, что изменение в другой ветке это неудовлетворительно. Бег git reset --hard ORIG_HEAD позволит вам вернуться туда, где вы были, но он откажется ваши локальные изменения, которые вы не хотите. git reset --merge держит ваши локальные изменения.

См. Также https://stackoverflow.com/a/30345382/621690

...