Я случайно запустил команду для неправильной ветки в моем репозитории. Есть ли способ отменить это изменение?
Есть ли способ отменить действие git revert head?
Ответы (4)
git revert
просто создает новую фиксацию — вы можете «удалить» ее с помощью git reset --hard HEAD^
(однако будьте с ней осторожнее!)
git reset --hard HEAD^
, так как он удалит все незафиксированные изменения.
- person Jeremen; 07.02.2016
git stash
до git reset --hard HEAD^
, вы сможете сохранить незафиксированные изменения. После git reset --hard HEAD^
выполните git stash pop
, чтобы перезагрузить незафиксированные изменения в текущую ветку.
- person kukko; 28.11.2016
Команда git revert
просто создает фиксацию, которая отменяет другую. Вы сможете снова запустить git revert HEAD
, и он отменит вашу предыдущую отмену и добавит для этого еще одну фиксацию. Или вы могли бы сделать git reset --hard HEAD~
. Но будьте осторожны с последним, так как он стирает данные.
HEAD~
означает коммит перед текущим HEAD
git reflog
(например). Через два месяца он будет очищен от мусора (конфигурация по умолчанию), но вы можете отключить автоматическую сборку мусора, и тогда каждая фиксация, которую вы когда-либо сделали, будет существовать вечно в этом репозиторий. Они просто недоступны через ветки. Но вы всегда можете найти их с помощью git fsck
, и я опубликовал рецепт для просмотра всех коммитов, которые его используют.
- person Aristotle Pagaltzis; 08.09.2010
Как насчет возврата возврата?
Просмотрите журнал git и получите хэш-тег плохого возврата:
git log -5
Затем выполните обратный возврат:
git revert
Если вы были достаточно предусмотрительны, чтобы сделать это: revert --no-commit master
, вы можете прервать это с помощью: git revert --abort
в соответствии с советом git status
:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
You are currently reverting commit dcc7c46.
(all conflicts fixed: run "git revert --continue")
(use "git revert --abort" to cancel the revert operation)