粉丝1162获赞4025

windows git 配置 s s h 第一步,生成 s s h 密要打开 c 盘用户目录,新建 s s h 目录。在 s s h 目录中,右键选择 git bash here, 输入命令 s s h keagin t r s a c garsan 下划线 john at 一六三点 com 邮箱随便输入自己的邮箱地址, 按回车键输入生成的 s s h 密奥文件名称,输入 s s h 密码,也可以不输入直接回车。 看到改界面证明 s s h 密要已经生成。生成后在 s s h 目录中能够看到生成了两个文件,点 p u b 结尾的是公要。第二步,配置 get 服务器,新建 config 文件,注意不需要后缀,可以新建一个文本文 键,然后删除。点 t x t 后缀,用记事本打开 confic 文件,输入一串神秘的代码, host name, port, identity file, user 这四个需要根据自己的清空进行配置。和我这里可能不同, host name 是 gate 服务器的地址, port 为 gate 服务器 s s h 的端口号, dentity file 为私要文件路径 user gate 用户名。第三步,上传公要 接下来我们上传 s s h 公药到 git 服务器上面,这里演示的是 git breed 服务器上传公药的方式。登录 git 站点,进入用户中心, 点击左侧的 s s h p s 用记事本打开我们第一步生成的公要文件,点 p u b 结尾,复制文件内容到站点上 就 ok 了,可以为取一个名称,方便后期维护。 s s h 链接,点击添加按钮。第四步,测试 s s h 链接在 s s h 目录中,右键打开 get bash here, 输入命令 s s h t git infinite e 点 com gate infinite t 点 com 为 git 服务器的地址,根据自己的情况进行修改,按回车确定输入 yes, 看到该界面提示代表配置成功了 以后就可以使用 s s h 链接了,不再需要输入密码。教验测试一下,找到一个 gate 仓库,测试 s s h 地址,输入克隆命令,可直接克隆代码,精建一个文件测试, 输入命令 get at 添加文件,输入 get commit 提交更改输入 get push origin master 推送到服务器,在服务器中就能看到提交的记录了。


