git回退代码

要将提交如: 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,因为它最安全,保留所有修改内容!

相关推荐
曾几何时`7 小时前
虚拟环境pip
git
她说可以呀7 小时前
git的版本回退
git
躺不平的理查德10 小时前
Shell逻辑判断备忘录
运维·服务器·git
Bdygsl10 小时前
Git(2)—— 分支管理
git
孟俊宇-MJY12 小时前
Ansible自动化运维
git·github
笨拙的老猴子12 小时前
Git 翻车现场:那些年我 git push --force 毁掉的东西
git·代码管理
GitCode官方12 小时前
投稿|Git + Docker 零基础入门攻略
git·docker·容器
_可乐无糖13 小时前
Windows本地安装git
git
2301_7800290413 小时前
.gitignore不可以忽略文件问题
git·gitee·开源
饕餮争锋14 小时前
PR中的P为什么是pull而非push?
git