Как вернуть репозиторий Git на предыдущую фиксацию?

Как мне вернуться из текущего состояния в моментальный снимок, сделанный на определенной фиксации?

Если я делаю git log, я получаю следующий вывод:

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

Как вернуться к фиксации с 3 ноября, т.е. совершить 0d1d7fc?

5189
задан Crazy Serb 06 нояб. '10 в 19:58
источник поделиться

34 ответов

  • 1
  • 2

Это сильно зависит от того, что вы подразумеваете под "revert".

Временно переключитесь на другую фиксацию

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

# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32

Или, если вы хотите совершить фиксацию, пока вы там, сделайте новую ветку, пока вы на ней:

git checkout -b old-state 0d1d7fc32

Чтобы вернуться к тому месту, где вы были, просто просмотрите ветку, в которой вы были снова. (Если вы внесли изменения, как всегда, при переключении ветвей, вам придётся иметь дело с ними по мере необходимости. Вы могли бы reset выбросить их, вы могли бы спрятать, проверить, прикрыть поп, чтобы взять их с собой; мог бы передать их ветке там, если вам нужна ветка.)

Жесткое удаление неопубликованных коммитов

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

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.

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

Отменить опубликованные коммиты с новыми коммитами

С другой стороны, если вы опубликовали эту работу, вы, вероятно, не захотите в reset ветвь, так как это эффективно переписывает историю. В этом случае вы действительно можете вернуть фиксации. С Git возврат имеет очень специфическое значение: создайте фиксацию с помощью обратного патча, чтобы отменить ее. Таким образом, вы не переписываете какую-либо историю.

# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053

# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD

#Similarly, you can revert a range of commits using commit hashes:
git revert a867b4af..0766c053 

# Reverting a merge commit
git revert -m 1 <merge_commit_sha>

# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .

# Then commit. Be sure and write a good message describing what you just did
git commit

git-revert manpage действительно покрывает много этого в своем описании. Еще одна полезная ссылка: это сообщение git -scm.com, обсуждающее git -revert.

Если вы решите, что в конце концов не хотите возвращаться, вы можете вернуться назад (как описано здесь) или reset назад до возврата (см. предыдущий раздел).

Вы также можете найти этот ответ полезным в этом случае:
Как переместить HEAD обратно в предыдущее место? (Отдельная головка)

6947
ответ дан Jefromi 06 нояб. '10 в 20:04
источник поделиться

Возврат рабочей копии к последней фиксации

Чтобы вернуться к предыдущему фиксации, игнорируя любые изменения:

git reset --hard HEAD

где HEAD является последним фиксатором в вашей текущей ветке

Возврат рабочей копии к более старой фиксации

Чтобы вернуться к фиксации, который больше, чем последняя фиксация:

# Resets index to former commit; replace '56e05fced' with your commit code
git reset 56e05fced 

# Moves pointer back to previous HEAD
git reset --soft HEAD@{1}

git commit -m "Revert to 56e05fced"

# Updates working copy to reflect the new commit
git reset --hard

Кредиты переходят к аналогичному вопросу о переполнении стека, Возврат к фиксации с помощью SHA-хеша в Git?.

1090
ответ дан boulder_ruby 21 авг. '12 в 9:19
источник поделиться

Здесь много сложных и опасных ответов, но на самом деле это легко:

git revert --no-commit 0766c053..HEAD
git commit

Это вернет все, начиная с HEAD, до хэша commit, что означает, что оно воссоздает это состояние фиксации в рабочем дереве, как если бы каждая фиксация с тех пор была возвращена. Затем вы можете зафиксировать текущее дерево, и оно создаст совершенно новую фиксацию, существенно эквивалентную фиксации, которую вы "вернули".

(Флаг --no-commit позволяет git возвращать все коммиты одновременно - в противном случае вам будет предложено отправить сообщение для каждой фиксации в диапазоне, засоряя вашу историю ненужными новыми коммитами.)

Это безопасный и простой способ отката в предыдущее состояние. Никакая история не уничтожается, поэтому ее можно использовать для коммитов, которые уже были опубликованы.

1014
ответ дан Yarin 12 февр. '14 в 7:18
источник поделиться

Лучшим вариантом для меня и, возможно, для других является опция Git reset:

git reset --hard <commidId> && git clean -f

Это был лучший вариант для меня! Это просто, быстро и эффективно!


Примечание: Как уже упоминалось в комментариях, не делайте этого, если вы делитесь своей веткой с другими людьми, у которых есть копии старых коммитов