有段时间,公司需要统计每个人的 commit 改了多少行代码,于是我一个不小心把一个七夕学习模型 git commit 了好几万行。我的 git 目录一下变成了几百页。 结果就是同事要克隆我这个仓库,得等十几分钟。于是我赶紧删掉模型,再次 commit, 但 git 并没有变更小。然后我试了各种办法, git ignore 等等等等都没有用。那一刻,我突然意识到,我其实根本不懂 git 是 怎么工作的,我只是记住了各种命令。 这个视频将用五分钟向你解释 git 是 怎么工作的。我保证,看完这期视频,你会是周围人中最懂 git 的 那个。简单来说, git 其实是依靠三种对象的引用来工作的。 三个对象分别叫做 commit tree 和 blob。 commit 就是 我们每次改动代码后的提交,它会指向一个 tree 对 象, tree 对 象表示这次 commit 发生时的目录,然后 tree 对 象再指向 blob 对 象。 blob 对 象就存储了文件的具体样子, 这些对象都存储在 get 目录中的 object 里。举个例子,这是我一个全新的项目,它还没有任何 commit。 我 刚刚新增了一个文件 text 一, 里面只有一行文本,然后我要提交一个 commit, 叫 commit one, 然后提交。 提交之后我们就可以看到这里有了我们刚刚的提交,它的哈希值是 e, d, d, f。 如果你不太了解哈希值,可以查看我之前的一个视频。简单来说,它是根据这个 commit 内容产生的唯一标识。 我们来看一下这个 commit 具体里面是什么样子的。我们需要使用一个 get 命令, get hit file, 然后参数 p 后面接。这次 commit 哈希值只需要写前几位就可以了。 于是我们就可以看到了这个 commit 里面的东西。我们可以看到它引用了一个去对象,这个去对象的哈希值是 c, a, a, e 以及这个 commit 的 作者是谁,这个 commit 的 提交者是谁,以及这个 commit messaging。 我 们继续看一下这个去对象里面是什么。 同样只用这个命令,然后使用去对象的哈希值, 就会看到这个 tree 对 象引用了一个 blob 对 象。 blob 对 象的哈希值是七三七 c 以及这个 blob 对 象所对应的文件的名称。我们再看一看这个 blob 对 象里面是什么。 改成 blob 的 哈希值就会看到它存储了文件原本的内容。通过这个例子,我们看到了 commit tree 和 blob 之间的引用。这样做的好处在于节省空间, 因为每个 commit 它都需要记录完整的结构信息,但如果将所有的文件都存储一遍,那这样耗费的空间就太大了。所以通过引用的方式,对于没有变化的文件,新的 commit 依然引用原本的 blob。 对 于变化或者新增的文件才引用新的 blob。 比如说我现在要新增一个文件,叫做 text 二,然后对于这个新增的 text 二,我提交一个 commit, 这 commit 就 叫 commit 二。简单点,那我们回到我们的提交历史,可以看到 commit 二,它的哈希值是九五七 c, 我 们再来看这个九五七 c 里面是什么样的。 可以看到同样有 tree or the commit 和 message 四个蓝位,但多出了一个刚刚我们没有见过的蓝位,叫做 parent。 parent 是 e、 d, d, f, 刚好和我们的 commit 一 的哈希值是一样的,所以这个阈尾它表示的是这一次 commit, 它是从哪个 commit 衍生而来。那我们再看看这个 commit 二所引用的 tree 对 象是什么样的。使用这个 tree 对 象的哈希值看一下啊, 可以看到它引用了两个 blob 对 象,一个依然是我们刚刚用的七三七 c, 就 像这里用的是七三七 c。 另一个是新增的一个 block 对 象一六九 d, 它对应的是我们新增的 text 二。 这样 text 一 的 blob 对 象就被再次利用了,不需要再存储一遍,节省了一些空间。但是 blob 对 象一旦被创建, 就不会再被修改或者删除。也就是说,即使我修改或者删除了 text 二,这个一六九 d 的 blob 对 象都将永远存在。比如我现在删除这个 text 二,然后再提交一个 commit, 可以 看我现在提交了第三个 commit, 删除了 text 二文件。那么看一看我们的 git object, 下面 我们还是可以找到这个一六九 d。 这个文件就是我们的 blob 对 象,它的命名方式是文件夹的名称加上文件的名称,就是全部的哈希值。到这里 你应该就能明白视频开头我的 get 步入那么大的原因了,因为表示我模型的 blob 对 象一旦生成了就不会消失。 但解决方案你可能也想到了,我可以先删除提交模型的这次 commit, 让模型的 blob 对 象成为没有被引用的悬空对象,再删除掉没有被引用的对象。 总之, commit tree、 blob 这三种对象就是 get 工作的本质。你可能会疑惑,哎,我们熟悉的 branch 去哪了? branch 不是 一个对象, 只是对某个 commit 的 引用。我们每次 check 到一个分支上,其实也只是跳到某个 commit 而已。我们随时可以指定任何 commit 作为任何 branch。 我 们还可以删除 branch, 但不会影响 commit。 你 可以在 git 目录下的 revs 下面找到各个 branch, 它存储在 head 下面。 像我的这个仓库,目前就只有 main 分 支。打开看看,你可以看到它的文件内容是九八 e a, 刚好和我的 commit 三的哈希值是一样的。以上就是本次视频的全部内容,现在的你应该完全理解了 git 是 怎么工作的,并且应该再也没有任何 git 问题会难住你了。感谢你的观看,我们下次再见。

