嗯,今天给大家简单的介绍就是我们,嗯, get 怎么在 idea 中去使用的? 嗯,我们大部分情况下呢,都是学的这个 get 的 一个基础理论,嗯,比如在网上搜这种 啊 git 的 教程,它一般都是让你简单了解 git 的 一个工作原理,然后你会用这种命令来在终端里进行一个使用,但是我们 可能在开发环境中结会结合着我们这个 vs code 或者是呃 ide 去使用到啊,我今天就给大家来简单介绍一下。首先我新新创建了一个文件目录, 如果我们想把它啊开始进行一个代码管理,我们手机首先就要呃把这个文件目录进行一个抽象,抽象成我们的代码仓库, 我们首先点击这个更多窗口命令,这块有一个提交,然后这块有一个创建 get 仓库,我们点击啊,这块会直接到你那个文件目录下,我们点点击打开啊,这样的话就已经出水话好了,我们可以看到 啊,已经有了一个慢分之。然后呢,我们在这个目录下进行一个编写代码,比如我们就简单写一个 test 类吧, t 在私立。然后呢,我们呃这块他会问你是否将呃以下文件添加到 get 处,我们可以选择取消或者添加这个,我们一会就呃手动添加吧,点点取消 啊。比如说我们简单的写一串代码吧,写一串代码的话写个慢方法,然后呃这块就 csma 的 第一次 测试提交好,这个代码已经写完了,现在我想嗯,进行一个嗯,提交管理嘛, 通常情况下我们是会 get enit, 然后 get 把这个代码文件进行一个 get edd, 但是我们在第二中呢,就不需要这么做,直接这块有提交,我们点击这个勾选,其实勾选这一步就相当于我们在命令行中 get edd 的, 把它 加入到我们这个暂存区,然后我们再 get commit, commit 会让你写一个提交信息嘛, 其实我们在这块写一个提交心,就是第一次提交,然后我们点一个提交的话,就类似于我们面板上窗口这个 get commit, 然后我们点击提交,这块没加上, 那我重新点击好,这样的话就已经完成了第一次这种提交。 嗯,然后我们再写一段嘛,就是我们写一个 test 二嘛,然后我们再进行一个提交,这一块就是第二次。 好,我们可以点击这个 get 分 支啊,可以看到它这块已经有了两次提交,第一次提交的话, 呃,这块是第一次提交吗?然后第二次提交的话,这块是第二次提交啊,就可以在这个分支中进行一个简单操作,比如说我们想要 想要什么呢?想要回复到第一次提交,怎么回复呢?我们可以点击这个,呃,第二次提交,点击这个还原提交啊,你看就可以直接的变成我们这个第一次提交, 它会还有一条信息,就是说 recover d s 提交,就是给它变到 d s 提交之前啊,很简单都是,如果我们在面对行的情况下呢,可能会用到 get recite 啊,然后通过这个版本号进行一个简单的一个操作,嗯,可以在这个目录下去看一下这个命令,来给他 get log 看一下,可以看到这些都有这个版本号,通常的话我们像刚才那样的恢复可能需要 get receipt, 把这个版本号复制在下面才能恢复的。第一次。 好,这就是我们简单的进行一个啊操作,但是通常情况下我们会使用到的是添加到远程仓库,远程仓库怎么来做呢? 嗯,我们首先点击这个 git, git 这块有个管理远程,管理远程之后呢,你需要,呃,就是把远程这个仓库 dyl 给输入下来,我们简单的在 嗯, git 中去找一下嘛。 git 中我们去新建一个仓库, 比如我们随便新建一个仓库,新建一个仓库叫 test git 啊,这块的话就私有的话,然后我们不需要选择这个抽象模板,就直接给它创建就可以了,创建的话它会有一个这样的链接,我们点击复制,复制过来之后给它添加到原车上 啊,就可以了,就可以了,这样的话我们就可以直接给他推送到远程进行一个管理。比如说我们 ps 踢掉,然后第三次,嗯,我们进行一个远程远程踢掉,然后把我们的一个框给这块勾选上第 三次远程提交,这回我们不要点击提交,提交并推送就可以给他到我们这个远程上。那可以看到啊,这块有说。嗯,将这个,嗯, 将这个主分支会推送到远程常驻我的主分支,我们进行一个推送。好,他正在推送,已经推送到临床操作上,我们刷新一下给大家看一下,可以看到这是我们第三次进行一个提交, 嗯,这会有个第三次远程提交嘛,对吧?嗯,但是通常情况下需要你配置一下这个 get 啊。
粉丝180获赞1647

哈喽,大家好,我是鱼仔,这是来自网上的一张 get 提交记录的图片,不知道大家看到有什么感觉,如果想看一下代码做了什么调整,光看 get 提交记录根本看不出任何东西。 由于每个人不同的编码风格,一个项目的 get 提交记录是十分混乱的,因此在项目组内部统一 get 提交规范是十分重要的,既能更方便的去做版本管理,又能和一些自动化工具打通, 制定规范简单,但执行很难,于是我就在网上搜索相关的工具,还真被我找到了。一款 id 插件,能让提交记录变得更加规范,插件的名字叫做 get commit message helper。 在插件市场搜 get commit 插件的时候,还有一款下载量更高的插件,叫做 get commit template, 但是支持的版本实在有限,且很久没更新了。 安装很简单,下载下来后在 idea 中使用离线安装的方式进行安装,接下来就可以直接使用了。比如我现在修复了一个 bug, 打开了 get 提交页面,在 get 提交记录上面有一个编辑的图标,点击之后就进入到了分多模块的提交页。首先选择提交类型,我是修复 bug 就选择 fix, 接着根据实际的需要进行填写,首先是变更范围,填写需要变更的模块,接着是简短描述,简单介绍这次提交的内容, 详细描述,更加详细的描述提交的内容,如果有对应的 yesus id, 也可以在这里填写,这里的内容都是按需填,填完相关内容后点击 ok, 之后一个规范的 get 提交记录就生成了。这个插件更实用的地方在于可以自定义提交记录的格式,在设置的阿泽 c 顶中 找到配置。一方面可以自定义生成的模板内容,按需修改模板的内容,并且也可以根据实际需要增加或减少提交类型,形成自己项目组或者公司的规范,还是一个比较不错的插件。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