Также из комментариев, если вы хотите использовать менее "ballzy" метод, вы можете использовать

git clean -i

124
ответ дан Pogrindis 22 окт. '13 в 14:53
источник поделиться

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

git add . && git checkout master -f

Краткое описание:

  • Он не будет создавать никаких коммитов, как это делает git revert.
  • Он не будет отсоединять ваш ГОЛОВ, как git checkout <commithashcode>.
  • Он перекроет все ваши локальные изменения и удалит все добавленные файлы с момента последнего фиксации в ветке.
  • Он работает только с именами ветвей, поэтому вы можете вернуться только к последнему фиксации в ветке таким образом.

Я нашел гораздо более удобный и простой способ достижения результатов, приведенных выше:

git add . && git reset --hard HEAD

где HEAD указывает на последнюю фиксацию в вашей текущей ветке.

Это тот же код, что и boulder_ruby, но я добавил git add . до git reset --hard HEAD, чтобы стереть все новые файлы, созданные с момента последнего коммита, так как это то, что большинство людей ожидают, когда вернусь к последней фиксации.

87
ответ дан Roman Minenok 29 июля '12 в 14:01
источник поделиться

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

git reset --soft HEAD~1
  • --soft указывает, что незаблокированные файлы должны быть сохранены как рабочие файлы, противоположные --hard, которые отбрасывают их.
  • HEAD~1 - последняя фиксация. Если вы хотите откат 3 фиксации, вы можете использовать HEAD~3. Если вы хотите откат к определенному номеру ревизии, вы также можете сделать это, используя свой SHA-хэш.

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

Источник: http://nakkaya.com/2009/09/24/git-delete-last-commit/

77
ответ дан Stephen Ostermiller 04 марта '14 в 20:25
источник поделиться

Перед ответом добавьте некоторый фон, объяснив, что это за HEAD.

First of all what is HEAD?

HEAD - это просто ссылка на текущую фиксацию (последнюю) в текущей ветке.
В любой момент времени может быть только один HEAD. (исключая git worktree)

Содержимое HEAD хранится внутри .git/HEAD и содержит 40 байтов SHA-1 текущей фиксации.


detached HEAD

Если вы не используете последнюю фиксацию - это означает, что HEAD указывает на предыдущую фиксацию в истории, ее называют detached HEAD.

введите описание изображения здесь

В командной строке он будет выглядеть так: SHA-1 вместо имени ветки, так как HEAD не указывает на кончик текущей ветки

введите описание изображения здесь


Несколько вариантов восстановления после отсоединенной головки:


git checkout

git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back

Это проверит новую ветвь, указывающую на требуемую фиксацию.
Эта команда проверит чек на коммит.
На этом этапе вы можете создать ветку и начать работу с этой точки.

# Checkout a given commit. 
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>

# create a new branch forked to the given commit
git checkout -b <branch name>

git reflog

Вы всегда можете использовать reflog.
git reflog отобразит любое изменение, которое обновило HEAD и проверив нужную запись reflog, установит HEAD обратно на эту фиксацию.

Каждый раз, когда HEAD изменяется, в reflog

появится новая запись,
git reflog
git checkout HEAD@{...}

Это вернет вас к вашему желаемому фиксации

введите описание изображения здесь


git reset HEAD --hard <commit_id>

"Верните свою голову назад к желаемому фиксации.

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.
  • Примечание: (Поскольку Git 2.7)
    вы также можете использовать git rebase --no-autostash.

Эта схема иллюстрирует, какая команда выполняет что.
Как вы можете видеть там reset && checkout изменить HEAD.

введите описание изображения здесь

64
ответ дан CodeWizard 06 февр. '15 в 0:56
источник поделиться

Вы можете сделать это с помощью следующих двух команд:

git reset --hard [previous Commit SHA id here]
git push origin [branch Name] -f

Он удалит предыдущую фиксацию Git.

Если вы хотите сохранить свои изменения, вы также можете использовать:

git reset --soft [previous Commit SHA id here]

Затем он сохранит ваши изменения.

63
ответ дан kiran boghra 12 дек. '14 в 9:52
источник поделиться

Скажем, у вас есть следующие коммиты в текстовом файле с именем ~/commits-to-revert.txt (я использовал git log --pretty=oneline для их получения)

