Как переместить master назад несколько коммитов в git?

У меня есть репозиторий git, который содержит сайт Drupal. Я провел последний день, пытаясь создать функцию, используя несколько разных модулей. Я отказался от своего нынешнего подхода и решил попробовать другую комбинацию модулей. Однако мой репозиторий имеет несколько коммитов на главной ветви, которые содержат этот процесс разработки функций (я понимаю, что я не ветвился эффективным образом.) Я хочу избавиться от последних трех или четырех коммитов и установить master на этот момент в моей истории (я не хочу сливать свою текущую работу ни с чем, я просто хочу, чтобы она ушла. Как мне это сделать?

3 ответов


чтобы сделать это локально, вы можете выполнить следующие команды, чтобы перейти к master и переместить его в старый commit.

git checkout master
git reset --hard <old_commit_id>

Если вы затем хотите нажать его на пульт дистанционного управления, вам нужно использовать .

git push -f origin master

вы всегда можете сделать git reset <commit>. Пожалуй, самый простой способ сделать это-использовать графический интерфейс, т. е. gitk.

вы должны, возможно, сначала сделать git branch branch-for-failed-experiment таким образом, работа над экспериментом не потеряна навсегда.

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


to point master 3 фиксирует назад:

$ git reset --hard master~3

Я рекомендую резервное копирование текущего мастера перед этим

$ git checkout -b master_backup

после перемещения master, увидеть дерево коммитов:

$ git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all