粉丝9922获赞5.5万

日常开发过程中一个需求迭代,我们通常是创建一个 get 分支协同开发,经常会遇到自己需求开发一半需要切换分支修改 bug, 这个时候不想提交代码,该怎么处理呢? 可以使用 get stats 相关命令暂存本地代码,看一下在 idea 中的操作过程,比如这里我修改了一下本地代码,咱们选择右键 选择暂存修改,这里添加一下暂存信息,比如这里就是一二三,点击创建暂存,这样本次修改就暂存起来了。修改完 bug 后,可以通过 get 安 stash 恢复暂存,这里列出了所有的暂存信息,可以通过 view 查看文件的变动。 cup 删除暂存, clear 删除所有的暂存。 oppolin stats, 恢复代码 码到本地,这里也可以勾选 pop style 恢复代码到本地,并且删除暂存记录。点击一下 pop style, 可以看到代码已经恢复了,使用起来还是比较方便的。

这是我刚收到的苹果新款 macbook neo, 用它养龙虾,你觉得靠不靠谱呢? 今天我就用它手把手教大家如何配置 macos 版的 open core, 本地部署步骤呢,很详细,需要一步一步往下看,保证成功。建议呢,先仔细看一遍,再跟着操作。第一步,安装 get 苹果自己家的开发者站点,仔细看,这里 搜索 command line force for xcode, 根据我们现在的系统版本,新的呢是 xcode。 二十六点三,点击箭头,点击安装包,下载到本地后,打开后按提示安装就可以, 直到安装成功。这个时候呢,我们点击右上角放大镜图标输入终端,打开后输入这串命令,看到版本号就是安装成功了。 第二步,安装 homebrew, 我 们需要在终端输入这一行安装命令,提醒一下。接下去呢,出现类似的命令,记得暂停视频,复制后可以在千问豆包等大模型工具问一下,以免复制的时候识别错误。 输入后呢,按回车,他会自动开始安装 homebrew 了,这里会问我们通过什么下载 homebrew, 我 们可以输入一,也就是清华大学这个敲回车,然后会要求我们需要输入开机密码, 输入后直接按回车就可以,这里会问我们是否删除之前这台机器安装的红不入,直接输入 y 回车,他会帮我们自动备份。再接下来呢,我们还要按一次回车开始安装红不入,安装成功后会需要我们再次输入密码,直接输入后回车就可以。 接下来会让我们选择哪个国内镜像,这里我是直接按他提示输入五回车,然后我们等待他安装完成,直到出现安装成功的提示后,我们先关闭一下终端界面,然后呢,在程序屋重新打开它,让配置生效。 这里有个提醒,如果你是 mac os 二六之前的版本,你呢也可以先按照第二步安装 homebrew, 安装完毕了之后呢,再安装 git 就 比较简单了,直接在现在重新打开的终端里输入 pro install git。 回车后呢,它就会帮你自动安装完成了。 第三步,安装 node js 仔细看 node js 官方界面左下角,点击 macos 安装程序,获取后呢,打开安装包,后面按提示安装,直到安装完成。 第四步,安装 open clone, 再次打开终端,输入这个命令回车就可以了,不用管它。再输入这条命令回车,只要输入正确,依然不用管它。之后我们再输入这行命令, 这个时候他会要求我们输入开机密码,回车后他就开始安装了,我们需要稍微等待一下,看到终端里有类似这样的提示,里面的具体数据呢,我们可能会有不同,不用在意。这说明欧邦克洛安装成功了,但是还没完。 第五步,配置 openclore 配置之前,我们需要先输入这行命令,这个命令的作用呢是删除我们本地已经安装过的飞书插件目录,以免后面引起冲突。输入后按回车就可以。接下来还需要输入 openclore on board, 启动 oppco 初识化配置向导,这个时候你就能够看到龙虾的 logo 了。这个呢,有一个官方风险提示,我们要继续只能选择 yes, 可以 用左箭头键选择按回车确认。这里我们只要保持 quick start 模式,直接回车就可以。 这里就是需要我们选择我们的 oppo colo 准备连接的大模型了,基本上覆盖了目前主流的大模型,如果你已经有创建过某个大模型的 api, 就 可以通过上下箭头键选择插播一个大模型 api 密钥配置。 我这里给没有创建过大模型 api 密钥的小伙伴演示一下我自己在用的 kimi 的 mojito ai api 密钥的创建过程。首先是 kimi 开放平台, 然后呢左侧选择 apikey 管理,之后在右侧点击新建给他取个名字,比如 opencore bot 项目,这里选择一个就可以了,然后点击确定,这个时候呢,我们就可以看到密钥了,这个密钥一定要保护好,不要让人看到,要不然被有心的人拿去的话,他用的就是你的额度了。这里不是点确定,而是点击右侧的这个复制按钮。 好,再次回来,我们可以点击程序屋上的终端,这里我们选择刚刚注册的 kimi, 也就是蒙秀的这个敲回车这个位置呢,我们根据实际情况,我们刚刚是注册的国内的,需要选择点 c n, 这个选择好后回车 这里我们因为是直接复制密钥的,所以直接在 face 的 api key 这里回车就可以。 ok command 加微把我们刚刚复制的密钥直接粘贴回车后,我们保持它默认的这个就可以直接回车。 这里会要求我们选择使用哪个聊天软件来通讯。目前呢,我们可以直接用向下箭头选择到最下面的 skip for now, 这里会涉及一些准备步骤,我们可以在视频后面再配置,选择 skip for now 后回车, 如果跳出设置 provide 后,依然先选择最下面的 skip for now。 先跳过回车,这个时候他会问我们是不是现在需要配置 skills 了,我们可以选择 yes 看一下,你用向下箭头键往下看,每一个的后面呢都有详细的场景说明, 如果有你需要的,可以选中它后敲一下空格键,再敲一下就是取消。这里我们依然先选择 skip for now, 反正后面呢还可以配置的空格键选择再敲。回车, 这里有一系列需要我们配置各种平台的密钥的,我们暂时也都可以先选择 no, 如果你的确已经有密钥了,当然也可以选择 yes, ok, 来到这里 hux, 我们也先用空格键选择 skip for now。 回车,这里会跳出一个窗口,我们先选择允许。然后呢,终端这里会问我们用什么方式起用 boot, 我 的建议是 web ui, 对我们普通用户来说也会更直观一点。选择后,回车,这个时候他会自动打开一个界面,这就是和 oppo cola 的 一个聊天界面了,我们可以先和他聊一下,比如我们可以用中文说一句你好,收到他的回复,呵呵,证明我们的配置已经成功了。 原则上来说,我们的小龙虾呢,已经养殖成功了,但是还有一步更重要的,才能够方便我们用聊天软件随时随地的给他下达干活指令。 也就是呢,即使我们在外面,也可以用手机上的聊天软件给他下指令。那么我们用目前口碑相对更好的飞书来举例。第六步,创建飞书机器人。 首先是飞书开放平台,我们可以准备一个个人账号,登录后点击右上角开发者后台,这里呢,点击创建企业自建应用,给他起一个名字描述,这里也随便填写一下, 选择一个图标,或者呢也可以自定义上传一个图标,然后点击右下角创建,这里我们点击添加机器人,暂时点击左侧的权限管理,点击开通权限 搜索框,这里我们输入 i m 冒号,注意这里的冒号呢,是需要切换到英文输入法的冒号的, 这里我们可以把全部都勾选,点击确认开通权限,这个位置有一个提醒,你看一下应用发布后,当前配置方可生效, 我们需要点击提醒这里的创建版本,这里我们输入版本号,按照他的提示,比如一点零点零更新说明,这里呢,我们也可以写上创始人版本下滑,点击保存,点击确认发布。 ok, 飞书机器人创建完毕。第七步,连接 oppo 克洛和飞书, 依然是在终端输入 open core config 回车,这里选择 local, 这里我们选择 channels 回车,然后是选择默认的这个 config link 回车, 这里呢,我们找到飞书回车这个位置,我们得选择 download from npm 回车安装飞书渠道插件这个位置,选择 yes 回车。稍等片刻后,需要输入飞书的 app, 先按一下回车, 之后再是飞书的开放平台左侧,点击凭证与基础信息,点击 app secret 这里的复制键,再是回到终端 command 加 v 粘贴回车,这个时候还要我们输入 app id, 再次在飞书开放平台点击这里的 app id 下面的复制键,然后呢,再到终端 command 加 v 粘贴回车,这里通讯方式选择 web socket 回车飞书这里我们选择 cn 的 这个就可以回车。 是否允许群聊使用?我的建议是选择下面的 open 回车,下一步可以直接用向下箭头键快速下滑到底部,选择 finished 确认配置完成,这里呢,问我们的是配置私信访问策略,这里需要选择 yes 回车之后这个位置,我们可以直接选择 perry 回车,这个菜单里我们可以选择到底部的 continue 回车。 ok, open core 和我们的飞书正式配置完毕。 最后环节,我们在终端输入 open core get away 启用它。再是在飞书开放平台选择左侧的事件与回调,点击订阅方式,这里的按钮 确认是这个默认的长连接,点击保存这里再是点击添加事件,搜索框里输入接收消息,将接收消息勾选,点击添加按钮,再是点击左侧的权限管理,点击开通权限。 搜索框里呢,输入通讯录,把这个获取通讯录基本信息勾选,点击确认开通权限,再次点击右下角的确认,这里依然会看到版本发布后当前修改方可生效的提醒。我们还是点击创建版本,输入新的版本号,比如一点零点一 更新说明,这里呢,我们可以是添加消息,接收能力,下滑到底部,点击保存,点击确认发布。 第八步,与 open core 对 话,我们可以尝试拿起手机飞书,点击开发者小助手下滑,找到我们前面命名的那个应用,点击打开,我们可以给他也发一句问候,比如你好, 这个时候呢,你会收到这样的一个安全配对提示,不是错误,是为了安全起见生成的配对码, 我们只要复制提示里最下面的这行命令,在终端里再次输入回车, ok, 显示配对完成后,回到手机飞书再给他发你好,很快呢,就能够收到他的回复了, 哦吼,正是在我们 mac 上部署完成了 open core, 同时呢,也可以用手机上的飞书,电脑上的飞书,随时随地的给他下指令了。 这就是完整的 macos open core 本地部署教程了,适用所有的苹果电脑 制作,不容易,有用记得点赞分享。接下去呢,还会有如何配置 skill, 如何省托坑等等的一些必备技巧分享,大家记得持续关注。如果大家还想了解如何一键云部署的话呢,也可以留言,需求多的话,我也来做一条详细的教程。

