Скажем, у нас есть сценарий, в котором наш предыдущий журнал коммитов выглядит как
git status
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]
Теперь мы можем захотеть две вещи.
first Case
Мы можем захотеть удалитьвсе наши плохие коммиты и мы хотим перейти к последней стадии коммитов.Скажем так:
git status
commit-4 [ good commit ]
commit-5 [ good commit ]
Мы можем сделать это, оставив первые три коммита, как это
git reset --hard HEAD~3
# for n number of last commit reset
git reset --hard HEAD~n
Я должен отметить, что это очень сложный способ отменить вашу работу.Пожалуйста, делайте это, когда вы абсолютно уверены, почему вам нравится это делать.
Второй случай
Возможно, вы захотите поставить свой коммит-4 на вершину этих
git status
commit-4 [ good commit ]
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]
Вы можете сделать это следующим образом:
git cherry-pick -n <commit-4 sha1>
Они сделают commit-4 лучшим из тех плохих коммитов.