我来看一个在 get 里面一个非常常见的问题啊,这个问题你要不小心的话,到时候调能调死你。比如说目前一个工程啊,它已经被 get 所跟踪了,现在呢,有一天啊,你不知道抽什么风,你把这个文件的大小写呢给我改了,比如那个 arata, 你 把这个首字母呢变成小写了,然后这个文件牙呢,你把首字母变成小写了, 改了之后呢,你会发现一个神奇的现象啊,但很多同学其实是没有注意到的,就这个 get 呢,没有对这个改动进行跟踪,你看,没有任何跟踪哎,但是如果说你去改这个文件的话,那没问题啊,把文 键也跟着变成小写,是吧?把路径也跟着变成小写啊,这个玩意呢,肯定是能被跟踪的,你看这里呢,是不是被跟踪了,对吧?这里呢,也得到跟踪了。好,于是呢,你把这个玩意推送到 get 仓库了,那就要出问题了,为啥呢?为啥前边没有跟踪,后边跟踪了呢?前边没有跟踪是因为 get 呢?默认情况下,它是忽略掉文件或者是什么文件夹路径的大小写的,它忽略了,它认为没有变化, 但是个文件内容变化肯定不行,是吧?它肯定要被跟踪,那于是就会出现一个什么情况呢?你本地是一个什么大写的文件名? 远程仓库呢,也是一个大写的文件名,对吧?推送过去了嘛?现在呢,你把本地的文件仓库的文件名呢变成小写了,但这个小写呢,没有被 diss 所跟踪。于是呢,你再推送到远程仓库的时候,远程仓库那边文件的名字是没有变化的,它还是大写,但是你这个玩意是能推送的,是吧? 这些路径变成小写了,是能推送的,那么推送上去了过后呢,就是远程仓库,他文件是大写,但是路径是小写,你说出不出问题,这个直观的问题就是你本地开发啥问题没有?但是一旦推送到远程仓库,那么服务器呢,再从远程仓库去拿取,那也就是生产环境,它的运行呢,它就要出问题,到时候调能调死你, 因为这个玩意很不好调,你很难定位,到底是什么原因导致的?你要掉很多头发,你才能知道是这里的原因,所以这种问题呢,最好是在最开始的时候就给它规避掉。怎么规避呢?就是你在创建的工程的时候啊,你就输入一行命令, 这个命令呢就是 git config call ignore case, 给它做一个配置,把这个忽略大小写呢,给它禁用了就完事了。忽略大小写一旦禁用,你看一下这些对文件名的大小写改动,就全部被跟踪了, 那么到这里推送到服务器的时候,那么服务器那边也有对应的小写的文件名呐,对吧?这样呢,才不会导致出问题啊,这是一件小事啊,但是这件事特别重要,朋友们以后建工程的时候呢,把这句话运想一遍啊。