哈喽,大家好,我是鱼仔。几天前我发布了一个 idea 插件非登 cod 的视频,有小伙伴说想了解一下 cod gx 的效果, 正好我在一年前体验过 code g x, 并且出过视频,来看看经过一年更新, code g x 升级到了哪种程度。 code jax 是智普 ai 旗下的一款产品,安装很简单,在 idea 的插件市场直接搜索 cod jax 进行安装,或者通过在线版的插件市场下载,然后离线安装。 常规的一些代码提示问答功能就不演示了, ai 插件的标配了,智普 ai 的大模型应该是国内做的数一数二的了。现在我改了一点代码,然后准备提交到 kit 仓库,在提交仓库之前,可以让扣的 jx 对变更进行审查,只需要点击这个图标 就会自动生成 deft 报告。因为我在这段代码中写了一个可能会导致出现 bug 的代码,获得 jx 的代码审查功能就能找出来这个 bug。 假设这段代码没有问题,此时我应该要写点 get 的提交记录,也只需要点一下这个图标, code jx 会自动根据历史的提交记录格式以及本次提交的代码内容生成这一次的提交记录。 我之前分享过一个能让 get 提交记录变得规范的差劲,没想到现在直接就生成了。下面这个功能也很有意思,在写代码的过程中,经常会遇到想要了解自己所使用框架内部的原理的情况, 就可以使用扣在 g x 的 repo 功能。比如我想要在 spring pro 的项目中实现一个拦截器,就可以选择 spring pro 的框架,然后进行询问, 他除了会给你具体的实现方式之外,还会将框架中拦截起相关的代码都列出来。这个功能不管在查问题还是读原码时都很好用,能获得更有针对性的回答。 当你输入斜杠的时候,就可以触发内置命令,包括了解释选择的代码、未选择的代码生成注释、修改选中代码中的 bug 以及生成单元测试。 我来试试这个增加注视的功能,选中代码,点击生成注视,这段代码的注视就直接生成了,也不需要去来回复制,这个功能真的不错。再来试试修复代码的功能,这段代码有一个下标越界的问题,选中这段代码,选择修复 bug 的功能,果然这个 bug 被找出来了。 另外这款插件还集成了一个工具箱,还有一个代码翻译为其他语言的功能,对于有实际需求的人来说也很不错,大家可以自己去体验一下这个插件。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

本节课我们来看什么是 git 与 github, 介绍两种在国内访问 github 加速的方法。我们先把 github 这个名字拆开,就是 git 加 haub 两个单词。我们先看左半边的 git。 git 是 一个开源免费的软件,它的功能是版本控制。各位上学写论文的时候一定有这样的经历,论文写了第一版、第二版、第三版,定稿版,最终版打死不改最终版。我们小心翼翼地保存好论文的每个版本,就是为了应对各种突发情况。 如某一天你突然需要找回论文的某个历史版本的某个段落,我们就可以很容易的从历史文件把它找回来。 这个保存了多个历史版本的操作就是最原始的版本控制。不过这是一种纯人工的方式。想象一下,如果一个项目里面有成千上万的文件,又有成百上千的人对这些文件进行协同开发,版本控制会变成一个极其复杂的工作。纯人工的方式肯定无法负担这些操作。 为了解决版本控制的难题, git 诞生了。有关 git 诞生的故事,本课程的第五节会进行详细介绍。 git 就是 这样一个帮助我们进行版本控制的软件。事实上, git 是 世界上最多人使用的版本控制系统。 当一个文件夹被 git 管理起来以后,就变成了一个 git 仓库。被 git 仓库管理的文件夹下面会生成一个点 git 的 紫文件夹, 用来存放 git 的 版本控制信息。本课程的第十节会对点 git 文件夹进行深入探讨。 git 使用 commit, 也就是提交,作为版本控制的基本单元, 每完成一次 commit, git 都保存了一个仓库,此时状态的快照文件夹里,所有文件的状态都被记录了下来。随着 commit 的 越来越多,会形成一条 commit 的 历史链路, 这样整个仓库都是可回溯,可以查看历史的,每个项目参与者的每一次改动都会被这个 commit 链路记录下来。 git 的 仓库分成两种,分别是 local repository, 本地仓库,还有 remote repository 远端仓库。 本地仓库指的是运行在你自己电脑上的 git 仓库。如果你想把本地仓库在远端服务器上进行一个备份,或者想跟其他人分享你的代码,就可以把本地仓库上传到服务器上面,这样就拥有了远端仓库。 我们可以自己购买服务器,自行搭建远端仓库,当然也可以使用别人搭建好的远端仓库。 gitlab 就是 这样一个免费提供远端仓库的网站。当然除了 gitlab 以外,还有其他类型的远端仓库的服务, 比如 gitlab, bitbucket 等等。本课程我们主要专注于学习 gitlab, 其他那两个用法与 gitlab 也十分的类似,可能仅仅是按钮变换了个位置,如果你学会了 gitlab, 也可以很轻松地使用另外两个服务。 我们还是回到 github 这个名字,我们来看右半边。 hub 的 意思是中心汇聚集合全世界的很多开发者会把自己用 git 进行版本控制的仓库,也就是一个个的项目文件夹上传到 git 网站上面, 这个网站就变成了 git 仓库的集合,也就是 hub。 所以 git 加 hub 就是 github, 它是全球最大的代码仓库托管与协助平台,可以在里面存储、分享,并且与他人一起编辑代码。 tiktok 上绝大部分的功能都是免费提供给开发者使用的,尤其被微软收购以来,以前一些需要付费的功能也渐渐转为免费,比如创建私有仓库,还有 github action 等等。 github 这些免费好用的功能吸引了大量开发者入驻。根据二零二三年的统计数据, github 上面的注册用户已经超过了一个亿,仓库数量也已经超过了四个亿。 github 上面的仓库分成两种,公开仓库还有私有仓库。 所有的公开仓库在 github 上面都可以被搜索到,而且这些公开仓库都是开放源代码的,所有人都可以进去直接浏览学习其中的代码,并且根据一定的规则使用这些代码。事实上, github 也是世界上最大的开源社区, 比如大名鼎鼎的 linux 操作系统 python 的 c 源显示器 c, python 还有 enix 等等,都是托管在 github 上面的开源项目。 所以开源是计算机科学的基石与瑰宝。我们生活中用到的大部分软件都是在开源软件基础上进行二次开发得来的,或者在底层依赖着大量的开源软件,可以说没有开源就没有如今繁盛的互联网生态。 在我们学习使用 gitlab 网站之前,必须要解决一个重要的问题, gitlab 的 时候经常会出现速度慢、连接失败等情况。 节课我来推荐两种方式给 get up 加速。这两种方法都使用了开源免费的软件,而且久经验证,广受好评,可以说是安全稳定。 我们先来看第一种方法,在浏览器输入这个地址, steam p p 点 net 这个软件就是之前的 steam 加加,现在改名叫 what 工具箱,这是一个开源免费的跨平台的多功能加速器, 我们在这里找到自己的操作系统,把它下载下来就可以了。如果是 windows 操作系统的话,我们可以搜索微软商店,打开微软商店,然后在微软商店里面搜索 what to kit 这款工具,把它安装好就可以了。 好,安装好以后我们右键以管理员身份运行,把它打开,进来以后我们选择左侧的网络加速这里我们往下找,找到这个加速 tab, 然后点击一键加速就可以了。加速成功以后,我们试着再访问一下这个地址, getop 点 com, 在 流量统计这里可以看到流量都经过了它的代理,现在使用 getop 的 速度比以前快了很多。 我们来看第二种方法,首先还是进入 getop 首页,如果这个首页打不开,那就再看一下。第一种方法,我们进来以后搜索这个项目叫做 dv sidecar, 我 们搜索一下,我们找到第一个项目,叫做开发者编车,我们点进去这个项目,可以看到有一万四的 star, 解决了大家很多的问题, 我们往下找,点击这个 release 最新版本是一点八三,我们把它下载一下还是往下找,这里每个操作系统都有安装说明, 我们往下找,找到这个 exe 文件,把它下载下来,下载好以后我们双击安装一下,安装完成以后,我们打开软件,我们使用这个软件的第一步,点击这里的安装跟证书,我们点击去安装这里,点击安装证书,选择本地计算机,下一步将证书放到下列存储,点击浏览, 点击受信任的跟证书颁发机构,点击确定,然后再点击下一步,最后点击完成好,这就安装完成了。我们把窗口关掉,然后我们勾选上代理服务 系统,代理好,这样就加速完成了,可以看到加速效果很好,访问 get up 速度很快。使用这个软件有一个注意事项,就是每次关机前,我们记得先把这个代理关掉, 退出软件,然后再关机。如果不关闭这个软件,可能会导致下次开机无法上网。如果你发现重启完电脑无法上网了,我们记得开启这个工具就可以重新上网了。 除了给 gitap 加速,软件还提供了 npm, 还有 pip 的 加速,有需要的话我们点击应用把它启动起来就可以了。现在你应该可以轻松地访问 gitap 的 首页 gitap 点 com 了, 我们马上可以开始进入下一部分的学习,就是在 gitap 上面注册一个你自己的账号。下一节我还会对 gitap 的 主要界面 repository, 也就是代码仓库进行深入讲解。

