Git命令之回退到指定commit

1. 查看提交日志


git log

# 已经删除的commitId可以用git reflog查看

git reflog

2. 本地代码回到指定的commitid hard模式


git reset --hard commitid

3. git服务器代码回到指定的commitid


git push -f origin 分支名称

要将 Git 仓库回退指定commit ID 版本,可以根据你的需求选择不同的命令。以下是几种常见的场景和对应的命令--- ### ✅ 场景1:回退指定 commit,并保留之后的提交历史(推荐用于公共分支) 使用 `git reset --soft` 这会回退指定 commit,但保留工作区和暂存区的更改。 ```bash git reset --soft <commit-id> ``` > 示例: ```bash git reset --soft a1b2c3d ``` **适用场景**:你想撤销最近的提交,但保留代码修改以便重新提交。 --- ### ✅ 场景2:回退指定 commit,**不保留**提交记录,但保留工作区修改 使用 `git reset --mixed`(默认行为) ```bash git reset <commit-id> # 或显式写: git reset --mixed <commit-id> ``` > 示例: ```bash git reset a1b2c3d ``` **效果**: - 当前 HEAD 指向 `<commit-id>` - 之后的提交从分支历史中移除 - 修改的内容回到「已暂存」状态(在 `git status` 中显示为 "Changes to be committed") --- ### ✅ 场景3:彻底回退指定 commit,**丢弃所有后续提交和修改** 使用 `git reset --hard`(⚠️ 危险操作,慎用!) ```bash git reset --hard <commit-id> ``` > 示例: ```bash git reset --hard a1b2c3d ``` **效果**: - HEAD 移动到指定 commit - 所有后续提交和**工作区的修改都会被永久删除** > ⚠️ 警告:此操作不可逆,请确保你不需要后续的提交或更改。 --- ### ✅ 场景4:创建一个新提交来“撤销”到某个版本(推荐用于公共分支/团队协作) 使用 `git revert` 回退特定提交(更安全) 如果你想“撤销”某次提交的影响,而不是直接修改历史,可以使用: ```bash # 撤销某个提交引入的更改,生成一个新提交 git revert <commit-id> ``` 如果要回退到某个状态,可以结合 `git reset` 后再反向提交,但更安全的方式是使用: ```bash # 撤销从当前到目标 commit 之间的所有更改(生成一次反向提交) git revert <commit-id>..HEAD ``` 或者逐个 revert 提交。 --- ### ✅ 场景5:临时切换到某个 commit 的状态(查看历史版本) 使用 `git checkout`(不会改变当前分支) ```bash git checkout <commit-id> ``` > 示例: ```bash git checkout a1b2c3d ``` 此时处于“分离头指针(detached HEAD)”状态,你可以查看代码、编译运行,但不做提交。退出方式: ```bash git switch - # 回到之前的分支 ``` --- ### 补充:如何找到 commit-id? 使用以下命令查看提交历史: ```bash git log --oneline ``` 输出示例: ``` a1b2c3d (HEAD -> main) Fix login bug e4f5g6h Add user profile page i7j8k9l Initial commit ``` 复制你需要回退到的 commit ID(如 `e4f5g6h`)即可。 --- ### 总结对比表 | 命令 | 效果 | 是否推荐用于公共分支 | |------|------|------------------| | `git reset --soft <id>` | 回退,保留修改和暂存 | ❌ 不推荐 | | `git reset --mixed <id>` | 回退,修改回到工作区 | ❌ 不推荐 | | `git reset --hard <id>` | 彻底回退,删除后续提交和修改 | ❌ 非常危险 | | `git revert <id>` | 创建新提交来撤销更改 | ✅ 推荐 | | `git checkout <id>` | 临时查看历史版本 | ✅ 安全 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值