如何从远程仓库上面把代码拉取到本地?打开,你们啊,这是我们自己刚才创建的一个仓库啊,如果说你们公司项目的仓库也一样啊。 呃,打开这个地这样的一个仓库,点击代码这里,然后点击这里。呃,特龙下载这里默认可能是 h t v s, 你要点击这个后面这个 s s h 拷贝啊,复制, 然后最小号,我这里就放到我电脑的 d 盘这里啊,因为我们之前是放到桌面的,是吧?这里是桌面的一个代码,我放到 d 盘这里,鼠标右键这里有个 get the best here, 你可以用它。当然你也可以用鼠标右键啊, 按住 shift 键,按住 shift 键,鼠标右键,然后有一个抛下窗口。嗯,用,我比较喜欢用抛下啊,在这里面你输入个命令 d ctrl 空格,然后鼠标右键 这里就会自动把我们刚才拷贝的内容粘贴到这里来。回车,放大一点,回车 啊,如果说出现这样的就是就是把代码已经克隆到本地了,哎,就会出现这样的一个仓库 啊,这是我们人的拿货的代码。没没没,多少,这是一个文件,还有一个点 d 的文件。鼠标右键啊,如果你安装了 v s 扣,你可以有一个扣的打开啊,那就打开,那这个就是我们刚刚克隆下来的代码。

