误修改master分支后如何丢弃变更并恢复至工作树干净状态?
解决误在master分支修改后恢复工作区干净的方法
嗨,这种手滑操作太常见了,别担心,根据你的变更所处的不同阶段,有对应的解决方案,都能让master回到原有状态,最终得到「working tree clean」的提示:
情况1:变更还没执行git add(未暂存)
如果你的修改还没加到暂存区,直接执行以下命令就能丢弃所有工作区的变更:
# Git 2.23 版本之前常用的命令 git checkout . # Git 2.23+ 推荐使用的更清晰的命令 git restore .
如果只想丢弃某个特定文件的变更,把.换成对应的文件名就行,比如git restore README.md。
情况2:变更已经执行git add(已暂存)
这时候需要先把暂存区的内容撤回到工作区,再丢弃工作区的变更:
# 步骤1:撤销暂存(老版本命令) git reset HEAD . # 步骤2:丢弃工作区变更 git checkout . # 或者用Git 2.23+的新命令,更直观 git restore --staged . # 撤销暂存 git restore . # 丢弃工作区变更
情况3:已经提交了commit(未推送到远程master)
如果已经把变更commit到本地master了,但还没推送到远程,用这个命令直接回退到上一个干净的commit状态:
git reset --hard HEAD~1
⚠️ 注意:--hard参数会彻底丢弃这次commit的所有内容,执行前一定要确认这些修改完全不需要了,因为这个操作是不可逆的!
执行完对应命令后,再输入git status,就能看到系统提示「working tree clean」啦~
内容的提问来源于stack exchange,提问作者Robin Khatri
相关产品推荐
相关产品推荐