好,接下来就给大家简单介绍一下,就是我们 idea 中在多人写作中怎么进行嗯,简单便捷的一个操作。嗯,为什么这么说呢?就是通常情况下,我们可能一个代码维护是多个人,或者我们公司代码维护是多个人的, 当别人进行了操作,我们怎么进行拉取合并?当我们自己呃进行开发完毕之后,怎么去把它推送到我们的呃主要分支上?首先,呃,我这个项目已经有了两个分支,第一个是 呃慢分支,也就是我们所说的主分支,然后还有一个是 dy 了部分分支,也就是我们的开发分支。 大家可以看到这块 get 的 一个数,其实是我们这个 delete 分 支已经领先了慢分支两个版本,也就是说这种情况模拟情况是什么情况?就是我们可能 呃在我们 delete 分 支上已经写好了新功能,新需求,然后这个我们自己也测试好了,我需要把我这个 嗯新写的代码,然后给他提交到我们的这个主分支上。通常情况下,我们先要进行一个合并,也是把我们本地的 dyl 分 支和主分支进度给他 拉齐了,然后再把我们的本地的慢分支推送到远程分支上。怎么进行一个操作呢?首先我们给他迁出到 我们这个主分支上啊,看,可以看到这个工作区已经是主分支了,当我们点击这个迁出,这有一个小标签,也就是展示到你现在所 用到的一个工作区,这会给大家简单介绍一下啊,然后我们点击这个 develop 分 支,然后我们点击这个将 develop 合并到焖分子上啊,我们点击啊,可以看到啊,这样我们进度剂已经拉齐了,也就是我们主分支,我们本地的主分支 和我们 d y 分 之进度是一样的,大家可以可能在这也能看到啊,就是我们这个,呃, d y 分 之和 d y 分 之都是 进度是一样的,但是这呢我会发现我们这个远程分之还没有进行一个更新,同样还进行那个,嗯,提交的一个操作,我们 更改后我们就直接进行一个呃,更改,然后我们直接修正,来到仓库来看一下, 可以看到这块已经进行同步更新过来了, 是吧?然后我们接下来呢就再模拟一下,就是别人更改了代码之后,我需要拉他的代码,然后我再进行更改,怎么操作呢?通常情况下我们在远程模拟一下啊,模拟一下,比如别人,别人这块做了代码修改也是, 嗯,随便写个原装修,修改了电脑 给它更新一下。好, 我们点击我们这个 id, 嗯,我们现在在主分支,因为他主分支已经别人已经提到这个代码到主分支上,我们首先给他进行一个更新啊,合并到当前分支上,然后点击确定 啊,可以看到我们已经把把这个远程代码给拉取下来了,但是呢,我们不能直接在这个远程分,也也不能说不能直接在这个本地的主分支进行更改啊,通常情况下 我们主分支我们是不动弹的,我们在我们自己这个 develop 部门之去去去做我们这个代码更改,但是 develop 部分之已经也没有这个刚才拉取下来的,我们通常情况进行一个合并,我们点击这个将慢分支合并到我们的 develop 分 支, 然后啊这块会将百分之合并到他们的。嗯,修改,然后我们点击接受他们的修改。啊,可以看到这样的话就就把这个代码给拉取过来了。 嗯,然后我们在这块进行一个修改操作就可以了。然后同理,当我们修改完,操作完还是按照我们刚才那个方法,对吧?我们把它呃 合并到主分支,然后主分支再推送上去,这样的话就实现了一个多人协助的一个过程。好,就这样,谢谢大家。

相信大家养虾的时候都遇到过升级把自己搞挂了的情况,我也苦恼不堪,于是一怒之下和我的虾虾一起,我不扣了,一个虾虾守护天使,我扣 他能监控虾虾的健康状况,要是配置改出问题,他用 get 自动回滚到最近可用的配置自动重启修复, 还会贴心的给你发短信通知虾虾的状态,以后随便你的虾怎么折腾,愿这世间再无自杀的龙虾。

