更新:
由于跟踪分支的创建和推送方式发生了变化,我不再建议重命名分支。这是我现在推荐的:
复制当前状态的分支:
git branch crazyexperiment
(git branch <name> 命令将使您的当前分支仍处于签出状态。)
使用git reset 将当前分支重置为所需的提交:
git reset --hard c2e7af2b51
(将c2e7af2b51 替换为您要返回的提交。)
当您确定您的疯狂实验分支不包含任何有用的内容时,您可以使用以下命令将其删除:
git branch -D crazyexperiment
当您开始使用修改历史的 git 命令(reset、rebase)在运行它们之前创建备份分支时,这总是很好的。最终,一旦你感到舒服,你就不会觉得有必要了。如果您确实以不希望的方式修改历史记录并且没有创建备份分支,请查看git reflog。即使没有指向它们的分支或标签,Git 也会保留提交很长一段时间。
原答案:
比git reset --hard 方法稍微不那么可怕的方法是创建一个新分支。假设您在 master 分支上,并且您要返回的提交是 c2e7af2b51。
重命名您当前的主分支:
git branch -m crazyexperiment
检查你的好提交:
git checkout c2e7af2b51
在这里创建你的新主分支:
git checkout -b master
现在,如果您想稍后查看它,您仍然可以进行疯狂的实验,但是您的 master 分支又回到了您最后一个已知的好点,可以添加。如果你真的想扔掉你的实验,你可以使用:
git branch -D crazyexperiment