嘿,各位开发者朋友们, get commit 这个命令,你们是不是想都不用想就敲出去了?就跟肌肉记忆一样对吧?但是啊,你有没有停下来想过这背后到底发生了什么?今天咱们就来深挖一下,你想想,你把文件暂存,随便写个提交信息,然后一敲回车,刷的一下就搞定了, 整个过程可能连半秒都用不了。但你信不信,就在这一眨眼的功夫里, git 已经悄悄地完成了一项非常了不起的工作。所以啊,这半秒钟里到底发生了什么呢?来,咱们今天就把这个过程给它掰开了,揉碎了看, 我们会把这半秒钟无限放慢,跟着 git commit 这个命令走一遍它的完整旅程。我跟你保证,等你看明白了,你绝对会惊叹, git 的 设计原来是这么的简洁和巧妙。 好的,咱们就从头说起。因为啊,你可能想不到,整个魔法的开端其实还不是在你输入 get commit 的 时候,它真正的起点是在你运行 get add 的 那一刻。 嗯,要理解 get, 你 首先得知道它有三个核心的区域。第一个呢,就是你的工作目录,这很简单,就是你真正在编辑文件的那个文件夹, 然后是仓库,也就是那个隐藏的点。 get 文件夹,所有东西最终都永久存放在这里,而连接这两者的桥梁就是暂存区。它还有个名字叫缩隐,也就是 index。 这个是关键好,第一个很多人会忽略的关键点来了, 当你运行 git add 的 时候, git 可不是简单地记下啊,我要把这个文件加进去,不是的,它会立刻读取这个文件的内容,把它压缩,然后算出一个独一无二的 sha one 哈希值,最后把这个压缩过的内容作为一个叫做 blob 的 对象,直接存进 dot git 叉 objects 目录里。 你没听错,在你 command 之前,你的文件内容其实就已经进到仓库里了。这个 blob 对 象的设计说实话真的非常巧妙,因为它只关心文件的内容,所以那个哈希值也完全是由内容决定的。 你看这张图就一目了然了。假如两个文件哪怕文件名不一样,只要里面的内容一模一样,那么 git 就 只会存储一个 blob 对 象。这就是 git 在 处理大型代码库时还能保持高效的秘诀之一。我们管它叫内容驱虫,非常强大。 好的,既然 blob 已经存好了,那 git 总得有个地方记一下我们下次提交到底要包含哪些文件的哪个版本吧。这个地方就是我们刚才说的缩影。 我觉得这个购物车的比喻简直太贴切了,你用 git add, 就 好像是把一个个改动,也就是商品放进购物车里。而 git commit 呢,就是最后去收银台结账,把购物车里所有的东西一次性永久保存下来。好,现在购物车装满了,我们敲下了 git commit。 那么 get 的 第一个任务是什么呢?就是根据所引里记录的所有内容,为你的整个项目咔嚓拍一张完整的快照。 嗯,如果说 blob 代表的是单个儿文件的内容,那 tree 对 象代表的就是目录结构。你可以把它想象成一个清单,这个清单上记录着某个文件夹下面有哪些文件,并且指向它们对应的 blob 哈希。同时呢,也记录着有哪些子文件指向它们对应的其他 tree。 哈希, 你看, git 的 优雅之术就在这里体现出来了。咱们假设啊,你就只改了一个文件,比如 s r c components button 这儿 g s。 那 么第一步,就像我们刚才说的, git 会为这个修改后的文件创建一个全新的 block。 然后呢,因为 button js 的 内容变了,所以包含它的那个 components 文件夹也得跟着更新,对吧?所以 git 就 会创建一个新的 components 文件夹也得跟着更新,对吧?所以 git 就 会创建一个新的 button js blob。 同样的逻辑, components tree 变了,那它的上一级目录 src 自然也需要更新。于是 git 又会创建一个新的 src tree 对 象,让它指向刚刚新建的那个 components tree。 你 看,这个连锁反应会一直向上一直传递到项目的根目录,最终呢,就会生成一个全新的根序对象,而这个根序对象就代表了你项目在这一刻的完整的快照。 那么重点来了,在刚才整个过程中,你发现没,我们其实只创建了几个新的对象,所有那些没有被修改的文件和目录,比如说 docs 文件夹, test 文件夹,它们对应的 tree 对 象和 blob 对 象全都被完整地附用了。 git 只是简单地把它们旧的哈希值重新引用到新的负 tree 里面去。这就是为什么 git 处理再大的项目也飞快的原因,因为绝大多数的提交都只是创建了少数几个新对象而已。 好,我们现在有了一个代表项目当前状态的根治对象了,下一步就是要把这个历史性的时刻给记录下来。没错,是时候创建 commit 对 象本身了。 一个 commit 对 象其实简单到让你惊讶,它本质上就是一个小小的文本文件,可能连二百个字节都不到,根本不是什么复杂的数据条目,它里面就包含了几个关键信息, 一个指向我们刚刚创建的那个根 tree 的 指证,也就是项目快照,一个指向上一个 commit 的 指证。历史的链条就是这么连起来的,还有作者和提交者的信息,以及当然了,你写的提交信息。 get 把这些信息打包算出一个哈希,然后把它作为一个 commit 对 象存起来。 好。到目前为止,这个新的 commit 对 象已经存在于 git 的 数据库里了,但它现在就像一个孤儿,还没有任何东西指向它,我们需要把它正式地连接到你的分支上。那么问题来了,这个新的 commit 已经创建好了,但是没有任何东西指向它。 git 是 怎么把它跟你当前的分支连接起来的呢?这可能就是 git 设计里最让人拍案叫绝的地方。到底什么是分支? 它不是什么复杂的数据结构,更不是你代码的一份拷贝,它就是一个普普通通的纯文本文件。比如在点 git 下面 rev slash has slash main 这个路径下,而这个文件里面就只有一行内容,一个四十个字母的 commit hash, 就这么简单。没错,你没看错,四十一个字节,一个四十位的哈希,再加一个换行符。这也就解释了为什么在 git 里面创建新分支几乎是瞬间完成的,因为它根本没有在复制你的文件或者历史,它只是创建了一个四十一字节六文本文件而已,是不是很神奇? 所以啊, git commit 最后一步,也是最关键的一步,其实就是一次超级简单的文件写入操作。 git 先读去 head 文件,找到你当前在哪个分支,比如说 main 分 支。 然后呢,他就找到对应的那个分支文件,也就是 delete slash, slash hash, slash main。 最后,他用我们刚刚创建的那个新的 commit 哈希,覆盖掉文件里原来的旧哈希,搞定你的分支指征,就这么向前移动了一步,指向了最新的 commit。 好 的,我们已经走完了整个旅程。现在呢,咱们把所有的步骤串起来,再来回顾一下 git 这套简洁又卓越的设计理念。 所以,在你敲下回车的那半秒钟里, get 到底做了什么?我们来快速回顾一下。第一,读取锁引。第二,构建一个新的 cheat 对 象,并且可能尽量地附用没变过的部分。第三,创建一个可 made 对 象,让它指向新的 cheat 和它的复可 made。 第四,哈希,并且存储这些新的对象。第五,更新那个小小的分支文件,让他指向新的,可没得哈希。哦,对了,为了安全起见,他甚至还会在 raflog 里记下这次变化。所有这些都只是基于简单的文件操作,完全没有复杂的数据库。 而这一切其实都源于一个非常简单但又极其强大的核心理念。整个系统就是建立在有可变指针连接的内容寻值对象之上的 blog tree commit。 这些对象一旦被创建,就永远不会改变我们通过它们内容的哈希值来找到它们,而分支呢,就是那些可编的指阵,它们在这些不可编的对象之间自由地移动,把你的项目历史给串联起来。 所以下次你再输入 git commit 的 时候,希望你能想起这背后的故事,欣赏它那份简洁而又强大的设计之美。