嘿,大家好啊,是不是刚开始学编程,一听到 get 啊 get 吧这些词就感觉一个头两个大。别慌,你绝对不是一个人, 今天这期内容啊,就是专门为你准备的快速上手指南,咱们一起来把它搞明白,让它变得超级简单。 好,我们就这开始吧。真的,我得先说一句,如果你觉得学 get 这玩意特费劲,那真不是你的问题, 你看,这话说的多实在啊,学习 get 的 道路并不友好,它让人困惑,啥也怕,甚至可能让人沮丧,太多人都有这种感觉了。所以啊,咱们今天就换个轻松点儿的方式,把它给捋顺了。好了,那我们今天的路线图是这样的,很简单, 首先呢,我们得搞明白为啥要用这东西,然后把 get 和 get up 这俩老是让人搞混的概念分清楚。 接着,我会带你走一篇最核心的工作流程,然后咱们就动手创建你自己的第一个项目。最后嘛,咱们再稍微展望一下后面会学到的东西,再聊一个我觉得特别重要的,能让你心态放平的好想法。好,那咱们就从第一部分开始, 我们为什么要跟踪代码呢?嗯,我觉得在学习怎么做之前,先搞明白为什么做,这才是最重要的。这一切的核心呢,都围绕着一个概念,叫做版本控制。听起来可能有点专业啊,但说白了,他就像是给你的文件拍快照, 你想想,你没改动一点代码,就咔嚓拍一张照片存下来,这样一来,你就拥有了一部完整的可以追溯的历史记录。 最厉害的是什么呢?你可以随时翻看这些老照片,甚至一键穿越回到过去的任何一个版本,这简直就是咱们程序员的后悔药对吧?如果还是觉得有点抽象,那你就把它想成一个专门给代码用的 google drive 或者抓 bug, 这样是不是就熟悉多了? 不过呢,它俩有个最大的区别,像网盘这些东西呢,它通常是自动给你同步的,但是用版本控制呢,是你自己来决定什么时候该保存一个快照, 这就意味着主动权完完全全掌握在你自己的手里。好嘞,那咱们就进入第二部分了,来,我们来解决一个我敢说困扰过每一个新手的经典问题, get 和 get hub, 这俩家伙到底有啥区别? 你只要记住这个比喻就行了,特别好理解。 get 呢,就是你电脑里本地的一个程序,一个引擎,它的任务就是勤勤恳恳地帮你追踪记录代码的每一次变化。而 get hub 呢,它是在云端的,你可以把它想象成一个超级大的在线车库。 这个车库是干嘛的呢?就是专门存放你用 get 这个引擎管理好的那些项目。所以一句话总结, get 是 工具, github 是 存放你用这个工具创造出来的东西的地方。当然了, github 虽然是现在最火的,但它也不是唯一的选择,市面上还有像 github 这样的平台,甚至如果你技术够牛,完全可以自己搭个服务器来用。 不过,为啥我们绝大多数人还是会选择用 github 这种云服务呢?原因很简单,因为它把所有脏活儿、累活儿都给包了,什么 server 啊,硬件儿啊,数据备份啊,你通通不用操心,这样我们就能把所有精力都放在写代码这件最重要的事情上, ok, 工具和平台都分清楚了,那咱们就来看看,在真实世界里,程序员们到底是怎么用这套东西的。这个核心工作流程啊,其实就是你的代码从你的电脑出发到云端去旅行的一个完整过程。 其实整个流程啊,就四个核心步骤,你记住这个循环就行了。第一步叫克隆,英文是 com, 顾名思义,就是把云端的项目完整地复制一份到你的电脑上。第二步就是修改 change, 这好理解,你就在自己电脑上该写代码写代码,该删文件删文件。第三步特别重要,叫提交 commit, 就是把你刚才做的所有修改打包拍成一张快照,并且还要写上一句说明,告诉别人你这张快照里都改了啥。 最后一步就是推送部署,把你本地提交的这些快照一次性的发送回云端的仓库里。你看,克隆修改、提交推送,就是这么一个胸怀。 哎,你可能会问,既然有推送上去,那肯定得有办法把它弄下来吧?没错,这个操作就叫拉取破, 什么时候用呢?比如说你团队里的小伙伴更新了代码,或者你换了台电脑想继续工作,这时候你只要执行一个拉取操作,就能把云上最新的代码同步到你现在的这台电脑上了。 好了,理论知识储备差不多了,咱们光说不练假把式时候来点真格的了, 来,跟着我,我们一步一步的创建你人生中第一个代码仓库。操作很简单的,你就跟着我这几步走,首先打开,找到那个大大的新建仓库按钮,点它, 然后给你的项目起个好懂的名字,接下来你要决定它是公开的还是私有的。哦,对了,这里有个特别重要的选项,我强烈建议你勾上,就是使用 ramen 文件出示话,这玩意儿就好像是你项目的说明书封面,很重要。 然后呢,再加一个叫 data ignore 的 文件,这个文件特别贴心,它可以帮你自动忽略掉很多你不想上传的临时文件或者翻译文件。最后选一个开源选择式就大功告成了。 哎,这里我跟你分享一个特别实用的小技巧,尤其是对新手来说,刚开始的时候啊,把你所有的练习项目、实验项目全都设置成私有仓库, 为什么呢?因为这样你就拥有了一个完全属于你自己的安全沙盒,你可以在里边随便折腾,想怎么试就怎么试,犯再多错也没关系,反正别人也看不见你那些乱七八糟的提交记录,心里压力一下就小很多了,对吧? 好的,云端的仓库建好了,下一步就是把它弄到我们自己电脑上去,下载一个叫 github 的 软件,这是官方出的,特别好用。 装好之后登录你的账号,然后选择从网络克隆一个仓库,这时候你应该能看到你刚刚创建的那个项目了,选中它,然后在你的电脑上找个地方建个文件夹来放这个项目。 哎,这里我要特别特别强调一下,这个文件夹千万千万不要放在像 dropbox 或者 one drive 这种会自动同步的网盘里边,不然它们俩会打架,到时候会出各种奇怪的问题。当你把项目克隆下来之后,你会发现之后的工作流程简直简单到不行, 你就在你本地的文件夹里改你的代码。改完之后呢,打开 github 这个软件,在左下角那个框里写一句,这次你都改了啥, 然后点一下提交按钮,再点一下推送按钮,搞定。没了所有那些复杂的命令行指令,这个桌面客户端都帮你悄悄地在后台处理好了。 ok, 到这里最核心的基础你已经掌握了,那我们再花一点点时间呢,快速的看一眼未来你肯定会遇到的一些进阶概念, 你现在不用担心学不会,完全不需要深入研究,咱们就先混个脸熟,知道有这么回事就行。迟早有一天,你会碰上一个叫合并冲突的东西,这是啥呢?你想象一个场景,你和你的队友俩人都改了同一个文件的同一行代码,这时候 get 就 彻底蒙圈了, 他就不知道该听你的还是听你队友的,所以他就会罢工,然后把这个难题抛给你,让你来当裁判,手动决定到底要保留谁的代码。还有一个超级有用的概念叫分支,这个你可以把它理解成你为你的项目代码创建了一个平行宇宙。 比如说你想开发一个大的新功能,或者干脆做一个全新的二点零版本,你就可以拉一个新分支出来,在这个平行宇宙里随便修改,随便测试,它完全不会影响到你那个稳定运行的主版本。 等你把新功能做好了,再把这个平行宇宙合并回主世界就行了。好了,我们到了最后一部分,我觉得这部分聊的话题呀,可能比前面所有技术细节加起来都重要,因为他关乎你的心态,关乎你如何看待工具这件事。 这句话是原作者亲口说的,我觉得特别酷。他说我在日常工作中根本就不用那个命令行,真正重要的是你把工作做完了。 你看,这是一个多么坦诚又多么有力量的观点。所以我想对你说的是,以后绝对不要让任何人,因为你用的是图形界面的工具,而不是敲命令行就让你觉得自己不行。 记住,真正重要的是你有没有高效的解决问题,有没有把活干完。至于你用的是什么锤子,什么扳手,那根本不重要。尤其是在学习的初期阶段,选择那条更简单的路,就是最聪明的路。 你的宝贵时间和精力应该全度投入到学习编程逻辑实现功能上,而不是去跟一个黑乎乎的复杂的命令行窗口死磕。 那么聊到这儿,你准备好去保存你的第一个项目,正式开启你的编程之旅了吗?我真心希望今天的内容能给你带来足够的信心。别犹豫了,现在就去动手试试看吧!