嘿,大家好,如果你想在编程这个世界里闯出一片天,那 github 绝对是你绕不过去的一座山。别担心,今天呢,我们就来当你的向导,带你从零开始,一步一步地把 github 给玩明白了。我们的目标很简单,让你不光能看懂还好了,那咱们就正式进入主题吧。 首先呢,我们得把一个最基础,但也是最多新手会搞荤的概念给弄清楚,就是这个 git 和 github。 你 看啊,它俩名字长得特像,但说实话,它们完全是两回事儿。 你可以这么理解, get 呢,它就像是你电脑上的一个本地存储工具,一个能让你吃后悔药的神器。你写的每一行代码儿,做的每一次修改,它都帮你记得清清楚楚。那 github 是 什么呢?它就是一个在云上的大仓库,专门存放你用 get 保存下来的这些项目。这样一来,你就可以在任何地方访问你的代码,更重要的是,还能跟别人一起写作。 所以, git 的 核心作用到底是什么呢?嗯,它的学名叫版本控制系统,英文是 vcs。 我 知道啊,这名字听起来有点唬人,但你别怕,说白了,它就是你项目的专属时光机。你想想,万一代码写崩了,或者老板突然说还是用上周的版本吧,怎么办?有了 git 没问题,咱们坐上升光机,嗖一下就能回到过去任何一个你保存过的版本,是不是很酷? 好吧,基本概念我们搞清楚了,那接下来咱们就来看看,作为一个开发者,你每天具体要做些什么。更重要的,我们怎么才能把你这些日常的工作包装成一份闪闪发光的个人作品集,让他在求职的时候帮你拿到心仪的 offer, 那 这就是每个开发者几乎天天都要重复的。四步五。 第一步, git clone, 就是 从 git hub 上把项目整个克隆到你自己的电脑里,然后你开始写代码。写完之后,第二步, git, 告诉 git, 嘿,这些是我新改的内容,准备一下。 第三步, git commit, 就是 正式地打一个存档点,并写下备注,说清楚你这次都改了啥。最后一步, git push, 把你在本地打好的这些存档一次性推送回 git hub 的 云端仓库。记住这四步,你就抓住了 git 和 git hub 的 核心脉络, ok! 当你把这套流程玩得滚瓜烂熟之后,一个更重要的问题就来了,我怎么才能让我的这些努力被别人看到呢?特别是那些潜在的雇主和合作伙伴。 答案其实很简单,就是用心去打造你的 github 个人资料。你可以把你的个人资料、 readme 文件想象成是你在 github 上的一个大广告牌,或者说是你的个人主页。那怎么才能让这个广告牌吸引人呢?你看这里有几个关键点。首先,一个简单明了的自我介绍是必须的。然后把你掌握的技术战用酷炫的小图标展示出来, 这个比干巴巴的文字强多了。当然,别忘了放上你最得意的那几个项目的链接,还有一些能动态展示你贡献度的统计卡片。最后加点你自己的社交媒体链接,甚至来一个好玩的 gif 动图,展示一下你的个性。你的主页上最多可以置顶六个项目,所以啊,一定要精挑细选, 记住,质量永远比数量重要,那什么样的项目才值得被放上去呢?你看,首先它最好是能解决一个真实世界里的小问题。其次,你的代码得写得干净漂亮,注视也要清楚。 千万别忘了一个高质量的 readme 说明文档,里面有截图,有怎么运行的指南,这绝对是超级加分享。如果还能提供一个 online demo 的 链接,那就更完美了。好了,等你把自己的门面收拾的漂漂亮亮之后,咱们就可以走出去看看更大的世界了。接下来咱们就来聊聊 github 最有魅力的一个部分,如何与他人合作。 来,我们来想象一个场景,比如说你正在参与一个项目,为了开发一个新功能,你创建了一个属于自己的分支, 你可以把这个分支理解成一个独立的平行的代码宇宙,你在里面做的任何修改都不会影响到主项目。现在你在你的平行宇宙里已经把这个新功能做的非常棒了。那么问题来了,你怎么才能安全的万无一失的把你做的这些改动合并回项目的主干道上,还不把原来的东西给搞坏呢? 答案就是通过一个叫做拉取请求的东西,我们通常管它叫 pr, 你 要知道, pr 可不仅仅是一个请求合并的按钮,它更像是一个专门的讨论区,你在这里正式的提出你的修改建议,邀请你的同事们来审查你的代码,大家一起讨论,确保这些新代码的质量是过关的,然后才能最终合并进去。 整个 pr 的 工作疗程大概是这样的,首先你把自己在分支上的工作推送到 github, 然后在 github 页面上创建一个新的拉取请求。接着你需要指定以两个同事为审查者,请他们来检查你的代码, 大家会给你提一些反馈和修改意见,你根据这些意见再调整你的代码。最后,当所有人都觉得没问题了,点击那个绿色的合并按钮,大功告成。这个流程是保证团舵项目质量的生命线。 好了,到这里你已经掌握了个人工作和团队协助的精髓了,但 github 的 强大之处还远不止于此。最后,让我们来解锁它的终极超能力,自动化。这个超能力的名字叫做 github actions, 你 可以把它想象成是你的私人自动化小助手,或者说是一群住在你代码仓库里的小 robot。 你 只要提前给它们设定好指令,它们就能帮你处理各种重复性的繁琐的任务。这样你就能把宝贵的精力完全集中在写代码这点核心的事情上了。 它们能做什么呢?我们来看几个例子。比方说你可以设置一个触发器,规定每当你把代码部署到主分支的时候,就自动运行所有的测试,确保没问题。 或者每当有人提交一个 pr 的 时候,就自动检查一下代码的格式是不是符合团队规范。再或者,一旦一个 pr 成功合并了,就自动把最新的版本部署到 siri 上,你看这些操作是不是能帮你省下大把的时间和精力。 好了,我们回顾一下从最开始的 git 是 什么,到怎么打造个人作品集,再到如何用 pull request 和团队协助,最后,我们还解锁了 github actions 这个自动化神器, 可以说现在你手上已经有了一份相当完整的 github 生态系统使用地图了。那么有了这张地图,你下一步的开发之之旅准备去向哪里呢?

get 呀,不要只会 pro 和 pose。 今天我们学习一下 reset soft。 一般呀,我们使用 reset 命令时 get reset hard, 它能够让 commit 提升记录,强制回宿到某一个节点。而 gate reset soft 的作用 正如其名,除了回宿岛接点之外,还保留了接点修改的内容。有时候啊,手滑不小心把该提交的内容可 mate 了,这时候还想改回来,只能再一次,可 mate 一次 又多了一条黑历史。那我们学会了 reset soft 之后啊,你只需要 get reset softer 回复最近意思考 metal 就可以啦。