想在本地部署 openclock 的 同学,这个视频你们跟着一步一步来做,基本上都可以成功的。这里我用 windows 系统来举例啊,如果你们是苹果或者 linux 系统呢,那部署起来会更加简单。其实要在 windows 上面来部署呢,也不是很难, 需要我们手动去安装的东西呢,其实就两个啊,一个 ws l, 还有一个就是 openclock。 你 们在网上面看到那些啊,让你们在 windows 下面呢,又安装 nodekit, 完完全全是多余的啊。 不是说 opencl 不 需要 note 和 get, 而是说装在 windows 下呢,它一点作用都没有,因为我们是在 wsl 下面去跑的,也就是那 windows 下的一个 linux 系统, 你在 windows 里面给它装这么一堆东西, linux 里面还是没有的,到时候呢, opencl 还是要给你再重新装一遍这些东西。所以呢,我们就直接在安装 opencl 的 时候,让它检测到环境需要什么,它就会自动给我们安装了。 就比方你们现在看到的这个终端啊,现在呢,我还是在 windows 目录下面的,我来检测一下 no 的 版本,可以看到这个的版本号呢是二四点幺四点零,这一个呢是我本来就装在 windows 系统下面的,现在呢,我进入一下 wsl 这里呢,大家可以理解成啊,我在 windows 下面呢,进入了一个 linux 的 子系统,然后在这里呢,我同样查看一下 node 版本,可以看到两个的版本号呢,是不一样的,一个是二十二,一个是二十四。 因为到时候我们的 openclock 是 要在 wsl 下去跑的,所以 openclock 它环境需要的 node git 这些呢,都要在 wsl 下面去安装才有用的。 我们给它装在 windows 下面呢,一点用都没有,所以我们不需要额外安装那些,我们直接去安装 w s l, 把这一个装好呢,我们的部署就成功一半了。其他环境需要的那些 node git, 到时候安装 opencloud 的 时候呢,它会自动帮我们安装的。虽然我们不用手动去装这些 node git, 但是呢还是要做一些额外的准备啊,比方科学上网, 学上网这一点非常重要啊,要不然的话,这个过程呢,很有可能你就会因为网络的问题啊,没办法部署成功。其次我们的电脑呢还要做几个设置啊,这一点呢,很少人说到,但是还是挺重要的。首先我们打开任务管理器,在左边呢,进到性能选项卡, 然后看一下右下角啊,它有一个虚拟化啊,我们要保证虚拟化呢是一起用的状态,基本上呢它默认都是一起用的啊,如果说没有起用的话,我们就手动给它起用一下,然后我们通过运行窗口输入这一个命令, 打开 windows 功能,拖到最后,这里面呢有一个适用于 linux 的 windows 子系统,还有虚拟机平台啊,这两个呢,我们都要给它勾选上啊,勾选上之后呢,我们就点确定就可以了, 等他应用我们的更改,然后呢我们就要启动一下我们的电脑大模型,这里呢我就用千问来给大家举例啊,因为他有免费的头梗赠送,所以呢大家可以来到千问这里啊,先注册一个账号。 安装这个之前呢,我们还要对网络进行一下配置,选中我们连接的这个网络啊,右键属性, 现在呢,我们都还不需要配置科学上网啊,就用我们本来的网络设置就可以了,我们就来改一下这个 dns 服务器啊,给他编辑一下, 我们就来改一下 ip 四的 dns 地址,默认呢,他可能是自动获取的,我们给他手动填啊,这个地址你们就按我一样的填就可以了。准备工作做完之后,我们就来打开泡泡消,这里呢,以管理员的身份运行 这里,我们就输入 wsl instyle 这条命令,然后根据它提示的这条命令哈,我们来安装一下,有帮图, 安装完之后呢,它可能新弹出一个窗口啊,也可能在本来的窗口啊,让你新建一个用户名和密码,你就按照提示来输入就可以了。 输入密码这里大家要注意,它是不显示出来的,你就正常输入,确保输入的没有问题就可以了。最后看到有颜色的这一行,带有你创建的用户名的这一行啊,就证明你的友邦图已经安装成功了,也就是那你的 ws l 就 安装成功了。 接下来我们就准备安装 open curl 了,来到 open curl 的 官网,现在呢,我们就要把科学上网配置好了,要不然呢,它会出问题啊。 找到 runs on your machine, 左上角先切换成简体中文,然后呢点安装, 我们就复制它快速安装的这条命令,这个时候就可以打开 wsl 了,没问题,成功进入了 linux 系统,然后把刚才复制的安装 opencloud 的 命令粘贴运行一下,现在它提示我们输入刚才创建的用户密码, 输入完之后它就开始安装了,像这里它会先检测环境需要的东西啊,像这里 node js not found it's already now 啊,它第一步就会把 node 给你装上, 下面就正式安装 open curl, 这里大家可以看到 git 它都给你安装好了,所以通过 wsl 方式呢,我们是没必要在 windows 下面手动来安装这个 node 而 git 的, 你一装还装错地方,甚至呢,装这个东西还装出问题,所以还不如直接给 openclip, 它自己来帮你安装。现在呢,它就帮你安装 openclip 的 二零二六三点幺二版本。 意识到出现 openclip 这个图像,我们 openclip 的 安装呢就已经成功了,接下来呢就做一些简单的配置就可以了,现在问我们是否继续啊,选 yes, 然后呢 crystal 快 速开始。下面这些呢,我们都是保持可以跳过的,先给它跳过啊,否则呢,就选默认,先让它把 open color 给装起来,后面呢再更改配置都可以了。选 skip now 给它跳过啊,选第一个默认也是保持默认啊, select channel 啊, step now 给它跳过。 search provider 也是给它跳过,问我们是否配置 skills no, 后面再配置都可以的,这个 whose 也是给它跳过。 ok, 现在我们就可以打开 open crawl 了,它上面呢有一个地址,我们按着键盘的 ctrl 键,然后点一下它, 他就会打开 openclaw 的 web 页面。这个呢是和 openclaw 的 智能助手聊天的页面,但是因为我们现在还没有接入大模型啊,所以呢,和他聊也没什么用。接下来呢,我们就要去接入千问的大模型,同样打开 power shell, 进入 wsl, 然后运行一下 openclaw config 这条命令,选 local, 然后就 model 这里模型的话我们去选到千问, 现在它是等待千问那边的授权,授权完毕呢,就接入成功了。这里我们可以复制一下这个地址,然后到浏览器去打开, 因为刚才已经让大家注册好千万的账号了,这边呢,直接点确认就授权成功了。其实到现在啊,我们的大模型呢就已经接入成功了, 现在就可以回到 opencloud 的 web 界面了。现在呢,我们和智能助手聊下天呢,只要他能回答我们的问题,就证明我们的大模型呢已经接入成功了, 没有问题,已经可以正常回复了。这样呢,我们的 openclaw 就 部署完成了。这个视频呢,就先到这里啊,下个视频再带大家来把 qq 飞书这些聊天工具呢,接入 openclaw。

