首页
学习
活动
专区
圈层
工具
发布

Git 误删、回滚提交不用慌!

很多程序员在用 Claude 等 AI 工具辅助编程时,经常会不小心还原版本、回滚 commit,辛辛苦苦编写的最新代码直接消失,事前又没有做备份,一时间只能焦虑返工。其实 Git 自带完善的日志记录,绝大多数丢失的提交都可以快速找回,下面用通俗直白的方式讲解完整恢复方法。

如果只是 AI 会话内部的版本回退,不用操作 Git,直接在对话框输入指令 /rewind,就可以快速撤回本次会话的改动,回到修改之前的状态,这种方式只适用于当前会话内的代码变动,跨会话、已经提交到 Git 仓库的代码无法使用该方式恢复。

绝大多数代码丢失问题,都可以依靠 git reflog 命令解决。Git 的引用日志会记录 HEAD 指针所有移动轨迹,reset、切换分支、提交代码等全部操作都会留存记录,日志默认保存 90 天。我们打开项目根目录终端,输入 git reflog,页面会逐条展示历史操作记录。HEAD@{0} 一般是误操作回滚后的旧版本,HEAD@{1} 基本就是丢失的最新有效提交,复制这条提交的哈希编码。

个人本地使用的项目,可以直接执行 git reset --hard 哈希值,一键将工作区、暂存区恢复到目标版本。若是只倒退了一个版本,可直接执行快捷命令 git reset --hard HEAD@{1},省去复制哈希的步骤。多人协作项目不建议直接重置分支,稳妥做法是基于丢失的提交新建分支,命令为 git branch recover_code 哈希值,随后切换到新分支核对代码,确认无误后再合并到主分支。

若是间隔时间过长,reflog 日志失效,就需要使用 git fsck --lost-found 检索仓库内所有孤立悬空提交,执行命令后会列出零散的 commit 哈希,用 git show + 哈希值查看对应代码内容,找到目标版本后,依旧使用 reset 命令完成恢复。

恢复时要区分本地仓库与远程仓库两种场景。仅仅是本地回滚、没有把错误版本推送到远程仓库,直接使用重置命令即可,不会产生额外问题。一旦已经将回滚后的旧版本推送到远程,绝对不能强行重置远程历史,会导致团队成员代码冲突错乱,正确做法是使用 revert 命令反转提交。先用 git log --oneline 查看日志,找到回滚操作对应的 commit 哈希,执行 git revert 哈希值,最后推送远程,该方式只会新增一条恢复记录,不会篡改原有历史,适配团队协同工作。

日常使用 AI 编程工具很容易出现版本误操作,养成几个小习惯可以有效规避代码丢失。在让 AI 大规模修改代码前,及时 commit 提交或者 stash 暂存当前代码,提前做好兜底;尽量少使用 reset --hard 这类高危删除命令,日常版本调整优先使用软重置;AI 会话编辑过程中,善用工具自带的快照、撤回功能,减少不必要的回滚操作。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Og5NtowVoC2SOY8AklJgahDw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券