在 coser 里,用 ai 辅助开发 git 不是 一个可有可无的工具,而是你的核心安全网。 ai 生成的代码往往具有实验性,只要你对当前进度满意并及时提交,就等于给项目存了个档。后面 ai 哪怕把代码改乱了,你也能随时回退到之前的稳定版本。 它还是团队协助的底座,能有效避免多人同时调用 ai 产生的代码冲突。最重要的是,它给了你实验自由, 你可以大胆开分枝,去尝试 ai 给出的各种激进建议,成了就合并,败了就回滚,这种零成本的试错能力,才是高效开发的保障。 很多人容易把 git 和 gitup 搞混,其实它们完全是两码事。 git 是 装在你电脑里的软件,是一个纯粹的工具,专门负责记录代码的每一次变动。而 gitup 或者 gitup 是 基于 git 开发的网站,也就是代码托管平台。 简单来说, git 是 干活的,平台,是存活的。除了存代码,平台还提供了向问题讨论、合并请求以及自动化部署这些高级协助功能。 我们可以打个比方, git 就 像你手里的记账本,每一笔代码的增删改查,它都记得清清楚楚。而 git 或者 git 就 像是银行, 你把账本里的钱存进去,别人才能看到并和你做交易。至于选哪个平台,如果你追求全球开源生态, getapp 是 不二之选。但如果你不想折腾网络环境,希望访问速度快,那国内的机器体验会更好。 大家根据自己的实际情况选一个就行。安装 git 没什么门槛,直接去官网下载对应系统的安装包,一路点击下一步就行。装完之后,打开终端,敲入 git 空格两个短横线 version, 只要看到屏幕上跳出了具体的版本号,就说明你的 get 环境已经彻底搞定了,我们可以进入下一步环境。装好后,第一件事是自报家门,你需要把你的名字复制给局用户名变量。 命令是 git config 空格两个短横线 global 空格 user 点 name, 后面跟着你的名字,接着用同样的格式把你的邮箱复制给局用户。邮箱变量这一步非常关键,因为 git 必须知道每一行代码到底是谁写的, 有了这些身份信息,后续的提交记录才能做到有据可查。最后,你可以敲入 get config 空格两个短横线 list, 来检查一下配置是否已经生效。 配置 s s h 的 第一步是生成一对密钥,在终端输入三十短横线,递进空格短横线 t, 后面跟着一 d 二五五幺九算法, 再用短横线大写 c, 把你的 github 邮箱地址复制给注示参数。这个算法比传统的 rsa 更快,也更安全。直行后一路回车,使用默认路径和空密码即可。密钥对就生成好了, 有了密钥还得让系统管起来。先执行 evo, 后面跟着双引号扩起来的 s h h 短横线 agent 空格短横线 s。 这项命令会启动后台代理进程。 接着执行 s a s h 短横线 add 命令,把刚才生成的私钥文件路径复制给添加参数,这样你的电脑就记住了这把钥匙,以后访问远程仓库就不再需要反复输入密码了。 现在要把公钥交给 git, 苹果用户用 p b copy 命令, windows 用户用 clip 命令,把以点 pub 结尾的公钥文件内容提取到剪贴板,注意千万别动那个没有后缀的私钥文件。 然后登录 git, 进入设置里的 s s h 密钥页面,点新建,把剪贴版里的内容直接粘贴进去,起个名字保存就行。 最后一步,验证连接输入 s s t 空格,短横线大写 t 空格 git at gitlab 点 com。 如果终端返回了带有你名字的欢迎信息,并明确告诉你已经成功认证,那就说明这条安全通道彻底打通了。以后你在 cursor 里推送代码 就像在本地保存文件一样顺滑。登录 github, 点击右上角的加号,选择新建仓库,填好名字,根据项目性质 选好公开还是私有,直接点创建。这一步最核心的目标是拿到那个已点 git 结尾的远程地址,它就是你本地代码未来要投送的云端站点。回到本地项目根目录,先执行 git in you, 把当前文件夹正式转化为 git 仓库。接下来的关联操作非常关键,我们要把刚才复制的远程地址复制给名为 origin 的 远程变量,命令是 git remote add origin, 后面接上地址。 这一步做完,本地项目和云端仓库就彻底打通了, origin 以后就代表了你的远程目的地。关联好仓库后,最基础的操作就是命令行三板斧。首先执行 get add 点,把当前目录下所有的修改全部复制给暂存区。 接着执行 get commit 短横线 m, 把你的提交说明复制给消息参数,完成本地存档。最后敲入 get push, 把本地的分支同步到云端。这套流程虽然稳,但每次都要手动写,提交信息确实有点繁琐。 在 cursor 里,我更推荐你用它的图形化界面,点开左侧的分值图标,所有改动过的文件一目了然。最爽的功能是消息框旁边那个星星图标,点一下, ai 就 会自动分析你刚才到底改了哪些逻辑, 然后把精准的描述文字直接复制给提交框。它生成的记录通常比你自己写的要专业得多,完全省去了抓耳挠腮想词的麻烦。 确认 ai 生成的信息没问题后,直接点提交并同步,代码就从本地飞到了云端。 这种把 ai 融入版本控制的工作流,能让你把精力全放在写代码上,而不是折腾工具。学会了 get, 你 的 ai 开发才算有了后悔药。下集我会带你解锁 cursor 的 高级调试技巧, 教你如何让 ai 帮你精准定位并修复 bug。 别忘了点个关注,我们,下期见!掌握这九个核心命令,你就能应付九成以上的 ai 开发场景。 get tab 点负责暂存。 get commit 短横线 m, 把说明文字复制给提交参数。 get push 推送到远程 拉取用 pull, 看分支用 branch, 切分支用 check, 再加上合并分支的 merge, 看状态的 status 以及查历史的力气,这套组合拳打下来,你的代码库就稳如泰山。 合理使用版本控制,本质上是给你的 ai 开发买了一份保险,让你在追求高效率的同时,始终握着后悔药。 下集我会带你深入 cursor 的 高级调试技巧,看看怎么让 ai 帮你精准定位那些藏得很深的 bug。 觉得有帮助就点个关注,我们下集见!

