Original Note

你现在在: - Read

例子

# 你现在在:
4b0eb60a  HEAD -> feat/iterate

# 希望回到:
41170b91  Replace WORKFLOW.md placeholder

直接执行:

git reset --hard 41170b91

效果是:

4b0eb60a   ← 被当前分支丢弃
   ↓
41170b91   ← HEAD -> feat/iterate

如果想先留个保险,可以先:

git branch backup-before-reset
git reset --hard 41170b91

注意:--hard 会同时丢掉未提交的工作区修改

如果你想回滚 commit,但保留目前代码修改:

git reset --soft 41170b91

区别:

--hard   回到该 commit,代码修改也全部丢弃
--soft   回到该 commit,但之后的修改保留在暂存区
--mixed  回到该 commit,修改保留在工作区但取消暂存

--soft常用于

撤销 commit,但不撤销代码,甚至保持 git add 状态。

比如你刚刚 commit message 写错了,或者希望把几个 commit 重新整理。