一个视频看懂店中的三大区域,我们分别来看这三个区域, 工作区,站存区,还有仓库。首先看出死状态,此时你的工作区空白,我们将新的内容写到这本打开的魅点其中,因为我们只知道店中能够保存我们的圆满,但这个时候我们刚写好的内容还是只在工作区。 如果我们想把我们的部分源码提交到仓库端,我们先使用 get m a 点肆意把刚写好的文件放入文档,此时还没生成永久记录,你随时可以把文件从框里拿回桌面调整。 在 v s code 的 终端,使用 get a 的 后,可以见左上方有一个写着暂存的修改。在 v s code 也有更简单的方法,我们可以直接点击有更改文件右边的加号,它这时也能变为暂存的更改。 如果想取消暂存,可以直接点同样位置的减号。最后你想提交到仓库时,就使用 get m 杠 m, 然后你的刘秘书就会帮你把你赞存区的内容提交到仓库的,仓库管理员会自动给文件贴个唯一的版本编号,并记录归党人时间。但是你需要自己写一个关于提交文件的说明。我们可以通过第二个来查看我们仓库中提交的这个是自动生成的版本号, 下一个是提交的用户,剩下两行分别为提交时间和提交信息。这时仓库中就有一份你认为完美的原码,如果不小心把工作区的内容写毁了,就能从仓库中调出完美的那份, 这时直接从仓库还原一份到我们的工作区就好了。下一节课结合 vs code 来教会你将原码上传到仓库。