fe60adeba6436ed8f4cc5f5c0b20df7ac9d93219
0c27ecfdab3cbb08a448659aa61764ad80533a1b
f85007f35a23a7f29fa14b3b47c8b2ef3803d542
e9ec660ba9c06317888f901e3a5ad833d4963283
6a80768d44ccc2107ce410c4e28c7147b382cd8f
9cf6c21f5adfac3732c76c1194bbe6a330fb83e3
fff2336bf8690fbfb2b4890a96549dc58bf548a5
1f7082f3f52880cb49bc37c40531fc478823b4f5
e9b317d36a9d1db88bd34831a32de327244df36a
f6ea0e7208cf22fba17952fb162a01afb26de806
137a681351037a2204f088a8d8f0db6e1f9179ca

Создайте Bash оболочку script для возврата каждого из них:

#!/bin/bash
cd /path/to/working/copy
for i in `cat ~/commits-to-revert.txt`
do
    git revert $i --no-commit
done

Это возвращает все обратно в предыдущее состояние, включая создание файлов и каталогов, а также удаляет их, передает их в вашу ветку и сохраняет историю, но вы вернули ее обратно в ту же структуру. Почему Git не имеет git revert --to <hash> вне меня.

47
ответ дан Lance Caraccioli 14 окт. '11 в 0:51
источник поделиться

Дополнительные альтернативы решениям Jefromi

Jefromi solutions, безусловно, лучшие, и вы обязательно должны их использовать. Однако, для полноты, я также хотел показать эти другие альтернативные решения, которые также могут быть использованы для возврата фиксации (в том смысле, что вы создаете новый коммит, который отменяет изменения в предыдущем commit как это делает git revert).

Чтобы быть ясными, эти альтернативы - это не лучший способ вернуть фиксации, решения Jefromi, но я просто хочу указать что вы также можете использовать эти другие методы для достижения того же уровня, что и git revert.

Альтернатива 1: Жесткий и мягкий сброс

Это очень немного измененная версия решения Charles Bailey для Вернуть фиксацию SHA-хешем в Git?:

# Reset the index to the desired commit
git reset --hard <commit>

# Move the branch pointer back to the previous HEAD
git reset --soft HEAD@{1}

# Commit the changes
git commit -m "Revert to <commit>"

В основном это работает, используя тот факт, что мягкие сбросы оставят состояние предыдущего фиксации, поставленного в области index/staging-area, которую вы затем можете зафиксировать.

Альтернатива 2: Удалите текущее дерево и замените его новым

Это решение исходит из svick-решения для Checkout old commit и делает его новым фиксатором:

git rm -r .
git checkout <commit> .
git commit

Аналогично альтернативе # 1, это воспроизводит состояние <commit> в текущей рабочей копии. Сначала нужно сделать git rm, потому что git checkout не удалит файлы, добавленные с <commit>.

43
ответ дан user456814 29 июня '14 в 20:51
источник поделиться

Вот гораздо более простой способ вернуться к предыдущему фиксации (и иметь его в неуправляемом состоянии, делать с ним все, что вам нравится):

git reset HEAD~1

Итак, нет необходимости в фиксации идентификаторов и т.д.:)

40
ответ дан Paul Walczewski 29 февр. '16 в 11:40
источник поделиться

Предполагая, что вы говорите о хозяине и в соответствующем филиале (это говорит о том, что это может быть любая рабочая ветка, о которой вы беспокоитесь):

# Revert local master branch to November 3rd commit ID
git reset --hard 0d1d7fc32e5a947fbd92ee598033d85bfc445a50

# Revert remote master branch to November 3rd commit ID
git push -f origin 0d1d7fc32e5a947fbd92ee598033d85bfc445a50:master

Я нашел ответ из сообщения в блоге Удалить удаленный репозиторий Git для определенного коммита.

36
ответ дан markreyes 10 мая '16 в 20:21
источник поделиться

Существует команда (не часть ядра Git, но она находится в пакете git-extras) специально для возврата и выполнения старых коммитов:

git back

На странице man она также может использоваться как таковая:

# Remove the latest three commits
git back 3
26
ответ дан Shadow Creeper 08 авг. '13 в 21:30
источник поделиться

После всех изменений, когда вы нажимаете все эти команды, вам, возможно, придется использовать:

git push -f ...

И не только git push.

25
ответ дан sivi 05 сент. '13 в 17:03
источник поделиться

ОК, возврат к предыдущему фиксации в git довольно прост...

Верните назад , не сохраняя изменения:

git reset --hard <commit>

Верните назад с сохранением изменений:

git reset --soft <commit>

Объясните:, используя git reset, вы можете reset указать определенное состояние, которое обычно используется с хешем фиксации, как вы видите выше.