今天分享 get up 上的开源神器 get mcp, 它和普通 ai 工具完全不同,凭借 mcp 技术,让 ai 直接读懂任意 get up 项目,彻底解决编码幻觉问题。操作极其简单,只需三步,一、找一个 get up 项目。 二、将链接中的 github 点 com 改为 github meet 点 i o 三、复制新链接到 ai 工具即可使用,无需复杂配置就能直接与代码仓库对话。例如询问 lan graph 最新特性, ai 可秒回准确信息,任何开源项目都能这样分析,效率翻倍。 目前完全免费,无需注册,还支持自行托管。 ai 也能实时导吗?快来试试吧!

大家对 git 想必都不陌生,在日常的开发工作中, pull、 commit、 push 这些操作可以说是非常的常用。然而越是常用的命令,也会越容易在使用过程中出现各种问题,而且有些问题可能就藏在那些看似再熟悉不过的命令之中。第一, get pool 这个命令乍一看它十分省事,敲一下就能完成一系列操作,但实际上它等同于 get fetch 和 get merge 这两个命令的组合。这意味着每次执行 get pool 的 时候, get 有 可能在后台默默地帮你进行一次合并操作,这看似方便,却可能带来一些潜在风险。更稳妥的做法是先使用 get fetch 拉取远程仓库的最新代码, 然后根据实际情况自主决定如何进行合并,这样能让你对代码的合并过程有更精确的掌控。第二, get commit m 这种提交方式。在当下,这样的操作似乎没有任何问题。代码顺利提交,任务看似完成, 可是当几个月的时间过去以后,你可能自己都记不清当时修改了哪些具体内容。正确的操作应该是先执行 get commit 命令,这时会弹出一个编辑器,你可以按照以下规范填写提交信息,第一行清晰地描述你做了什么改动,第二行详细说明你为什么要做这样的改动。 这样规范的提交信息,无论是对未来的自己回顾代码,还是让同事理解你的工作,都能提供极大的便利,使代码的维护和协助更加高效。第三,分支切换的命令 get checkout 如今更推荐使用 get switch 来进行分支切换。相较于 get checkout, get switch 的 语义更加清晰明确。在日常操作中,我们可能会因为疏忽或者手滑而出现误操作。使用 get switch 能有效降低这种风险,让分支切换更加安全可靠。 写代码是软件开发的核心工作,但在实际的项目中,能否与他人长期高效的合作编写代码同样重要。遵循合理的并使用规范,不仅能提升个人的开发效率,还能为团队的写作砥定良好的基础。