这是测试文件夹,现在只有一个 test text t 文件,在空白处单击右键,选择 teach bash here, 输入 get in it, 按回车之前文件夹只有一个 t x t 文件,按回车之后多出一个半透明的 get 文件夹,里面有很多文件,现在我们不用关注这些,这张表里是地址常用命令。 我们先来学习如何提交文件,到 gate 仓库,输入 gate log, 提示没有任何 commit。 提交文件要先 at, 再 commit 文件后缀名,然后按回车文件 add 成功。 add 之后是 commit, 输入 get commit m 文字描述,然后按回车文件 commit 成功,再运行 get log, 看到我们刚才 commit 的历史了, 然后修改一下文件内容,保存文件,关闭, 重新 add 文件,重新 commit 文件, 重新 get log, 看到有两个 commit 记录, at commit 的内容都存在这个 get 文件夹中,如果删除 get 文件夹,再次 get log, 就会提示没有 get。 仓库 重新 gitimate 会生成新的 git 文件夹,但新的 git 文件夹里没有刚才 commit 的两次记录。使用 giti 将添加目录下的所有文件,虽然现在只有一个 test text t add 之后是 commit。 再次 get vlog, 看到重新看壁纸的记录了。

我们再来看一下这个第二个问题啊,就是如何解决我们这个冲突。解决冲突的话我们先看一下这个冲突是怎么发生的。比如说我们现在的话有一个远程的,当然就是在这个远程的话,大家就是把这个当做是一个人,就是一个张三条代码。好比如说这个张三的话 把第一行代码改了,就是两个人对同一行代码做了更改的话,就会产生冲突,就是他改了,你也改了,这时候的话,就比如说张三的话,这边的话张三然后一一好,这时候改成张三一一了,他就被我们提交了 好比如比如说现在这个李四的话不知道我们继续啊,就是在这面好,这个他还以为是这个,然后他不知道这边的话他他也改了。这边的话李四,比如 改的东西就是第一次好,然后把它改成二二了,好这首吗?然后他保存,然后改成嗯爱的的,然后把他也提交了 修改啊,修改了,修改之后他做了一下 gettypose 好,然后更新远程的一个代码,好,这时候的话大家可以看到就发生了我们这个冲突, 他说哪个文件发生冲突好了,我的他们就是看一下这个好,这边的话他就产生了这个冲突。大家可以看到 这个冲突的话就是说前面这一部分就是焊的,后面的这一部分的话就是你自己的一个修改隐私的一个修改,然后后面的这个抖号,后面的话就是说 是一个远程,你更新过来给他一个冲突,比如说我们现在的话解决冲突要么你就要这个理思性过来的,要么就要你自己的,我们首度解决一下,如果说两个都要的话,你就把中间这些东西全都删掉,然后把它保存。如果说只要一个的话,那你就比如说不想要 张三的话,你就把它删掉,然后把你的提交,如果两个都要的话就保留,然后改成我们看一下啊。好,这首话他说改了,我们给他提交一下吧,改成 app 解决冲突,然后的话贴这 pose, 我们 pose 一下,然后把东西提交到远程仓库。好,这边的话也 应该就改了。好,这时候还就要的意思,我们再给他铺试一下,应该是最新的。好,这时候的话冲突就已经解决了。我们再来说一下怎么样回退到指定的一个版本,比如说我们现在的话修改一个文件吧,就是这面再添加个都行。 嗯,贴啊一好,这时候我们把东西都已经提交了,给拆 add 吧, 这边只有随便选的东西, 然后的话这时候的话已经提交到本地仓库了,比如说我现在回推的话,用这个该车提高的车,尴尬肯定是回推不了的。我,我想回推到之前那个版本,怎么回推呢? 看一下啊,现在提交记录, 我们用这个面来看一下, 当前这个就是我们刚刚写的这个被褥,随便写的,就是当前的害的所在位置,就是最新的一个 一次提交的一个记录。好,我们回到上一个版本的话,我们就可以直接输入他或者是我这边也给大家写了,就是我们需要指定回到指定的版本的话,我们就可以跟一个 就是当写 ad 的一个名字,或者比如说你想回到这边这个提交记录的话,你就写他,比如说 get breathe santa, 然后的话 hadrd 把这个名, 然后把它跟上,然后就可以回到我们这个对应的一个就是提交的一个记录,比如说我们回头的他的话就直接输入他就可以了,一个杠杠,然后大家可以看到现在的话就回到这个版本了, 我们看一下啊,就是说他现在的话已经大家看啊,就是之前这个风质指向的话就是备注是 ss 这个,但是现在的话他说已经更新到这个哈喽沃的,就是更新了哈喽沃的这个版本之前了。好,那那我们怎么样回去呢?就是我 这首的话,大家可以看到就是之前我们这个提交的这个季度已经没有了,我们怎么回到之前那个版本呢?我们这边的话给他给我们提供了一个,就是我们可以用 refer 这个的话就可以看我们这个提交的就是我们执行的一些命 你的一个记录。好,这时候大家可以看到,就可以看到我们这边执行的所有命令,我们做哪些提交原始的是什么啊之类的,都会有这个分支的一个版本号,我们只需要把这个版本号说一下就可以了。 比如说我们之前的话那个版本的话应该是多少了?应应该我们知道的话,就是如果说没有关屏幕的话,我们就可以直接输入他就可以了,如果说我们关了屏幕的话,我们就在这边找一下就可以了, 我们就在这边的话就可以找到他的一个就是之前的一个版本的一个季度,我们还记得就是他这个,这一次提交的一个季度就是 ss, 然后对应的版本号就是他不是说我们没有了就可以用这个命令,然后 get 有钱财,有钱财 然后的话把这个输进去,好,这时候的话他就又回到了之前那个白本,这就是他的一个白本的回退。