Но, как вы видите, разница заключается в использовании двух флагов --soft и --hard, по умолчанию git reset с использованием флага --soft, но это хорошая практика, всегда использующая флаг, я объясняю все флаги:


- мягкий

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


- жесткий

Будьте осторожны с этим флагом, он сбрасывает рабочее дерево и все изменения в отслеживаемые файлы, и все будет позади!


Я также создал изображение ниже, которое может произойти в реальной жизни, работая с git:

git reset для фиксации

23
ответ дан Alireza 20 июля '17 в 18:55
источник поделиться

Выберите требуемый фиксатор и проверьте его

git show HEAD
git show HEAD~1
git show HEAD~2 

пока не получите требуемую фиксацию. Чтобы заставить HEAD указывать на это, do

git reset --hard HEAD~1

или git reset --hard HEAD~2 или что-то еще.

22
ответ дан tonythomas01 26 февр. '14 в 15:52
источник поделиться

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

git add -A .
git reset --hard HEAD

Просто git reset --hard HEAD избавится от изменений, но он не избавится от "новых" файлов. В их случае они случайно перетащили важную папку где-то случайную, и все эти файлы обрабатывались как новые с помощью Git, поэтому reset --hard не исправил ее. Запустив git add -A . заранее, он явно отслеживал их все с помощью Git, который был уничтожен с помощью reset.

16
ответ дан Chris Moschini 11 окт. '15 в 3:10
источник поделиться

Чтобы сохранить изменения от предыдущей фиксации в HEAD и перейти к предыдущей фиксации, выполните:

git reset <SHA>

Если изменения не требуются от предыдущей фиксации к HEAD и просто отмените все изменения, выполните следующие действия:

git reset --hard <SHA>
16
ответ дан Vishnu Atrai 28 июля '15 в 11:35
источник поделиться

Я считаю, что некоторые люди могут прийти к этому вопросу, желая знать, как откат совершил те изменения, которые они совершили в своем хозяине, - то есть выбросить все и вернуться к происхождению/хозяину, и в этом случае сделайте следующее:

git reset --hard origin/master

https://superuser.com/questions/273172/how-to-reset-master-to-origin-master

14
ответ дан nevster 05 февр. '15 в 4:28
источник поделиться

Это еще один способ прямого reset для недавнего фиксации

git stash
git stash clear

Он напрямую очищает все изменения, которые вы делали с момента последнего коммита.

PS: У него небольшая проблема; он также удаляет все недавно сохраненные изменения тайника. Я думаю, в большинстве случаев это не имеет значения.

14
ответ дан Point Networks 05 мая '16 в 14:43
источник поделиться

Возврат к последним фиксации и игнорирование всех локальных изменений

git reset --hard HEAD
13
ответ дан Mohammed Irfan Tirupattur 26 июля '16 в 16:13
источник поделиться

Revert - это команда откат коммитов.

git revert <commit1> <commit2> 

Пример:

git revert 2h3h23233

Он способен принимать диапазон от HEAD, как показано ниже. Здесь 1 говорит: "Верните последнюю фиксацию".

git revert HEAD~1..HEAD

а затем do git push

11
ответ дан Sireesh Yarlagadda 20 авг. '15 в 17:45
источник поделиться

