回退到某个 commit 场景:回退到历史某一版本。 - 首先查看 log 找到 hash 并复制 - `git log --oneline` 显示所有 commit 的简短版本 - `git log` 默认显示完整的提交日志 - 回退到指定 Commit - `git reset --soft <commit-hash>` 希望代码回到指定的 commit,但保留之后的更改 - `git reset --hard <commit-hash>` 回到某个 commit 并丢弃之后的更改 ==❗️千万不要随意运行这个命令,很容易丢失本地代码== - 如果你已经将更改推送到远程仓库,需要强制更新远程仓库 - `git push origin <branch-name> --force` - HEAD - 什么是 HEAD? - HEAD 是当前分支上“你现在所处的位置”,通常,它指向当前分支的最新提交(latest commit) - HEAD~ 等于 HEAD~1,表示 HEAD 的上一个 commit,也就是当前 commit 的再上一个 commit。 - 常见场景: - 刚 commit 完就后悔了?撤销最近的一次 commit 但保留更改:`git reset --soft HEAD~` - `HEAD~` 是 Git 中的一种 **引用**,表示 **当前分支的上一个 commit**。 - 在本地修改了一些文件,但想完全丢弃这些改动,回到上一次 commit 的状态 - 在本地修改了一些文件,但很不满意,想完全丢弃这些改动,回到上一次 commit 的状态:`git reset --hard HEAD` (**危险操作,无法恢复**) 如果你担心后悔,可以先把当前状态打个 stash(暂存)再还原: ```bash git stash git reset --hard HEAD ``` 之后如果想恢复改动: ```bash git stash pop ```