作为一名牵手式软件工程师,我想聊聊版本管理这事。说实话,入职前我完全没有代码管理的概念,自己写代码 就是本地,改来改去,经常搞混版本。工作之后才发现,版本管理简直是必修课,它不仅能帮你规范储存代码,控制权限,更重要的是当出现问题的时候,可以快速回收到任意历史版本,精准定位问题。 现在绝大多数公司使用的代码管理工具就是 git, 结合我工作中实际的使用,今天和大家分享几个常用的操作。首先是拉取代码,直接使用 git clone, 加上仓库地址,就能把远程代码复制到本地。 如果想拉取指定分支,加上杠 b 参数,再指定分支名就行。拉下来之后怎么看提交历史呢?用 git log 就 能看到所有的提交记录,如果只想看最近几条,可以加上杠 n 参数,比如说 git log, 杠 n 只看最近五条, 那么自己改完代码怎么提交呢? git 有 一个本地仓库的概念,所以提交分为三步,第一步, git id 文件名,把修改的文件 添加到赞惩区。第二步, get commit 杠 m 提交说明,将赞惩区的内容提交到本地仓库。第三步, get push 推送到远程仓库。推送之后,通常还需要在网页端,比如说 get lab 或 get hub 发起合并请求,把你的代码和物组分枝。 除了这些, git 还有很多实用操作,比如 git init 可以 在本地注册一个账户, git stash 可以 临时保存当前修改而不提交。以上就是我平常最常用的一些 git 操作,你在工作中用的最多的 git 命令是什么?欢迎在评论区留言讨论。

今天我们就只做一件事情,把你的作品发布上线,并且能够让周围的朋友们都来使用它。流程主要就分为三步,第一步将代码推送到 gitup, 第二步用 verso 来发布它,第三步就是分享给你的亲朋好友来使用了。 gitup 跟 verso 是 怎么去操作的?大家可以看我上一个分享视频。那我们就打开之前的项目,在做项目的一个整体推送之前,你要先在本地 打开一下,看这个项目的那个页面是否能够正常展示它的功能是不是 ok 的, 确保在本地它已经能够正常运行的情况下,我们才会去把它推送和部署。 那大家也可以看到我们经过前面的调整,这个界面的 ui 样式比较像一个产品的样子了。那我们再来看一下它的功能,我把简历内容贴进去,把目标岗位也贴进去,点击开始诊断,那么它就会调用 deepseek 的 a p i 输出三段内容问题诊断优化后的简历内容以及它的一个匹配程度。我认为这个项目是具备发布的这个能力的, 那这里我们就需要去进行一个部署了代码的一个推送,经常会用到的是终端的命令行工具,但是如果你觉得这个非常麻烦,你也可以直接让 builder 来帮你搞定,一句话就是出使化仓库打包并提交代码。对,就很简单,如果我们自己来搞定。以终端为例,第一步在终端里面输入 git init, 当你输入 git init 之后,整个命令行前面的空心的圆圈会变成一个蓝色的,就代表它这个指令已经执行了,本地的那个 git 仓库已经创建好了。第二步,输入 git add, 这里要注意的是 add 后面的那一个点跟 add 中间是有个空格的,意思就是把你所有的本地的改动进行一个打包,要准备提交了,所以叫 get add, 打包的部分是距离上一次提交的那一块新增的部分, 那因为我们现在是新项目,它就会把你本地的所有内容进行一个打包。 ok, 那 第三步叫 get commit, get commit 后面空格杠 m, 然后后面双引号,双引号里面就是你对于这个打包的一个说明啊,可以用英文,也可以用文字。我这里提交的是 m v p 版本, 但是因为我之前其实已经提交过了,那么它这里就会给到我的一个提示, nothing to commit, 没有新增的。第四步,最终的就是叫 git push, 就是 把我刚才打包好的这一块内容推送到远端的仓库,如果你不放心它是否有推送成功,你可以得到自己的 git, 找到你对应的项目,然后点击扣的, 你就能看到这个代码了,有时间和版本。好,那我们现在打开 also, 点击右上角的 add new project, 它就会让你选择一个 get up 的 仓库,你就可以看到我刚才提交的 resume, 对 吧?点击这个 import, 把这个项目导入一下项目配置的页面,不需要做任何的修改,直接点击最下面的 deploy, 就是 部署, 点击完成之后,它会自己去构建并部署,大概在三十秒左右的时间就能够推送上线,然后它会有一个提示 congratulations, 就是 恭喜你已经发布成功了,然后回到这个主页面的时候,你就能看到你发布的这个项目内容, 那么在这个 deployment 下面, doris 点 app, 这个就是你这个项目的地址,所以整一个发布其实是非常简单的。当然了,如果你想把它转成自己专属的域名,后面我们也会来讲解怎么去替换。 ok, 那 通过昨天跟今天我们完成了一件真正了不起的事情,就是你把你自己的项目已经真正的发布上线,能够让 全世界任何一个有网络的人都可以点击看到了。所以我们总结一下,记住项目发布的三步,第一个,准备好 gitup 跟 versal 两个账号,先 gitup 后 versal。 第二步,推送代码到 gitup。 第三步去 versal 部署,就是这么简单,以后你的所有的项目都可以这样去操作,那我们今天的分享就到这里,拜拜。