Если ситуация срочная, и вы просто хотите сделать то, что задал вопросик в быстро и грязно, при условии, что ваш проект находится под каталогом "my проект":

  • Скопируйте весь каталог и назовите его чем-то другим, например "my project-copy"

  • У

    git reset --hard [first-4-letters&numbers-of-commit's-SHA]
    

Затем у вас есть две версии в вашей системе... вы можете проверять или копировать или изменять файлы, представляющие интерес, или что-то еще, из предыдущего коммита. Вы можете полностью отбросить файлы под "моим проектом - копией", если вы решили, что новая работа никуда не годится...

Очевидная вещь, если вы хотите продолжить состояние проекта, не отказываясь от работы, так как эта извлеченная фиксация - это снова переименовать ваш каталог: удалите проект, содержащий извлеченный фиксатор (или укажите ему временное имя) и переименуйте каталог "мой проект - копия" обратно в "мой проект". Тогда, вероятно, сделать еще одну фиксацию довольно скоро.

Git - это блестящее создание, но вы не можете просто "поднять его на лету": также люди, которые пытаются объяснить это слишком часто, предполагают предварительное знание других VCS [версия Системы управления] и слишком далеко зашли слишком далеко, и совершить другие преступления, например, использовать взаимозаменяемые термины для "проверки" - способами, которые иногда кажутся почти рассчитанными, чтобы запутать новичка.

Чтобы сэкономить много внимания, вам нужно в значительной степени прочитать книгу на Git - я бы рекомендовал "Управление версиями с помощью Git" . И если вы можете мне доверять (точнее, мои шрамы), когда я говорю "нужно", из этого следует, что вы также можете сделать это СЕЙЧАС. Значительная часть сложности Git происходит от ветвления, а затем и для ее устранения. Но из вашего вопроса нет причин, почему люди должны ослеплять вас наукой.

Особенно, если, например, это отчаянная ситуация, и вы новичок с Git!

PS: Еще одна мысль: на самом деле довольно просто сохранить репозиторий Git ( "repo" ) в каталоге, отличном от того, в котором находятся рабочие файлы. Это означало бы, что вам не пришлось бы копировать весь репозиторий Git, используя вышеуказанное быстрое и грязное решение. См. Ответ Fryer с помощью --separate- git -dir здесь. Будьте предупреждены, хотя: Если у вас есть репозиторий "отдельная директория", который вы не копируете, и вы выполняете жесткий reset, все версии, следующие за фиксацией reset, будут потеряны навсегда, если только вы не должны, как вам абсолютно необходимо, регулярно резервировать свой репозиторий, предпочтительно облако (например, Google Диск) среди других мест.

9
ответ дан mike rodent 19 марта '15 в 20:33
источник поделиться

Если вы хотите исправить некоторую ошибку в последнем коммите, хорошей альтернативой будет использование команды git commit -amend. Если последняя фиксация не указана какой-либо ссылкой, это будет делать трюк, поскольку она создает фиксацию с тем же родителем, что и последняя фиксация. Если нет ссылки на последнюю фиксацию, она просто будет отброшена, и эта фиксация будет последней фиксацией. Это хороший способ исправления коммитов, не возвращая фиксации. Однако он имеет свои собственные ограничения.

7
ответ дан Upul Doluweera 01 июля '15 в 14:35
источник поделиться

Еще одно простейшее решение; вам нужно изменить ветвь, чтобы сделать это, но потом вы можете просто запустить:

git branch -f <<branchname>> 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
5
ответ дан Aif 04 дек. '15 в 18:27
источник поделиться

Вы можете выполнить все эти начальные шаги самостоятельно и вернуться к git repo.

  • Вытащите последнюю версию своего репозитория из Bitbucket, используя git pull --all.

  • Запустите команду журнала git с -n 4 с вашего терминала. Число после -n определяет количество коммитов в журнале, начиная с последнего фиксации в вашей локальной истории.

    $ git log -n 4

  • Reset глава истории вашего репозитория с помощью git reset --hard HEAD~N, где N - количество фиксаций, которые вы хотите вернуть назад. В следующем примере голова будет отброшена назад commit, к последнему фиксации в истории репозитория:

  • Нажмите на изменение в git repo, используя git push --force, чтобы принудительно нажать изменение.

Если вы хотите, чтобы репозиторий git имел предыдущую фиксацию

git pull --all
git reset --hard HEAD~1
git push --force
5
ответ дан Nanhe Kumar 06 апр. '17 в 15:20
источник поделиться

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

Сначала вам нужно удалить развитие из источника:

git push origin :develop (note the colon)

Затем вам нужно получить статус, который вы хотите, позвольте мне предположить, что хеш фиксации EFGHIJK:

git reset --hard EFGHIJK

Наконец, нажмите снова развернуть:

git push origin develop
5
ответ дан George Ninan 20 марта '17 в 10:33
источник поделиться

Попробуйте выполнить сброс до требуемого фиксации -

git reset COMMIT_ID

Это будет reset все измененные файлы в состояние без добавления. Теперь вы можете checkout удалить все ненужные файлы

git checkout .

Проверьте git log, чтобы проверить.

4
ответ дан optimistanoop 07 мая '17 в 2:03
источник поделиться

Откат (или возврат):

  • git revert --no-commit "commit-code-to-remove" HEAD (например, git revert --no-commit d57a39d HEAD)
  • git commit
  • git нажмите

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

Если вы обнаружили что-то не так:

git revert --abort

4
ответ дан Jagraj Singh 01 нояб. '16 в 17:29
источник поделиться
git reflog

Выберите номер HEAD (s) из git reflog, в который вы хотите вернуться и выполните (для этого примера я выбираю 12):

git reset HEAD@{12} --hard
4
ответ дан Sérgio 28 сент. '16 в 5:53
источник поделиться
  • 1
  • 2

Другие вопросы по меткам