日常开发中常会遇到的一些场景与对应操作命令
约 451 字大约 2 分钟
其他
2025-07-04
删除某些Git提交记录,但是保存本地更改
仅删除 Git 提交记录(但保留所有本地文件修改),比如删除 8f2c3b570 之前的所有提交记录,保留所有文件修改(工作区内容不变),生成一个新的初始提交(包含当前所有代码)。
步骤:
重置到目标提交(保留文件修改)
git reset --soft 8f2c3b570 # 回退到该提交,但保留所有文件改动重新提交所有文件(作为新起点)
git add . # 添加所有修改
git commit -m "Initial commit (after reset)"强制推送到远程(如需)
git push --force origin <分支名> # 谨慎操作!确保团队知晓效果验证
执行 git log:只会看到新提交 "Initial commit (after reset)"
查看旧版本代码
不会破坏当前代码
git checkout a1f904183b1b6d09d0f163a68e92faf105710ae2这样你会进入 detached HEAD 状态,即“游离状态”。
代码会回到那个 commit,你可以随意查看、运行。
此时你不是在任何分支上。
查看完后,如果想回到之前的分支:
git checkout main或者 master,取决于你的分支名字
版本回退
如果你确认要让分支历史回到那个 commit,有两种方式:
保留之后的提交(安全)
git revert a1f904183b1b6d09d0f163a68e92faf105710ae2..HEAD会逐个生成新的反向提交,等效于撤销从那时到现在的修改。
提交历史仍然保留,不会丢数据。
彻底回到那个版本(危险)
git reset --hard a1f904183b1b6d09d0f163a68e92faf105710ae2强制把当前分支指针移到那个 commit,之后的提交会 全部丢弃。
如果已经推送到远程,还需要:
git push origin main --force