回退到某个 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
```