今天给大家分享一下在爱恋中 get 使用的一些小技巧,大概包含如下的三个方面。呃,其实事情是这个样子的,之前在和同事做一些啊,开发的合作开发的时候,然后等着他提交代码的时候,发现他对这个工具的使用啊,不是很熟练啊,效率比较低,所以就有了这期视频。 好,那我们来说一下,正常我们提交代码的时候呢,我们一般会去看一下啊,像这样我们的代码当中会啊有哪些变动,对吧?最后去看一眼,提交之前最后看一眼。 那我们在看的时候呢,有一些老项目啊,他的一个类可能是说会有啊,几千行,甚至说上万行都是有可能的。 那你有时候你可能比如说这极端的情况,你刚开始改了第一行,然后又改了一下最后一行,那你这个时候你看完第一行,你要划到最后一行,你要划好久,对吧?这样效率是比较低的。然后我们可以借助于这个上下的 两个箭头啊,我们快速定位到自己的上一次变动和下一次变动,这个样子的话,会比较啊,大的提升你的一个效率问题啊,虽然说这边啊,这个这个蓝点也是可以可以可以快速的定位到的。嗯,然后呢,其实是, 呃,在一些老项目当中啊,他的一些格式化规则和我们现在的格式化规则可能都不一样,然后我们去做了一些格式化的调整,就会产生非常多的一个空格,或者说空行的一个变动,对吧?那我们能不能忽略这些变动不看,而只是去看我们实际的代码的一个更改,其实是 可以的,然后我们在这个地方找到忽略啊,空格和空行,这样的话,你就会发现这个地方他就不会提示你了,然后你这个上一个下一个的话,他也会,就是不会走你那个空行的一个变动了,对吧?然后呢另外再说一点啊,这个地方的话,你像我的一个变动, 那我他光提示我这一行变了,其实我并不知道到底变了哪些东西,对吧?你还要去一个一个的去看,这时候我们可以借助于这边啊,去高亮这个词,然后你会发现其实啊这个地方是会有一个高亮的颜色啊,告诉你其实改的是这三个,对吧?这几个字 啊。然后呢,这时候如果说我们发现,哎,这个改动其实啊并不是我想要的,我想要再做一些调整,其实你可以,呃, 一般来讲的话,大家可能是说会直接点到这个类,然后找到这一行,对吧?然后去做修改,其实你可以直接在你这个地方啊,定位到你要改的那个地方,借助于他的这个占卜功能,你就可以直接跳到你要修改的这一行,对吧?这样子的话效率是非常高的。 嗯,然后再说一点,就是我们正常去提交啊代码的时候,你可能是说我们的项目当中啊,有很多的程序并不是 改动要提交的,而是说为了我们把项目在本地跑起来啊。就以这个为例,其实我在这个地方是改了一个这个 ip, 对吧?那其实这个东西的话,我是不想去进行一个提交的, 对吧?然后我们能不能说是忽略掉他,其实很正常,我们看着大家都是说把这个点掉,对吧?点掉了之后就会 本次提交就不会带上,但是你下一次提交的时候他还在这,你还是要再去点选一下啊。那我们有没有一个快捷的方式能够解决这个问题呢?其实是有的啊,我们这可以新建一个啊,变动变动的一个历史册,我们这边就叫历史册一, 那你只需要把你的这个不想要提交的一个变动把它拖到这里面来,因为这个变动他可能不仅仅只是说我展示的这一个雷克胜的一个压面文件,正常 的话,呃,你可能会有很多个的一个文件,你每次都会去进行一个啊不提交的一个勾选,对吧?万一哪一次勾错了,他就提交上去了。所以啊,建议大家去新建一个历史的话,把放进去,你正常的话只是提交这个默认列表里面的都行,然后这个里面的是不要勾选的 啊,这样子的话,嗯,就可以解决这个问题。好吧,嗯,今天的分享就到这里,我们下期再见。

第二个就是 idea 集成 get, 这个集成 get 也很简单啊,在这里去选择它的,你本地装的这个 get 的 客户端的一个路径,指向 get 一 点 exe, 这里是要选到 get 点 exe, 这里我可以给大家看一下, 就在我们的 settings settings 那 里,然后在这里,在这里你这里可以 test 一下, 如果它能正确显示你的这个 get 版本号,那就说明你是集成成功了,当然了,集成成功,集成成功之后的话,我们这里也会出现一个 get, 这个工具栏也会出现 get, 这是集成 get。 集成 get 也很简单,但是也是我们需要在在 id 二中使用 get 之前必须要做的一项工作。第三点就是克隆代码,我们在 id 二中也可以直接克隆代码,通过这个 就是我们新建一个工程,通过这个版本控制来去新建个工程,然后这里可以填写你这个路径,这下面就你这个工程, 你这个 get 仓库的代码克隆到本地哪个路径下面就行了。当然了,我一般建议大家是使用命令窗口啊,因为你使用这个 id 克隆的话,有时候可能会出现问题,可能会出现问题的,你看有时候它会出现问题的,出现问题的话就说明你 id 尔 确保你 idea 已经集成 get 的 情况下,就是你 idea 可能没有集成 get, 如果你确保它已经集成 get 了,那你就使用 get 半系命令穿过来,可能就没必要纠结这个问题了。

