要将提交如: 748c949 回退到未记录状态(即撤销这次提交但保留修改内容),有以下几种方法:
方法一:git reset --soft(推荐)
bash
git reset --soft HEAD~1
或者指定具体的提交:
bash
git reset --soft 748c949^
效果:
• 撤销提交,但保留所有修改内容在暂存区(staged)
• 提交记录被移除,但文件更改仍然存在
方法二:git reset --mixed(默认)
bash
git reset HEAD~1
或者:
bash
git reset 748c949^
效果:
• 撤销提交,保留修改内容在工作区(unstaged)
• 提交记录被移除,文件更改存在但需要重新 git add
方法三:git reset --hard(危险!)
bash
git reset --hard HEAD~1
效果:
• ⚠️ 完全删除提交和所有修改内容
• 文件会回到提交前的状态,所有更改都会丢失
• 不推荐使用,除非你确定要丢弃所有修改
✅ 推荐使用步骤
1. 使用 soft reset(保留修改在暂存区)
bash
git reset --soft HEAD~1
2. 检查状态
bash
git status
你会看到之前的修改仍然在暂存区,可以重新提交。
3. 如果需要重新提交
bash
git commit -m "新的提交信息"
📊 三种 reset 模式对比
| 模式 | 命令 | 提交历史 | 暂存区 | 工作目录 |
|---|---|---|---|---|
| --soft | git reset --soft HEAD~1 | 移除提交 | 保留修改 | 不变 |
| --mixed | git reset HEAD~1 | 移除提交 | 取消暂存 | 保留修改 |
| --hard | git reset --hard HEAD~1 | 移除提交 | 清除 | 删除所有修改 |
🔍 验证结果
撤销后可以查看日志确认:
bash
git log --oneline
之前的提交 748c949 应该不再显示在最新历史中。
推荐使用 git reset --soft,因为它最安全,保留所有修改内容!