那突然呢,收到一个小伙伴的求救啊,就说自己的 get 提交丢失了,无法无法恢复啊,或者说不知道如何找回自己的提交,那遇到一般遇到这种情况,你会怎么处理呢?那今天呢,我将通过一些实操的一个一些命令啊,来讲解 get 的 rf log 啊。 嗯,教你如何找回你丢失提交的代码啊。那其实不管是 are set, 就是 不管是 reset, rebins 或者说 event 的 操作啊,那只要你本地 提交曾经提交过那个康密的,那 r e f 这个 log 啊,都可以帮他帮你找回来啊。那我们都知道 get 是 有 log 的 啊,你可以认为 get 的 log 其实就是 get 提交的历史,那 r e log 呢,就是它的黑盒子,所以说咱们可以从里面找回咱们一些这个有迹可循的一些东西啊 啊,而 get log 呢,假如说你这个 get reset 刚刚 had, 然后 had 一 啊,那么其实就是最近 一次的提交呢,会在 git log 内消失啊,所以想恢恢复最近一次的提交呢,其实这个 git log 是 无能为力的,因为 log 内是看不到了,但是 if log 是 可以看到的,就说可以找回啊,那下面呢,我们来看一下具体这个命令的实操啊。那假设我们正在开发一个 登录的流程啊,那这里呢,我们创建一个文件夹,比如说叫 make d r 叫 to 这个文件夹, 然后呢,我们进入到这个文件夹内啊, cd 就, 然后呢,这里呢,我们先这个进行 get 的 出语化,就是 get n i t 回车,那这里呢,其实我们就把 get 的 这个出语化完成了,那这里呢,我们创建一个文件啊,比如说叫咱们来模拟一下这个登录的操作啊,比如说我们先创建一个文件,叫做 get 一 口啊,然后是 n i t 嗯,写入到 log in, 写入到叫做 log in 点 t x t 那啊,那这里呢?其实我们就创建了一个文件了,然后我们来看一下内容啊 get, 然后这个查询到零点 t s t 啊,回车, ok, 那 其实这里面有,咱们已经有咱们的内容了,那这里呢?我们把它这个添加到咱们的本地操控内啊, get a d d 命令啊,这是很基础的一个命令,然后回车,然后这里呢,咱们进行第一次提交 get commit, 然后杠 m, 然后这里面写上这个 n i t。 说话,咱们的老根回车, ok, 那 这是咱们的第一次提交,那后面呢?假如又变了啊,咱们需要升级一下版本,比如说咱们是这个 v 一 版本啊,假设,那咱们还是 e q, 然后是 v e eve log in, 然后继续写入到咱们的 log in 点 t s t 然后呢,咱们进行这个第二次的提交啊,给还是将它添添加,然后给它看内存,然后呢,这里咱们写上 ve log in, log in, 还是写入到,记住啊,咱们只是做一个模拟啊,主要是为了说清问题,然后回车,这是咱们的第二次提交,那接下来呢,你这个发现这个 bug 啊,你要修复啊,那假如咱们去修复 bug 了,咱们继续来修改这个文件 是 fix log in bug for user this is their name lenns 然后继续到咱们的 log in 点 tessie, 然后回车,然后接下来呢,咱们需要进行咱们第三次的提交啊,还是添加,然后第三次提交 get commit 杠 m, 咱们是 fix bug for log in, 然后回车,那这个呢,就是咱们的三次提交就已经完成了,此时呢,咱们来看一下咱们的 get the log 啊,回车,那此时呢,咱们其实可以看到这个完整三次的提交记录啊,比如说第一次是 i i t, 然后他的卡密特的值,第二次呢是 v e log in, 咱们升级第二版本 是卡密的值,那第三次呢,是咱们修复了一个 bug 啊,这是他的卡密的值。 ok, 这里我们来截一个图吧。嗯,为了后续咱们进行对比啊, 这里呢,我将呢可以放到最前面,然后呢,咱 们来退出啊,按住 q 键啊,就退出了这个 log 的 模式啊, ok, 那 图咱们也截好了,稍后咱们会做这个进行对比啊,然后呢,你发就是登录没有问题啊,就是你一开始咱们不是修复了一个 bug 吗?然后你发现没有问题,这个验证错了,反而出现了 bug, 此时你要恢复 前一次提交,然后你就慌慌慌张进行了这个命令啊,就是 get recite recite, 然后杠杠 hat, 然后呢, hat put 号一。那么这这个命令呢,其实就是会这个恢复到咱们前一次的提交啊,就是第二次提交,也就是 vlog 啊,然后咱们回车啊,哎, ok, 咱们来看一下, ok, 这里打错了啊,这是 had, 然后回车, ok, 那 其实你看他这也也写到了啊, ok, 那 此时呢,咱们就恢复到了第二次提交啊,那咱们来看一下,有文件啊 cat, 然后是 老,嗯,老根天气啊, ok, 咱们看到啊,已经恢复到这个 v 一 这个 log in 啊,那这里呢,其实咱们也看到原文啊,那内容也确实如此啊,然后你就满心欢喜啊,那个的时候代码哎,又发了问题啊,也就是说之前其实那个提交还是 还是可能正确的,此时你想找回最后一次提交代码,然后你就满心欢喜打开了 git log, ok, 这里咱们来看一下啊, 此时这个 git log 啊,看看,这里啊,只剩下 v e log 音, i i t log 音,那之前呢,之前咱们的提交呢,是有三次对吧?一个是 i i t, 一个是 v e, 一个是 fixed bug 啊,就是说这次找不着了,第三次提交记录啊,就这次提交记录, 这次题要记住啊,消失了,那咱们的代码难道就找不回了吗?然后说,还是说你的代码需要重写了吗? 或者说你删了别的代码怎么办?然后呢,此时啊,其实你要看咱们的 r e f log, 这里呢,咱们来看一下,这里咱们按 q 键退出,然后 get r e f log, 然后呢,咱们来看一下回车。哎,看,此时啊,咱们的提交啊,有第一次对吧? i it 第二次 ve, 第三次 fix back, 第五次的操作啊,就是 reset, 咱们在这里所有的操作都可以在 if log 内 找到啊,是不是发现了新大陆,那此时咱们这个丢失就相当于找回了,然后咱们将这个咱们需要恢复的这个 comis 的 id 啊,就它的哈希值啊,咱们给它复制复制一下啊。 ok, 那 这里咱们按 q 键退出啊,啊,清楚一下屏幕啊,注意啊,就是咱们不能够直接恢复到这个这个任何的分支啊,因为咱们还需要继续保留这个事故的现场啊。那这里呢,我们需要创建一个恢复的分支进行恢复啊,咱们可以这样 get branch, 比如叫 recover fix log in 啊, 然后呢,把咱们刚刚这个想要恢复的这个 id 那 个拿过来啊,然后这个回车啊,那此时咱们的代码现在就恢复了,那咱们需要切换到这个刚才咱们监里的这个 recover 的 这个分支啊,咱们来看一下。 ok, 那 咱们来看一下咱们的 log in 点天气啊。 ok, 那 这里面其实刚才咱们一开始输入的那段内容啊,其实就咱们的代码就相当于找回来了啊。 ok, 那 咱们这时候再看一下这个 log 啊,给自己点 log。 ok, 那 咱们其实这次提交也恢复了啊,还是原来的那三次,对吧?这样看起来是不是就很舒服了? ok, 这里咱们继续退出啊,嗯,咱们的这个代码其实已经恢复了啊,所以说这里我还有呢,这里其实我不推荐直接用这个 get 向 recite, 然后杠杠 head, 然后后面跟上咱们的刚才那个那段 id 啊,其实也是可以恢复的啊,嗯, 就当然也可以恢复这个某题啊,但是我还是希望能够保留这个现场的证据啊,有利于我们跟踪问题啊。 ok, 那 后面呢,其实遇到这个类似的问题啊,一定要记得还有这个 if log 可以 恢复啊,所以说不要惊慌啊,还有呢,这个 if log 呢,这个有效期呢,其实是九天啊,所以说 九天之前的就找不到了,所以说事故发生后,发生之后呢,咱们第一时间去看这个 r f log 啊,这个不要进行其他的操作了,最后呢,我会给出,给出,给出,这个就是咱们这个怎么去找回这个 失败的提交的一个步骤啊,首先呢,找,咱们需要这个,找到事故前的这个刊物啊,然后建立这个恢复的分支啊,然后切换到分支,然后对比分支, 这个确定咱们的内容是不是真正的恢复过来了啊,然后切换到你的分支啊,最后咱们用这个 cherry 的 这个 pick 啊,来进行恢复啊,最后呢,咱们可以推送到这个远程的这个这个 get 分 支上去啊,就可以了。 ok, 那 这里呢,其实也可以给你们演示一下啊,比如说我现在切换到这个,咱们来一下 get 这个 diff, 跟主分支去比较一下啊, ok, 那 其实它的也很明显啊,一个是 vlog 音,然后是咱们的 fix, 这个说明咱们是真正的去恢复了慢 q 键,然后 kick get, check out, 焖啊,然后 get, 呃,我看一下啊, ok, 这个打错了, check 奥特曼啊,然后咱们切换到焖分之了,然后咱们 get, 然后 cherry 摘樱桃嘛,对吧? cherry pick, 然后呢,找到咱们刚才的这个这个啊,也就是 这个抗体,咱们恢复的抗体啊,然后将它恢复到这个焖分之上啊,这个考不过来粘贴,然后回车啊, 那此时呢,咱们这个分支就已经贴的,就是追加到咱们的分子上,这此时呢,咱们再来看一下老规矩,说明咱们就真的已经回来了。 ok, 那 今天的分享就到这里了,我是成员 shaka, 这里只讲干的,我们下期再见。