我们今天就来好好解析一下 get, 看它在芯片验证这个领域,是怎么从一堆乱糟糟的代码里帮我们理出头绪,实现那种天衣无缝的团队合作的。 好,咱们直接切入正题,先问大家一个问题,扪心自问一下,你的项目文练家是不是有时候感觉就像一个数字垃圾场?如果你经历过那种一个目录里塞满了各种各样乱七八糟的版本文件,那你肯定懂我的意思,没有一个像样的版本控制系统,项目很快就会乱成一锅粥。 咱们来看几个简直就是噩梦一样的场景,看你中招了没?第一个,我管它叫祖传代码命名法,文件里全是这种什么 nv v, 二下划线、 final d s v, 还有更绝的 nv v, 三,打死不改版 d s v, 还有啊,更惨的覆盖大悲剧就是你同事辛辛苦苦写了好几天的代码,结果被你不小心一个复制粘贴,全没了。 最让人澎湃的还是神秘 bug, 昨天跑得好好的代码儿,今天突然就不行了,可文件改动有好几百个,上哪儿找问题去?简直是大海捞针。不过呢,好消息是,面对这种混乱,其实咱们有更好的办法,这个办法的名字就叫 get。 那么 get 到底是个什么东西?你可以把它想成是咱们代码的时光机,同时也是分身术。你看它本质上是一个分布式的版本控制系统,能帮你把每一次的修改度记录下来,而且还能让你和团队其他人合作的时候不会互相打架。所以说它带来的就是秩序和效率。 get 的 核心原理其实特别好理解,它就分了三个区,第一个呢,是你的工作区,这个好懂,就是你实实在在写代码、改代码的地方。 然后是第二步,赞存区,这个地方,你可以把它想象成一个购物车,你觉得哪些修改可以了,就把它们放到这个购物车里。最后一步就是本地仓库,这就相当于你的个人档案馆了,所有你结账后的修改都会被永久的记录在这里。 好了,基本原理明白了,那咱们就得来点实际的了。接下来咱们就来看一个验证工程师在日常工作中最常用最重要的几个命令到底是什么?记住,在你动手做任何提交之前有一个习惯。最重要的几个命令到底是什么?记住,在你动手做任何提交之前,有一个先停一下,看清楚你到底改了些什么。 这个简单的动作就像一个安全检查,能帮你避免好多低级错误,比如说把一堆没用的临时文件也给提交上去了。这时候啊,就轮到一个超级有用的命令出场了, get status s, 你 想象一下啊,你刚跑完一次,仿真文件夹里生成了一大堆日制文件,波形文件。用这个命令,它就能帮你过滤到这些杂音,一目了然地告诉你,你真正修改得到此 s b 文件是哪及格。 这样一来,你不就不会手滑把那些无关的文件也提交进去了吗?它给你的就是一个特别干净清爽的盖了。确认好要提交哪些文件之后,咱们前面说的那个购物车比喻就派上用场了。你用 get add, 就 好像是把你的新写的 app 驱动和监视器捡起来放进购物车里, 然后呢, get commit。 这个动作就相当于去收银台结账,把购物车里所有的东西,也就是你赞成的修改给永久性的保存下来。 但是这里特别重要的一点是,结账的时候你得写清楚小票信息,也就是提交信息,比如修复 a b b p n able 协议错误,这样以后你回来查账,才能一眼就看明白当时是为啥改的。 有时候咱们也需要删除文件,对吧?这里有两个命令很容易搞混, get r m 这个命令很彻底,它会把文件从你的文件夹里,还要从 get 的 历史记录里都给删掉。 但是 getr m 杠 c h a c h 就 不一样了,它只是告诉 get 位,以后你别再管这个文件了啊,但文件本身呢,还好好的待在你的本地文件夹里,这个有什么用呢?举个例子,比如你一不小心把一个特别大的仿真克制性文件给提交了,用这个杠 r m 杠 c h a c h 选项就能让 get 以后忽略它,但你本地还能照常用,就很方便 好了。自己啊,一个人怎么用 git? 咱们差不多搞明白了,现在重点来了,我们把目光转向团队协助,看看 git 是 怎么让一群人高效地在一起工作的。在团队里干活儿,你首先要问自己的一个问题,就是我现在在正确的分支上工作吗?你要知道,分支这个东西是让大家能同时开发,又不会互相干扰的基础。 其实管理分支很简单,你用 git branch 这个命令,就能马上看到你现在在哪个分支上,避免在主分支上乱改。而 git checkout 呢,就是让你在不同分支之间来回切换,比方说设计那边修复了一个 bug, 你 就可以用 checkout 切换到它们的 rtlfix 分 支,把最新的代码拿过来,然后跑你的测试验证一下这个 bug 是 不是真的修好了。 你看这样每个人都能在自己的小天地里工作,互不干扰多好。说到从服务器上拿最新的代码 fetch 和 pull 这两个命令很多人都分不清。我给你打个比方, get fetch 就 像是只看不动,它会把服务器上最新的历史记录下载下来,但不会动你正在写的代码,这在你自己的活儿还没干完的时候用就特别安全。 而 get pull 呢,就比较直接了,它不仅下载,还会马上尝试合并到你当前的工作里。所以啊,一般早上到公司第一件事就是用 get pull 把团队昨天晚上所有的更新都同步到你电脑上。 好,现在你本地的功能已经开发完了,测试也全都通过了,完美。那接下来就该分享你的劳动成果了。这时候你就可以用 get push 这个命令,把你本地的这些提交一把,推送到共享的远程仓库里去, 这样团队里的其他人就都能看到你的杰作了。接下来我们来聊聊 get 最酷的功能之一,那就是它的安全网。这个安全网啊,能让你像个侦探一样去破案找 bug, 还能像拥有超能力一样让时间倒流。 咱们来想象一个场景,就叫谁动了我的记分板,一个回归测试突然就失败了,这时候怎么办?你就可以用 get lock scoreboard 编 s v 这个命令,专门去看这一个文件的修改历史,这样以来,你很快就能定位到最近一次是谁改了它,然后你就可以直接端着电脑去找它聊聊了。你看,这就是 get 的 侦探能力。 而 git reset 呢,简直就是征集后悔药。比如说你心血来潮搞了一次特别复杂的代码重构,结果哪了?全搞砸了,动都动不了了。别慌, git reset 杠 hard head。 这个命令可以一瞬间就把你的代码完完整整地恢复到上一次提交的那个好的状态,就好像刚才那场灾难从来没发生过一样。 好了,到这里,我们基本上已经把日常工作里百分之九十的场景都覆盖了。那接下来,我们基本上已经把日常工作里百分之九十的场景都发生过一样。好了,到这里,我们基本上已经把 git 高手。 如果你听到现在还是觉得这些命令有点多,有点头大,没关系,我建议你不妨试试像打游戏一样去学 git。 在 这儿我强烈推荐一个网站叫 learn git branching。 为啥推荐它呢?因为它特别的可视化,整个学习过程就跟打游戏闯关一样,你每敲一个命令,它那边就会动态地把分支图给你画出来,这样你就能非常直观地看到哦,原来分支和指针是这么移动的,这对于理解那些比较抽象的概念真的非常有帮助。 那么在最后,我想留给大家一个问题来思考一下,除了 get 之外,你还能想到哪些像这样看不见的工具?但它们却又是我们现代科技真正的基石。你看, get 本身并不生产芯片,但是如果没有它,我们现在这些极其复杂的芯片项目团队合作根本就无从谈起。好了,感谢大家的收听。

