Git 代码回滚与找回的艺术

本文详细介绍了Git的代码回滚操作,包括在不同场景下的回滚方法,如仅工作区修改、暂存区、已commit但未push等。同时,文章讲解了如何找回已删除的内容,如通过reflog恢复到特定commit、恢复文件和重建分支。此外,作者还提供了关于代码回滚的使用建议,强调避免滥用`git push -f`。
摘要由CSDN通过智能技术生成

本文作者:
marklai(赖泽浩)- 高级软件工程师,十年软件配置管理经验,现服务于 CSIG 云与智慧产业事业群质量部

导语

Git 是一个灵活和强大的版本管理工具,正确使用能够有效促进团队协作,防止版本丢失。然而实践中,有些开发人员会或有意或无意地误用部分 Git 的功能,给团队带来困扰,甚至造成损失。不恰当的代码回滚操作是其中的主要问题之一。

本文主要分享针对不同场景的代码回滚操作,以及如何抢救误删的内容。

一个典型案例

我们先通过一个项目团队真实出现过的典型案例,来看看不恰当的代码回滚可能带来的问题。

(1)小红、小黄、小蓝共同工作在同一条分支上。

exam-1-1.png

(2)小红利用reset回滚了一些内容,发现 push 失败,最后用 push -f 操作成功。
更甚者,push -f提示目标是保护分支(例如master)而无法推送成功,于是小红取消了分支保护,从而使得push -f成功。

exam-1-2.png

(3)小黄小蓝进行常规 git pull,遇到了一大堆冲突,并且 commit 历史都乱了!

exam-1-3.png

(4)过一段时间,需要查看某次发布的源代码,却发现无法找到准确的代码!原来它刚好被小红之前reset掉了。

认识 Git 的四个工作区域

在盘点常见的代码回滚场景之前,有必要认识一下 Git 的四个工作区域。

平常我们 clone 一个代码库之后,本地看起来就是一个包含所有项目文件的目录。其实从逻辑上可以分为四个工作区域:

  • 工作区
    也称工作目录、工作副本,简单来说就是 clone 后我们看到的包含项目文件的目录。我们日常开发操作也是在工作区中进行的。

  • 本地仓库(.git)
    在工作区中有个隐藏目录.git,这就是 Git 本地仓库的数据库。工作区中的项目文件实际上就是从这里签出(checkout)而得到的,修改后的内容最终提交后记录到本地仓库中。
    Tips:不要手动修改 .git 目录的内容

  • 暂存区
    也称缓存区,逻辑上处于工作区和本地仓库之间,主要作用是标记修改内容,暂存区里的内容默认将在下一次提交时记录到本地仓库中。

  • 远端仓库
    团队协作往往需要指定远端仓库(一般是一个,也可以有多个),团队成员通过跟远端仓库交互来实现团队协作。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值