刚刚本地合并还有一个需要补充的点啊,因为我们本地合并到原分支,我们肯定要推送到远程仓库的,不可能只是合并到我们本地的,对吧?我们肯定还要给他推送上去, 要推送上去,这种情况下就是你的这个分支没有被设为受保护,就是你本地能够直接推送。大家应该明白这个意思, 有些分支它是受保护的,你点击破译的话是破译不了的,所以说你只能在平台上面去发起这个 合并请求啊。比如说我们现在这个第一位分支是受保护的,我们是无法去直接破译的,我们必须要在平台里去发起这个合并请求,也就是我们下面说的这个平台合并了。 平台合并的话我们可以看一下,我们再切回我们的这个分支, 比如说我们在这里更改平台合并, 我们再提交 平台合并的话,我们一定也要保证 我们的原分支代码的更新同步到了我们当前的这个子分支,我们要先去把原分支的代码更新过来,我们直接使用这个远程仓库这个分支去更新, 也就这个先要去点击,应该先要更新一下,还是先要把当前分支去更新一下?我们先要更新一下,万一别人有写代码,对吗?我们先更新过来, 更新过来之后我们再去把这个原分支,也就是 dv 远程的,我们使用远程的,就这样的话,我们就不需要再切换到 dv 分 支去 更新第一位了。我们使用这个 remote 的 下面的这个的话就是最新的,然后我们去合并,点击这个合并,合并完成之后,那么我们再去, 我们这时候就不需要在这里去把这个第一位杠 z、 y e 这个分支去合并到第一位了,我们只要把它去推送就行了,把我们这个代码去推送, 推送到远程仓库,推送完成之后的话,我们打开我们的,打开 get lab 之后,我们在这里有个合并请求,然后新建合并请求, 点击比较分支并继续 这里的话,我们要先选择分支啊,这里没有选择原分支,因为我们的原分支是啥呢?是这个分支,目标分支是啥呢?是这个分支对吧?这些目标分支一定要选择,对啊,要检查对,不要合并错了,知道吧? 然后我们再比较分支并继续这里的话,就是写你这次合并的一个标题啊,他默认的话就是你的这个提交记录上写的那个提交信息啊,这就是一个描述,描述你这次改了什么东西,对吧?这个是可写可不写, 当然了也是按照你们公司的规范,有些公司他是有要求的,必须要写的,而且要按照某种规范去写,如果有的话,你们按照这个规范去写就行了。这个的话就是分配这个处理这个合并请求的人呢,我们比如说分配给这个张大头啊,这个也分配给张大头, 然后这个是里程碑啊,里程碑说白了就是一个计划,比如说我们这已经过期了,就不选了,这个正常情况是不需要选的,当然有时候也需要选,看你们公司啊有没有设置这个里程碑,如果设置的话,那你可能需要关联对应的里程碑啊, 我们可以进去看一下,其实你可以在这里管理里程碑的,可以增加一下里程碑,说白他就是一个计划,比如说你某个需求的计划,对吧?创建了一个里程碑,就是在某个时间节点之前进行完成啊。然后你这次提交是关联这次里程碑的,那你就关联一下就行了, 我们这里就不关联了。然后这个标记的话,就是标记你这次修改的一个类型的,比如说我们这处理了一个 bug, 那 我们就选择 bug 啊。当然了,有些公司他没有要求的话,你也不选也行啊,这个就是合并开始时间,我们就选任意时间就行了, 然后他默认的话,这里是接受合并请求,是删除原分支啊,这个你要注意一下,你可以给它取消掉。如果你不需要删除这个原分支的话, 这个原分之不是我们刚刚说那个原分之,这个原分之就说的是你的这个需要合并的这个分子就是 dv 杠 z y。 然后我们创建合并请求就行了 啊,这就可以了,这就等待这个审核人去审核就行了。比如说这个卓,这个张大头,他这边我们可以看他这边,我们刷新一下,他这边就会有个合并请求,这个合并请求就是你给的,就是你提交过来的,然后我们点击进去, 点击进去之后他这边就会进行合并,但是他也可以提交一些信息,他说点击合并之后 我们就合并过来了,我们再看一下我们这边,我们这边我们切换到第一位,我们看有没有合并过来。更新一下,我们这边需要更新一下, 我们可以看到这个内容合并过来了,这就是我们在平台合并的一个流程啊,一个流程。

get 暂存区是什么?怎么实现的?文件暂存?下面我们来一起看一下。首先打开命令行工具,输入 get in it 图纸,画一个 get 仓库,这个时候就会自动生成一个点 get 文件夹,下面我们在项目下新建两个文件, far 零内容,一二三四五六,然后 far 一内容, a, b, c, d, e, f, 然后暂存这两个文件。 现在我们到点 gate 文件夹里面去看一下有什么变化,我们会发现 objects 文件夹里面会多两个文件夹,这两个文件夹就是 对应我们的 far 零和 far 一文件。我们打开这个文件看一下, 发现是一个乱码,无法查看,我们使用 get a card fire 命令去查看这个文件的内容,四六是文件夹名称,三二是文件名的前两个字符,发现这个文件内容就是我们新建的 fire 零文件的, 然后我们查一下另外一个文件,另一个就是我们 far 一文件的内容。 然后我们来看一下,点 get 文件夹的根目录下,发现多了一个 index 文件,这个文件也就是赞成区。我们使用 get l s fast 命令查看一下赞成区的 文件,发现站城区记录了 far 零和 far 一的信息, 四六三二整个是用 far 零的内容生成的哈西马,四六是 far 零所存的文件夹名称,四六后面的部分为文件夹名,通过哈西马就能够找到 far 零在点 get 文件夹中的位置, 等到提交的时候就从赞成区拿到这些文件,大家有什么疑问可以在评论区留言,让我们一起讨论一下。