如果想要查询 get 提交的一个记录,可以用 get log 打开这个 get 的 命令框,输入 get log, 就 可以看到这样子的一个一条一条的记录, 这是一条,这是一条,这是一条,这是很多条记录,这记录里面的每一条信息。 commit, 你 可以认为是一个 id, 或者是这就是一串哈西码,它代表的是这一次提交的一个唯一码。 author 呢,是作者以及邮箱, date 是 你提交的一个时间。这个 modify 呢? 是这样啊,每次提交的时候尽可能输入一下修改了什么内容,我这个因为是自己写的 demo, 我 就只写了 modify jmp file, 但事实上我们尽可能的要写清楚你修改了哪一个文件,为什么要修改,以及修改了哪些内容,或者是你修复了什么样子的问题。我们的 log 非常多的时候,我们可以使用键盘上的一个上下箭头来翻页查看,如果不想看要退出的话,按键盘的 q 去退出就可以了。 筛选怎么做?如果想要通过时间筛选,我们可以用 getlog 后面加刚刚 sense 等于,比如说这个,那我们就是筛选这个以后的 getlog, 刚刚 elsear 等于,这个是通过作者来筛选, 通过关键词来筛选的话,就用 getlog 刚刚 group 后面加上你的关键词,查询的就是这里的内容包含的一些关键词。

大家好,欢迎回到我的频道,今天咱们来聊一个 get 里头特别厉害,但说实话也让很多人头疼的命令,没错,就是 getrybase 变机。你先看看这张图,是不是觉得特别眼熟? 你的 get 提交历史是不是也经常长成这个样子,就跟一团乱麻似的,自己想看明白多费劲。哎,别担心,这绝对是好多好多开发者都遇到过的痛点。一、 为什么历史会变乱?所以说问题到底出在哪呢?你看,这就好比一个用合并提交 merge commit 搭起来的迷宫。咱们平时开发很正常嘛,为了拿到主分支最新的代码,就会把主分支 merge 到自己的功能分支上。 但问题是,你每一次 merge 就 会多一个 merge commit, 这些提交本身没啥错,但多了就跟噪音一样,把整个项目的历史搞得乱八糟。你想回头看看某个功能是怎么一步步开发出来的,那可太费劲了。 二、 rebase 魔法?那有没有什么办法解决这个问题呢?当然有了, 这时候 gitreebase 就 像救星一样登场了,它就是一个特别优雅的解决方案,你可以把它想象成一个帮你整理故事线的工具,它能把乱七八糟的提交历史梳理得清清楚楚,一条直线。好, 那这个 rebase 到底是怎么施展魔法的呢?它可不是那种简单粗暴的把两个历史砸在一起的 merge, 它更像是一场精细的外科手术。你听我给你分解一下啊。 第一步,它会把你在这个分支上做的所有提交先小心的拿下来,暂时放到一边。第二步,它会把你的分支整个地 拔起来,然后嫁接到主分支最新的那个节点上。最后一步,也是最关键的一步,他再把你刚才拿下来的那些体胶,按照原来的顺序,一个一个的重新在新的位置上播放一遍。行,咱们再回来看一下这个手术前的样子啊, 就是这样一段因为反复合并变得乱七八糟的历史,你可得记好这个画面啊,因为接下来就是见证奇迹的时刻了。 当当当,你看,这就是 rebs 之后的成果,是不是一下子就清爽了?一条完完全全干净笔直的线性历史,这就是 rebs 带来的那种啊哈的瞬间。 你可能会问,这么做到底有啥好处啊?好处可太多了,历史清清楚楚, 那代码审查是不是就轻松多了?用 git bisect 这种工具去定位 bug 的 时候,效率简直不要太高。而且啊,不管是谁,新来的同事也好,未来的你也好,都能一眼看明白这个项目, 这个功能到底是怎么一步步发展到今天的。三、黄金法则绝对禁区。当然了,这么强大的能力,就像电影里说的,能力越大,责任越大, 它能重写历史,这也意味着你得非常小心。所以,这就引出了咱们使用 rebase 的 时候,必须必须必须遵守的一条黄金法则。我得强调一下,这条规则是绝对不能打破的, 永远不要在公共分支,比如 mastermind 上使用 rebase, 只能在你自己的私有的本地分支上用。 那为什么这条黄金法则这么要命呢?背后的原理其实不复杂,你看, rebs 本质上是创建了全新的 commit, 所以 这些新 commit 的 哈希值,也就是它们的身份证号 就全变了。那你想想,如果你把你已经推送到远程跟团队共享过的代码给了 rebs, 会发生什么?你的本地历史就跟远程服务器上的历史完全对不上了,这对你的队友来说,简直就是一场噩梦啊! 大家的历史记录都乱了套,很容易就会搞混代码,甚至一不小心就把别人的代码给覆盖了。四、解决冲突 conflict 好, 说完了最大的禁忌,咱们再来聊聊另一个大家一听到就害怕的东西,冲突是吧? 一想到要解决冲突就头大,那万一 rebase 的 时候,你的代码和主分支上的新代码打架了,到底该怎么办呢? 这个就有意思了,它跟咱们平时 merge 的 时候那种一次性爆出来一个巨大冲突不一样,因为 rebase 是 一个一个地去应用你的提交,所以呢,冲突也是一个一个来的。哎,你可能觉得,哇,那不是更麻烦了? 其实恰恰相反,好处就是你每次只需要处理一个很小范围的很具体的冲突,问题被分解了反而更容易解决。其实啊,解决冲突的过程就是一个非常清晰的循环往复的步骤,一点都不乱。你看啊, 第一,碰到冲突, rebs 会自动停下来,还会告诉你哪个 commit 出问题了。第二, 你就打开你的代码编辑器,把冲突的地方手动改好。第三,改完之后用 git add 告诉 git, 诶,我搞定了。最后一步,抄一个 git rebase continue, 让它接着往下走。 如果后面还有冲突,那就再重复一遍这个流程就行了,是不是很简单?五、总结, merge versus rebase 好, 那咱们来快速总结一下 merge 和 rebase 这两兄弟的区别。 merge 合并就是个老实人,他会保留所有的历史痕迹,优点就是绝对真实,绝对安全。 rebase 电机就像个整理大师,它会帮你重写历史,得到一条特别整洁的记录。但你一定要记住,用它的时候有个前提,就是那个黄金法则只能用在你自己的还没推送到远程服务器的本地分支上。 千万千万要记住这一点。好了,讲到这里,相信你已经对 gitreebase 的 强大之处和潜在的风险都有了很清楚的了解。那么现在问题就回到你这里了, 在你的项目里,为了追求一个干净清晰、易于追溯的体教历史,你觉得付出这份额外的谨慎和小心 到底值不值得呢?这个问题没有标准答案,最终还是要看你,还有你团队的选择和约定。如果你觉得这个视频还有点意思, 欢迎在评论区发表你的看法。如果你从这个视频学到了新东西,请点赞、关注、收藏并转发给需要的人,谢谢!