给大家演示一下,使用 get 命令啊,从这个代码编写到最终代码提交的本地仓库是一个怎样的过程?首先第一步,先初始化本地仓库 get, 然后呢是引力 初始化本地仓库初始化完成之后呢,看一看我们是否啊有我们的一个点 get 这样的一个目录, 有这个目录就表示我们的本地仓库已经出示化完毕。接下来呢,我们可以去工作区啊,也就是我们的 wox 被子去写我们的代码,比如说我们使用 v i 编辑器啊,然后呢去编辑一个文件啊,这个文件内容你就随便写了。 好,写完之后呢, esc 冒号 wc 保存并退出。那么这个时候呢,我们这个文件在工作区啊,先把它放到 get 的暂存区当中,怎么放上去? get, 有个命令叫艾的,然后 哈喽点加法写上,那么这个时候就放到暂存区,但是这个文件呢,他还没有放到本金库当中,怎么放到本金库 getmex 啊?然后哈喽点加法,那每次提交的时候建议加上注释,怎么加注释?杠 m 参数后面加上一个注释啊,比如叫 max, 然后妞饭,哈喽点知道吧?那么这个相当于是一个诸事啊,走一个,那么到此为止,哎,我们哎就表示把这个文件已经放到了我们本地仓库当中。
粉丝2.5万获赞14.6万
程序员必备工具 get 是什么?那 get 呢,是代码版本控制的软件啊,有一款和 get 类似的软件呢,叫 sun 啊,但是目前来说呢, get 是更加的流行啊,那怎么理解这个版本控制呢?你可以将 get 呀 想象成是一个代码管家啊,这个代码管家呢,会详细的记录你每一次对代码的调整啊, 这样呢,当你想回复到之前某一个调整的时候啊,会变得非常的容易啊。另外呢,这个代码管家还会将本地的代码上传到云端啊, 这样做啊,有两个好处,第一个好处呢,就是不会因为你本地的这种电脑的故障导致啊整个代码的丢 师啊。另外呢,还可以通过这个方式啊,进行多人的合作啊,让大家共同的来完成一个功能啊,所以啊,给的是团队合作当中必不可少的一个工具 啊,欢迎大家关注我,与我交流。最后加个小问题,复联四的编剧是程序员的可能性很大,为什么?欢迎评论区留言。
get 环境搭建大家好,本节课呢,将向大家介绍 get 环境的安装, 那么 get 呢,是一个开源的分布式版本控制系统,可以有效高速的处理从小到非常大的项目的版本管理。我们使用的时候呢,一般都是作为同步软件,也就是同步 get up 的仓库,或者是其他用来克隆一些 项目到本地来使用,就类似于下载软件一样。我们来看一下这个环境是如何进行搭建的。好,我们打开 ig 浏览器,然后输入一下百度,我们去百度里搜索一下,然后进行下载,然后我们搜索一下 ge 官网啊, 第一个就是给了个网,第二个是中文网,其实都差不多的,我们只是下载,所以打开哪个都一样。在这个界面当中呢,有一个这个 down for windows 这个版本,我们单击以后呢,他会显示下 下载这个列表,列表呢,这个呢是基础的安装版,下面一个呢是类似于绿色的这种版本,我们一般下载前面这个基础的这种安装版,根据不同的系统,一般现在都是这个思维,所以我们点击下载刘斯比特否 windows set up 就可以了, 然后他就会弹出啊,另存为对话框,我们设置一下保存位置,就可以进行下载啊。如果下载不了呢,是因为我们这个 ds 对于 github 可能解析不好,我们可以换个网,换个时间段来进行尝试,或者使用一些特殊工具来进行尝试就可以了。那么这里呢,我已经下载好了,就是这个 get 二点四,二点零点二留四位的, 然后双击就可以启动安装了,安装比较简单,下一步就可以了,这里设置一下安装的路径,如果大家要安装到其他位置呢,就是路径中不要有中文的这个字符,那我们这里呢,就以默认的这个位置进行安装。 单机 nice 的这里呢有几个就是勾选的项目,第一个呢,是否创建一个快捷的图标放在桌面上,我们勾选以后也可以。然后呢,这个未勾选呢,就是每天检查一下这个更新啊,我们勾选他也可以 再下一个呢,是把它加入到 windows 的这个 tomino 中。单里面啊,我们都选上单机奈斯的,奈斯的这里呢是设置新存储库中啊,初始分支的名称我们单机奈斯的, 然后呢是调整 pass 环境,建议不要动啊,采用默认值就可以了,赶紧。 nice 的,接下来是设置 s s h 可执行文件 不动 nice 的,接下来选择 h t t p 后端传输 nice 的配置行为符号转换,保持默认就可以了是接下来是配置用于 get 拜时的终端模拟器,保持默认 nice 的,然后是选择 gate pro 的默认行为,我们保持默认。 nice 的接下来是配 是评剧管理器奈斯的配置额外的选项啊,不用动配置实验选项啊,这里直接就隐私到安装就可以了啊,其他其实都不用动,但是给大家讲一下每个界面是干嘛用的,那如果大家需要的话,可以根据自己的情况进行配置 安装并初始化完毕以后呢,会弹出成功的提示啊,不用看他的这个日志了啊,非内饰就可以了。 接下来呢,我们来验证一下是否安装成功。我们使用 win 键和 r 组合键,打开运行特效框,输入 cmd, 回车以后呢,我们输入 get 港威,看一下他的版本,如果这个显示出 get 版本是多少呢,就证明我们安装成功了, 我们通过呃环境搜索一下环境,查看一下编辑系统环境变量,我们来看一下他给我们系统里加了哪些路径值,我们在这里选择开始,然后在这里呢有个 get get 的 cmd 被加入到环境变量当中了,就说明 明我们已经安装成功了,那么一般用它进行克隆仓库呢?是怎么做呢?我们可以直接使用命令,就是 get 克隆 one, 然后呢是放入我们项目的地址,然后回车 他就可以去这个地方去下载并克隆这个项目到本地啊当前的这个文件夹当中,我们在这里呢是应该是加入到啊用户的主目录当中啊,这里有个优米 ocr 啊,我们就克隆这个就可以了。 好,那这里呢就不等他课论完毕了,那么其他的给他项目呢?其实在代码这里呢,都有他的这个 f p t p 这个链接啊,默认是一点 get 结尾的,我们都可以使用刚才所说的 get 克隆命令来进行这个下载,或者说同步啊,这里都可以找得到。好 get 环境安装啊,就介绍到这里,感谢大家观看。
你是一个刚入行的程序员,你正在开发一个软件,现在你要对代码进行上填码情况的修改。此时的你可能会有一个疑虑,如果修改失败了,没有得到想要的结果,现在能正常运行的代码又被改的一团糟,没办法还原,应该怎么办?面对这种情况,聪明的你可能会想到一个绝妙的注意, 那就是把目前的代码复制出来,做一个备份,给他取名为第一版,然后再进行修改,后边如果遇到问题,随时把第一版还原就行了。恭喜你已经掌握了最基础的版本管理。但假如这份代码需要频繁的改动,那每次修改都要手动备份一次,非常麻烦不说过几天很可能自己都搞乱了,根本记不清哪份代码里有什么。 假如这个项目需要你和同事一起做,那你们所遇到的麻烦会更多,比如多人之间代码如何同步?某份代码到底是谁改的?修改了什么,什么时候改的?你是不是已经开始头疼了?但这时如果 有个软件可以在每次修改完之后都留下一条记录,并且你可以在这条记录里随时看到修改的时间,修改前后的内容,以及他们的差异,修改人是谁,修改完后填写的备注。还可以把代码上传到一个类似网盘的平台,并且随时能下载下来,并自动合并多个人写的代码。 那前面的问题是不是就迎刃而解了?没错,这个软件就是我们视频的主角,当今程序员的基本功,分布式版本控制软件 get。 作为一个软件, get 可谓是师出名门,他的开发者是大名鼎鼎的 linus, 当今最出色的成选之一兼暴躁老哥为我们留下了无数的传说和怼人金句,比如发英伟达, 比如 takis chip。 生命的 code 翻译一下就是废话少说,放马过来。而 get 的诞生也是一个精彩的故事。时间回到二零零二年,当时的琳纳斯正在开发一个微不足道的小项目 linux, 当时他选用的 版本控制软件是 beekeeper, 这是一个商业收费软件。在一次矛盾之后, bee keeper 收回了 linus 的免费使用权限,数次磋商无果, linus 生气了,不好办,那就别办了。然后花了十天时间自己开发了一款开源免费的软件 get, 意思是不愉快的人直接取代了 bee keeper, 成为了当今最流行的版本控制工具,并诞生了如 get up、 get lab 等无数依靠 get 而存在的网站,一定程度上改变了软件世界。 那么 get 应该如何使用呢?其实并不复杂,下面我将会用几分钟的时间为你讲清楚 get 的基础用法。 首先到 get 的官网获取到对应的版本并安装。安装完之后,如果你是 windows, 在桌面点击鼠标的右键,会看到多出了两个菜单项,选择下面的 get bush, 就能打开专属的命令窗口,后边我们的内容都会在这个窗口中进行。如果是 mac 或者 linux, 打开命令终端,输入 gate, 按下回车 会看到使用帮助,这就说明你已经安装成功了。在正式使用之前,我们还需要进行一点简单的配置,绑定一下用户信息,修改屏幕上这两条命令,最后边的用户名和邮箱这里乱填也可以, 然后在命令行中依次执行。之后,我们就可以正式使用 get 来管理我们的项目了。第一步,我们需要先创建一个本地的 get 项目仓库,一般会有两种方式,第一种是世界克隆别人的仓库,我们在代码托管网站上,如 get up 上 复制一下项目的地址,在命令行输入 gets clone, 然后把刚才复制的地址粘贴在最后按下回车, gets 就会把整个项目仓库直接下载下来。 第二种是在电脑上新建一个文件夹,文件夹中打开命令行,输入命令 get in it, 他会在文件夹内自动创建一个点 get 的文件,这就是我们的代码仓库了,这里面的内容千万不要动。那么我们如何用它管理文件和代码呢?我将会用一个 简单的文本来为大家演示。新建一个文件 abc 点 txd, 把它打开,在里面输入我们的代码,比如说我这里输入一个点赞,假设现在已经开发完了一个功能,接下来需要做的是使用 gate 把代码提交到仓库, 打开命令行,输入命令 get at, 最后边加上文件名 abc, 点 txt, 按下,回车就把我们刚刚修改的内容添加到了暂存区。暂存区是 get 中的一个概念,类似于我们要发一个快递,在把快递放入仓库之前,需要先拿一个快递盒把东西装起来,暂存区就是这个快递盒。 如果你修改的文件很多,也可以执行命令 get at 点,意思是把所有的文件都提交到暂存区,快递打包好,接下来就要把它放入仓库了,执行命令 get commit, 如果想对刚刚的修改进行个备注,可以在后边继续添加横杠 m 引号,引号中填写备注内容,比如说横杠 m 引号新增了一个点赞, 按下回车,代码就被我们成功的添加到了仓库,自此 get 中的一次提交就完成了。让我们再回顾一下,完成提交三个步骤,一、修改文件内容。二、 get tight 三、 get commit。 这会是我们开发中最常用的一套流程,一般来说,每开发一个功能或做完一个需求,都需要对代码提交一次, 这样我们的代码就像玩游戏的时候保存存档一样,被存为了多个节点。我们输入命令 get clock, 就可以查看这些节点。这里可以看到每次提交他的提交人,提交时间备注都被完整的记录了下来。这个命令还可以添加很多的参数来供我们查看更详细的信息。比如后面加上横杠横杠 it, 就可以查看每次提交的时候都修改了哪些文件。在 log 中还有一个重要的信息就是下面的 cmatid, 使用它我们就可以穿越时间回到过去。输入命令 get stiff, 加上某次提交的 cametid, 我们就可以查看 这次提交到底修改了什么内容。这么看可能会有人看不懂,当我使用一个 get 的可视化工具,大家就会一目了然。我这里拿拍场做一个演示,屏幕正中间就是我几次提交的时间线,点击任意一个节点,就会在右侧列出这次提交修改了哪些文件。双击任意一个文件,他就会显示具体修改了什么内容, 集合前一个版本的差异,比如说我这次提交新增了一个收藏,左边是修改之前的,右边是修改之后的,非常清晰,只是查看当然不够。我们还可以把代码随时回复到某个节点,在命令行输入下面两条命令,其中的任意一个,在最后加上 cmatid 执行命令,就能把代码回推到指定的节点。 两个命令的具体实现略有不同,感兴趣的可以去自行了解。 kit 中还有一个很重要的概念,叫做分支。我们想象一个场景,我们的程序需要做一个中文版 和一个英文版,两个版本功能略有不同,更新时间也不同,但他们又是同一个项目,这种情况下就可以用分支来解决他。就像一个大树上不同的枝丫,把一个程序分成多个版本,每个版本的内容略有不同,又可以互相合并。在命令行执行命令 its branch 就可以看到当前的项目有哪些分支。在项目的开发中,程序员们一般都会创建多个分支。首先是 get 会自动创建的 master 分支,这个分支一般用来保存经过测试的稳定代码,用来在发布新版本的时候使用, 正常情况下是不能修改的。如果想要开发新功能,一般会在 master 的基础上再复制出一个 develop 分支,并在这个分支上进行开发。我们执行命令 get check out 横杠 b develop 就完成了创建。 此时在执行命令 get branch 就可以看到我们现在已经有两个分支了,并且当前使用的是新创建 develop, 我们可以在这儿开发我们的新功能,等开发并测试 完毕要发布的时候,需要再把 develop 分支的代码合并到 master 上。首先执行 add 和 commit 命令,把代码提交,然后执行命令 get check out, master 切换到 master 分支, 在 master 上执行命令 get merge develop 就完成了合并。 当然这只是一个最简单的步骤,实际开发时的流程会比这个要复杂的多。至此,你已经了解了 get 在本地电脑的基础操作, 可以用它对代码和文件进行管理了。点赞收藏过五千,下期视频我将会讲一下 get 如何和 get up、 get e 等代码托管平台进行互动,以及如何自己创建一个开源项目。我是雪梨九九,我们下期再见吧。
这是一段 get 代码提交变更日志,请弹幕中告诉我问题在哪里。三二一。我相信在座的跟我一样,看老半天都没发现有啥问题,现在我公布答案, 你看到这个点没有啊?我靠,居然放到了代码缩进的外面,这完全在注意力之外啊。他家这个点的目的就是为了故意让这段变异脚本运行出错,目的是为了让三 boss 失效,这样这个程序就可以突破结界,为所欲为了。而这只是此次木马事件的冰山一角。 前几天,知名开源 linux 压缩软件 x z 暗藏木马,被微软员工曝光,这个木马危害程度极高,只要你的服务器安装了带后门的 x z 程序,并暴露在互联网中,就意味着随时可以被控制,因为它是属于供应链投毒,就好比在一条河的上游下毒,影响针对的不是某个单一系统, 而是一整个生态。凶手假谈为了达成这一邪恶目的,骗取 x e 项目负责人的信任,密谋两年半终于达成目的,而且迭代了多个版本,甚至还发邮件催促乌邦图组织,要求尽快把带木马的版本合并到乌邦图的发行版中。 可以看到,凶手的野心很大,一旦木马被铺开,全世界的 linux 服务器都会遭到威胁。此次事件暴露出开源社区潜在的安全管理问题,因为通过分析假谈的代码,可以发现隐藏的非常深,甚至专业人士都很难一眼看出端倪。 要不是威尔程序员发现他的 sh 登录速度比平时慢了零点五秒,然后花了很大的力气顺藤摸瓜发现真相,可能假谈的阴谋就会得逞了。而且比较悲观的是,在讲究隐私保护的 dtap 社区中,没人知道假谈的真实身份是谁,也不知道他会不会受到法律的制裁。本期视频将带你还原此次公 供应链投毒的全过程。 可能有很多不熟悉 linux 的小伙伴不认识 x d, 不知道它到底是啥。我先给大家科普一下。 x c 是一个文件压缩软件, 在 linux 发行版中,甚至整个 unix 生态中, x c 的普及程度不亚于 windows 下的 v r r。 它是基于 l z m i 压缩算法。 对,就是与知名七 z 格式一样的算法。它的优势是有更高的压缩率,压缩出来的文件会比传统压缩软件更小。 x c 是由的 tookani project 维护,负责人叫 lacy colin, 自诞生起距今已经有十五年的历史了。 好了,讲完背景之后,我们开始还原整个作案真相。第零目得到了负责人 let's say calling 的信任。 s c 的项目负责人 let's say calling 表示自己已经精疲力尽,如果不是有 严重的 bug, 他不想管了,更别提加新功能了。二零二二年五月十九号,一名叫做 dennis s 询问了 x e 加二的版本有一年没有更新了,请问一下未来的更新计划?很快,当天 lesson calling 回复了,说确实更新很慢,但他提到了一个人,假谈就是本次牧马事件的幕后黑手。假谈帮助了我, 他将来可能会发挥更大的作用。很明显,我的资源太有限了,所以从长远来看,必须做一些改变,因为 let's say calling 有长期的心理健康问题,不知道是不是抑郁症, 他说了,假谈将会扮演更加重要的角色。可以看到,这个时候 lesson 靠你已经对假谈产生了一定程度的信任。对于不断抱怨和提出要求的用户,他强调这是一个无薪水的业余项目。在用户的不断的要求下,假谈成为这个项目共同维护者。可以看到,此时假谈已经正式上位。当然, 我不排除这位用户明知拉丝靠领身体不适还在催更的行为,是否也表明他其实是假弹的帮凶?之后的一年,假弹继续频繁更新代码,伪装成一个称职的项目维护者。或许我们不能单纯抱怨拉丝靠领就这样轻易的把权限交给别人,但迫于社区伸手党的压力, 以及拉萨 colin 存在心理疾病的问题,于是接下来的舞台就交给攻击者假弹了。第一幕,布局黑网二零二四年二月,假弹在项目中添加了几个测试文件,根据他的 comment, 这只是一些用来测试的随机数据,以及一些无法解压的损坏数据,而这些测试数据里面就暗藏了玄机。当然,光靠这些测试数据是无法激活木马的。假弹在安装程序的编译脚本中动了手脚,这里就要给大家科普一下编译脚本。 linux 不像 windows 直接运行一个 exe, 一路为下一步就可以完成软 软件安装。 lilyx 所谓的安装,很多情况下是需要通过原代码编译的,而引导原代码执行编译的脚本就是编译脚本。这些测试数据中暗藏了已经编译好的二进制木马文件,而编译脚本中会刻意让编译器来将测试数据替换部分原代码编译生成的二进制,这样他加大的木马代码就趁虚而入, 注入最终编译好的最终程序中了。这种偷梁换柱的手段隐藏的很隐蔽,哪怕你去刻意检查他的代码,也很难发现任何木马的痕迹, 因木马本体就不在原代码中瞒天过海,而且大多数人重点检查新增的代码,不会去特意留意什么编译脚本。本期开头那段假滩蓄谋恶意破坏杀伤的行为也说明 x c 的木马的野心。第二,木露线 进入魏某两年的计划假谈,以为成功在即,在植入牧马 x c 五点六点零版本发布接近两个月的时候, 污染员工。安卓于 free 在测试自己的东西的时候,因为发现 s s h d 远程服务占用 c p u 异常,后面注意到登录速度变慢了,慢了零点五秒。他觉得这不对劲,在逆向的时候发现有无法对应符号表的未知函数。最后经过一系列的逆向分析, 他发现了 x d 有恶意代码植入,倘若假弹的木马程序没有导致 s s 取 d 卡顿,倘若这个污染工程师不懂逆向分析,换做普通的工程师,这个严重问题可能就错过了。幸好发现的早,如果当这个被植入木马的 x d 程序被大部分的 linux 发行版使用了,然后我就不堪设想。 具体更深层次的技术细节可以参考边量发布的解读视频。第三幕影响首先受影响的 x z 版本是五点六点零和五点六点一,大家可以到自己的 linux 系统中输入 x z 空格杠大写的 v 看看 看你当前运行的是哪个版本?如果是五点六点零或者以上,请立马卸载或者降级。这次事件对开源软件领域可谓是重磅炸弹,开源的 linux 中像 sc 这样的软件还有非常多,到底有多少个假谈在幕后干着坏事呢?而且假谈的手段非常隐蔽, 一般人真的很难发现。都说开业系统中会有很多 nsa 暗藏的后门, nsa 可都是正规军啊,或许他们的后门代码运行效率会更加高呢。不过话说回来,开业软件虽然可以藏毒,但至少被发现的门槛还是会低很多,只是没有人知道我们正在使用的闭园操作系统到底暗藏了多少后门。 写到这里,我感觉背后发凉。目前 github 已经把假坛的账号和 xe 的工程代码都封禁了,后面假坛会乘之以法吗? xe 项目会被因此被整个开源社区抵制,我们不得而知,我也会继续关注这个事情,希望不要不了了之。
相信很多人在写代码时有过这样的经历,在完成了程序的一个功能后,会把原代码打包为一个压缩文件, 在文件名中加个时间和备注,这样在后续的代码写的一团糟时,可以把代码直接删掉,用压缩文件回退到以前的样子。如果你这样操作过,那么恭喜你已经具有了最原始的版本管理经验。这种管理方式操作简单, 但在多人加异地合作时很不方便,而且容易出错,于是我们需要专业的软件来帮我们管理原代码。这类软件称为版本控制系统,其中有个软件很受开源社区的欢迎,这就是 get。 简单讲下下载和安装,来到官网 点这里下载 windows 版本,选择六十四位,这年头应该没人用三十二位的 windows 系统了吧。下载完成后,那这就是 安装文件,双击安装,不停的点下一步即可。在二十年前那个安装文件还很纯洁的时代,我们称之为一路回车法。 安装完之后,在桌面点右键会发现菜单里多了两个菜单项,选第二个,从而打开 get 控制台。目前呢,字太小又不好看,没关系,可以改单击程序图标选项, text select, 选择喜欢的字体和大小就行了。 有个事现在必须做一下,那就是配置用户名和邮箱,使用 gate 空格 config 空格两个短杠,然后是 blow 空格, user 点 name 空格,加一个迷糊。配置用户名,使用 user 点 email 空格迷糊 at 一二三点 com 配置邮箱。注意,这个电子邮箱并不需要真实的存在,尤其是在非正式用途下,可以随便写,比如特朗普艾特不靠谱点 com 也是可以的。配置完毕,下面我给大家简单演示一下用 get 实现代码管理的过程。根据实际需要有两种初始化的方式, 如果你是从 github 上下载原码,可以用 get clone 命令。比如你想把项目放在桌面,就可以在桌面右键选择 bash, 输入命令。 get 空格, clone 空格,再加上某个项目的 get 链接,通常呢,在这里获取 粘贴。回车可以看到桌面上出现了项目的文件夹,打开里面有个点 get 文件夹,这里包含了和版本管理有关的各种文件,其中绝大部分文件开发者不需要去操作,也 最好别去操作,项目的原代码都在这里,到此为止就已经把别人的项目白嫖过来了。如果是自己新建的项目,可以先新建一个文件夹,随便起个名字用来做项目的总文件夹。接下来要告诉 gate 帮我们管理这个文件夹下的代码。 打开这个文件夹,在空白处右键打开 get 控制台,然后输入 get 空格。 in it init 呢,就是初始化的意思。这样 get 就立刻创建了一个名为点 get 的隐藏文件夹,用来管理即将新建的原代码。现在开始写代码,代码所在的这个目录叫做工作区,在工作区新建一个原代码文件, 然后假装花了一天的时间完成了一个小功能。一,这个时候需要把这些代码复制到 git 仓库进行备份,术语叫做提交 commit。 那么仓库在哪呢?就在刚才这个点 get 文件夹里,不过正如刚才所说的,不要直接操作这个文件夹。提交操作是通过两条命令实现的,首先输入 get 空格,爱的空格点, 这个点呢是当前文件夹的意思,这句命令的作用是让 get 把当前文件夹内的所有文件和飞空文件夹设置为准备提交的状态。有点子弹上膛准备发射的意思, 子弹不上膛能发射吗?显然不能,所以这一步啊不能审。然后再用 get 空格 commit 空格,杠 m 后面跟了一串字符串进行提交。 引号里的部分是对这次提交进行备注,比如功能一已完成。注意这个备注一定要写,因为软件开发过程中会有很多次的提交, 不写备注的话以后就分不清楚他们的区别了。回车提交成功后, get 会把原代码以数据库的形式保存在仓库中,可以用 get log 来查看提交的历史记录,包括作者时间备注。那么这么一大坨是干什么用的呢?如果把每次提交看做一个学生的话, 他就相当于学号或者身份证号,用来唯一标示每一个提交。备份完今天的成果,我就满意的睡大觉去了。这时一个瘦小的黑影悄悄的打开了电脑。第二天我打开文件一看,卧槽,小猪佩奇,我的代码呢 啊!想了想,可能是被淘气的小屁娃给修改了,不要慌,问题不大,我们可以用 check aunt 命令进行恢复,它的语法是 get 空格, check aunt 空格,大写的 head 空格。然后我们要恢复的文件是 men 点 p y, 它的作用是从最后一次的提交里把 men 点 p y 复制到工作区回撤。再次打开原代码, 发现昨天的内容他回来了。实际使用中,如果不幸把代码改的乱七八糟跑不起来,也可以用这个命令恢复到以前能正常工作的状态。这后悔药,就问你香不香? 今天继续录代码,又完成了功能二,按说这时该提交一下,但是我正在信头上写的正嗨,接着就新建了文件三点 py, 把功能三实现了一半。 现在有个问题,如果按上次的方式,会把文件夹下的所有文件都提交,这样并不好,因为按照惯例,每次提交的代码应该是清晰的,我如果在提交备注里这样写完成功能二功, 功能三做了一半。这藕断丝连的别扭。这个时候我们只需要稍微的变动一下,把这个代表当前目录的点改为要提交的文件慢点 py 即可,这样慢点 py 就进入了准备提交的状态,而三点 py 并没有。 于是在接着用 getcomet 命令提交时,只有慢点 py 被提交到仓库备注就可以写成功能二完成。等到以后功能三也完成的时候,再用爱的命令把三点 py 进入准备提交的状态,然后提交备注,写功能三已完成。 这样每次提交的结果看起来就清晰多了。在上面的视频中,我们三次提交,每次都涉及到了将文件设为准备提交的状态这种操作。在 get 里有个专门的术语叫做把文件加入暂存区。 暂存区呢,它的英文有两种表达方式都可以,一个叫 index, 一个叫 stage。 暂存区的设计是 get 的一个特色,为原码的管理带来了更多的灵活性。通过刚才的例子可以看到,使用暂存区可以在不耽误你写新代码的前提下,让每次的提交在逻辑上非常清晰。 值得一提的是,暂存区在版本控制软件中并不是必须的,有些版本控制软件,比如 svn 就没有暂存区,可以把元代码文件直接从工作区提交到仓库,非常的容易理解和使用。但 get 由于使用暂存区在工作区和仓库间横插了一杠子,理解起来就没那么直观明了了。 不过呢,既然是设计方案,肯定是有利有弊的,赞存器的作用还远不止这些,相信大家在实际使用中会有更深的体会。
计算机专业为了就业,应该经常捯饬自己,日常周长维护 get 代码库。二零二三年的年末啊,这个 it 圈的这个就业市场其实是没有以前好的,因为受这个疫情的影响,还有这几年的这些一些市场的变化吧, 其实大家也都清楚啊,很多这个互联网公司降本增效对吧,什么三十五岁向社会输出人才等等等等吧。反正一系列原因吧,我上个视频也说了一下,那我们这种有经验的社会人士,环境都这么不太好,那对这种笑这种小白来说啊,其实这个情况会更差。 我我的粉丝里边啊,绝大部分都是学生,然后第二大群里就是学生家人啊。对,现在大家都很关注这个问题。现在就现在这些计算机专业的啊,包括计算机相关的啊,如果你要想找一些那种核心类的,这个岗位啊,就典型的程序员, 产品经理,就这两大类啊,其实其实真的比以前难多了。那这种情况下,你作为一个学生,你怎么提高自己这个找工作的竞争力呢?你要学会包装自己,你要多捯饬自己,你明白吧?就像我们这个标题说的, 怎么捯饬法呢?把自己的简历写的特别漂亮对不对,成绩单那个特别好看,就算捯饬自己,那是最基本的捯饬。我比较看中那个长期的。对, 典型的啊。如果你是一个程序员的话,你应该有自己的 github 或者 gt 的账号,你应该有自己的代码库啊,你不一定说你的代码库是一个什么著名开元代码啊,但是你应该有 维护这个代码库的记录。为什么呢?因为这能说明你提前适应了社会。你校招生跟社交生那点区别不就是谁像一个社会人吗,对不对?所以试问现在的这个,不管你是研究生 也好,还是这个大四找工作的也好啊,你做到从大一开始到现在,你这个三年四年五年的时间对吧?每周都有你的代码更新记录吗?是有的人说我虽然没做到,可我一年那个多少万行代码量呢?但是你但是你口说无凭啊对吧?你写那么多代码我从哪看呀? 如果没有 get 的话,你怎么证明那是你的代码呢?也有可能是你借的对吧?但是如果你这时候有一个 gt 的一个维护的记录,我能看到你从大一开始对吧?到你本科的某某阶段。哎。代码水平是 代码是一个什么样的风格对不对?做的都是哪个方向的项目?可能一开始就学习语言的基础的对不对,然后学习数据结构的,然后再然后开始做点项目了对不对?然后再然后已经开始出现的那个方向的细分了。如果这时候这细分方向正好就是我这个招聘这个比较比较需要的职位,那那我锁定你了。我肯定锁定你。 真的。这就是捯饬自己对不对?你看那些那个那个漂亮的那个那个姑娘对不对?那个怎么怎么化妆,那不是一下子学会的,那都是化了好多年的妆练出来的对不对?你也可以练吗?对,所以啊, 就是这个到了大四还有这个研究生阶段也没有自己的代码库的这个程序员啊,特别二零二三年啊,我觉得你这个格局有点小,你多看看这个身边那些漂亮的女同学怎么怎么捯饬自己的对吧。甚至甚至我说实话啊,一个高考生,这个刚报完计算机专业以后啊, 这时候建自己的 get 库啊,就不算早,时间合适,从那时候就可以开始了。对,这就是我的一个建议啊。
抖音上面的商家,他打电话来咨询我说那个 gat 的这个模式的话,我们今天再来说一下。首先的话是我们现在特幕不是有两种模式吗?一种是 vim, 一种是 gat, vim 的话就是我们正常的把货发到仓库,仓库质检合格,你再上架。第二种模式, gat 模式的话其实我们也做的不多, 嗯,今天就来给大家来稍微讲一下。首先 jit 模式适合的是哪一种产品?它的啊,遍体颜色非常多的,或者款式很多的啊,比如说衣服啊,或者说哎,手机壳啊之类的,这种的话你备货的数量成本太高了, 不过现在售卖同期是基本上你有现货都是采用这种 git 的一个模式。 git 模式的话是要求我们首先店铺你要交自己预预交五千的一个保证金,当我们上架商品的时候,我们去找买手进行开通 git 模式 交完五千保证金,我没有开通,怎么一定要找买手进行开通这个 git 的这个模式,我们的商品上架,上架后你就不需要把货备的仓库,因为最重要的一点,我当我们每天收到了 git 的订单,我们一定要 及时发货,你不要把这个时间卡在七十二个小时,因为我们的货送给送到特务的仓库,他并不是直接送进他的仓库,他是有收货点的,他把货放到一个收货点啊,包括我们的快递公司啊,顺丰啊,圆通这些放到那个收货点,然后特务的工作人员会定期出来把货运到仓库里面进行一个质检,所以说他这个是需要一个时间的。我们的货我们的家具模式是要求七十二小时用扫描入仓, 那你那你不可能我六十个小时已经到了他们的仓库,或者说七十个小时我就不会被罚款。他是以他扫描入场为主,并不是说以快递公司签收为主。 所以说大家一定要提前把这个货发到偷摸的仓库,给他预留扫留入仓的一个时间,这样的话才会避免被罚款。因为我做 j i t 确实也做的不多不多,可能如果说讲的不详细的,有做过 j i t 模式的商家也可以给在评论区里面进行一个补充啊这个。
你可能会遇到这种情况,你给老师、同事或甲方发了一个文件,他说再改一下,你就改了,再发过去,然后再改再发。等十个版本后,他回复你一句,还是第一版吧,哈哈。 然而当你打开文件,却发现,哎,第一版是什么样的崩溃?从此以后,你就养成了一个习惯,文件一点零,二点零、三点零,修改版,最终版,最终修改版,打死也不改版,打死也不改修改版,打死也不改最终版,等等。 哈哈,是不是很烦?单个文件还能这么将就,但如果是几十个几百个文件呢?绝对是地域级难度。于是 get 就出现了一个开源的分布式版本控制系统。当你每次修改很多文件提交后, 他都会自动创建一个项目版本,你可以通过他看到每个版本不同文件的不同差异,也可以随时回退到某个提交时的状态。最大的好处是,其他人也可以同时修改复制一份过去,改完发给你会自动合并修改的部分文件。 是不是很方便?我们来演示一下。首先要求你有 vs q 的和 get, 我在边窗环境配置内结讲过没有的赶紧去看一下,按照说明下载,我这里默认你已经安装好 get 了。 先用 vs 扣的打开一个电脑上的文件夹,然后创建一个 test 点, txt 文件, test 就是测试的意思, txt 就是文本文件,看小说的应该都知道,文件里面写内容为零点一。再来新建一个终端, 这就是电脑的命令式界面。在图形界面操作出来前,以前的老电脑都是用这个黑框框操作电脑的 pwd 就是显示当前终端绘画所在的目录位置,可以看到是地盘的二一零一目录,对吧? 然后 ls 是显示当前目录下的所有文件,可以看到有刚刚创建的 test 点 txt 文件。 cd 是切换目录,不免跟路进两个点是上一集目录明是进入下一集,这期知道这三个命令就行,多练一下 认终端,去逛逛你的电脑,其他的命令我们以后再学,感兴趣的可以自行搜索,提前了解好。我们看 git, 先用 getversion 输出一下 get 版本号,确认你是否已经安装 get, 如果有显示版本号,则说明你已经安装好了。然后我们设置一下自己的昵称和邮箱, config 是配置的意思,刚刚格拉伯是全局的意思,优则是用户内幕是昵称妙式邮箱。大家一定要严格,每一个空格和标点符号 一定要用英文标点符号,双引号里面的内容你替换成你自己的就行。我们在当前目录输入 get 以内特,以内特就是初始化单词,就会在当前目录初始化创建一个点 get 隐藏文件夹, 这个文件夹里会保存我们文件的每个 get 版本记录和变化。出手画之后,其实文件还没有被记录,我们要使用命令 get a 的把文件加进 get 版本控制 系统中, ad 就是添加的单词,命令后面要跟文件名,比如这样 get ad test 点 txt, 就把这个测试 txt 加进去了。那如果文件比较多怎么办?一个一个添加太麻烦了。 就可以使用 get 爱的点,这里点号代表当前目录的全部文件,添加进去之后, get 只是暂时保存,还不会保存提交记录,我们还要使用 getcome 的命令。 cmeter 的翻译就是提交,可以把刚才暂时保存的变更提交固定成一个版本。 getcome 的试一下,会打开一个叫威姆的终端编辑器,让你写提交说明。 最后所有新手在这一步都会踩坑,因为威猛的操作比较反人类,打开威猛的时候默认是不能写东西的,你要按 a 或者 i 进入编辑模式,然后写几个字的说明,我们就写第一次提交,然后切记先按 e, s, c 退出键退出编辑模式,然后再输入英文冒号,注意是英文状态的冒号, wq 两个字母代表保存并退出,左下角就是命令显示, 输入后按回车才可以完成编辑。退出到终端目录可以看到显示了提示。一个文件改变了一行新增 get 都是按行来对比文件不同的就有两种情况,新增删除,如果是同一行的修改,那就是同时删除一行,新增一行。 好,新手只需要知道这三步就行了,其他的遇到再查,本次提交就完成了。 get 会保存这次提交的文件数据,我们用 getlog 命令看一下 提交信息, log 的翻译就是日制,你的每次提交 get 都会记录日制信息,这个命令可以显示出来,我们看日制格式。 comet 提交后面一大段字符,他是这次提交的随机 id, 作为唯一标识, 奥赛是作者的英文单词,就是你刚刚设置的昵称和邮箱带,它是提交的日期,在下面就是刚刚写的提交说明了, 然后我们再来修改一下文件,把内容改成为零点二 sq 的自带提示,你现在那个文件会显示绿色,修改一个文件会显示橙色,表示他和上一次提交的数据不一样。再来执行一遍 get a 的点, 这次我们试一下添加所有文件,然后 getcome 的杠 m, 呃,双引号第二次提交,哎,这里我 用了杠 m 空格双引号命令。这是写提交说明的简化版操作,他就会跳过 vim 编辑,大部分人都会用这种方式写提交说明给他 log 看一下没问题。最新的在最上面再来写一个 v 零点三。同样执行一遍 get a 的点, get cme 的杠 m fix 括号 test, 冒号 change content。 这次提交是规范了一下提交说明,这个只是一个分格规范,不是硬性要求的,目的就是为了让其他人一目了然你的版本修改内容。比如最开头一个 fix 就是修复的英文单词, 后面一个括号写上修复的文件或模块冒好,后面写修复了啥,颤着康腾的翻译一下就是改变内容。就是如果你要参与国际 项目,那么一个规范的提交信息和英文是必要的。还有一些规范词,你可以搜一下 geek me 的分格,自行了解自己项目无所谓,自己能看懂就行。其实现在很多人也不用中断来操作了。 vs 扣的自带界面版的 get 操作,我们写一个零点四, 然后左边可以看到有一个文件改动的提示。点一下这个修改的文件,可以看到对比视图,左侧是上一次 come 的内容, 右侧是目前的内容,上面有个对号的按钮,点一下提示,我们没有可以卡密特的赞存文件,是否赞同,所有更改点试就行,他就帮你执行 gay 的和给的卡密特了。 然后你在上面输入一下 come 的消息,也就是说明按回车就 come 的完成了。给他 logo 一下,可以看到信息 vs 的自带所有基本操作高级的功能。你可以安装一个 get history different 插件,可以看到所有历史提交,可以对比文件前后的区别等等。 get 有很多功能,但是想要学会他们看视频文章是没有用的,这个必须在你实际工作中才能学会。去菜鸟看一看所有功能,具体的用的时候再查吧。 那如果我想回退到某个版本怎么弄?首先 getlog, 看一下这几次的提交,复制一下某一次的卡密塔 id, 我这里复制第一次的提交 id, 然后输入 get reset 刚刚哈的 commy 台 d 就可以回退到这次提交时的状态了。可以看到文件内容变成零点一了。 getlog 一下也发现没有,后面的 比赛的翻译一下就是重置的意思,刚刚哈的是重置的模式,是硬重置,另外还有 soft 模式和默认的 mixt 模式,大家自行搜索了解。 但是瑞赛的不仅回退了,也把后面的清空了。我们想要在不同版本中切换怎么办?这时候就可以用分支 branch, 顾名思义,分支就是把当前版本复制一份。 你可以在 committee 第二次的时候用 gete branch 零点二命令创建一个零点二分之 gate commit 第三次的时候创建一个零点三分之 第四次的时候还是在主分支上, 然后用 check out 命令不断切换分支,可以看到可以随时变更。 奔驰的作用还不仅仅是切换版本,更重要的是你可以在主流上继续写代码,也可以在支流上同时写,然后某一天把这两条分支运跟墨制合并在一起。你可能会说,这不是多此一举吗?一个人当然作用不大,这主要是用于团队写作。 一个团队开发项目离不开分支,比如说我们项目现在的主分支是一点零版本,然后一点一版本要添加五个新功能,我就把这五个功能分配 可以给五个小伙伴,他们就在一点零版本上不让吃出去一个自己的版本分支就是命名为功能叉叉叉啊,然后五个人同时开发,到时间后,我在主分支上把他们五个人的五个分支都末制过来,合并在一起 再提交,并使用 gtag 打标签,生成一点一版本。团队开发互不影响,但又可以同时协作。 举个形象点的例子,这是一个 word 文件,我列了一二三四五五个小标题,让五个人同时写这个文档,他们各自都复制了一份到自己的电脑上,这就叫分支 文档,命名为自己的功能名,然后每个人写完自己的段落后再发给我。我打开每个文档,复制他们写的内容,粘贴到主文档中,依次粘贴完 南城就叫墨纸合并,最后另存为一点一文档,就是 come 或者踏个。这样一解释,大家应该懂了吧。 那么团队协作肯定不能在同一个电脑上,这时候就需要找一个服务器搭建一个 get 仓库服务。自己搭建也不难,有 getlab 之类的开源库,可以做企业私有服务, 但是大部分人没一个条件,或者就是懒得搭建,那么就可以使用 gtop 或者 gt e 这种公共的 get 仓库,其实说白了他们就是是个符合 get 操作的网盘,网盘大家应该懂吧, 我们来 get hub, 前面让大家注册了,不多说,点右上角加号 new repository 啊,创建一个仓库,起个名字,选择归宿,你们可以不用变,我就选归宿,在远道组织选择 party, 可公开 你私人的项目,可以选 private 私有不公开仓库。点下面可瑞特创建,进入后会有教你出示化的设置,我们就按照他的指引来 上面的以内特艾特卡米特我们都知道了,这里我复制一个 read me, 点 md 文件过来,这个上期说了是项目的介绍文档,艾特一下,再卡密特一下。 接下来就和下面的一样,三个命令,第一个 get branch 杠,大写 m 啊命,意思就是创建一个命分支,并把主分支切换为命。 第二个 get remote 爱的 origin, 一个你的仓库地址链接,意思就是添加一个远程仓库地址,相当于给这个 get 项目设置一个网盘地址,这样他就知道要上传 传到哪里了。第三个 get push 杠 u orange mean push 就是推送上传到网盘啊,也就是 get up 完成,然后会提示你输入用户名和密码,你就输入 get up 的邮箱和密码就可以了, 终端会输出上传信息,完成后来网页这边刷新一下,可以看到上传成功。然后我来教你们怎么参与开发开源项目,我这个仓库是帕布里克的,你们就可以参与进来。 首先你来我这个项目的地址,然后点击右上角的 folk, 就相当于把我的代码库复制到你的账号里面了,类似于不让你吃,当然了,你也可以再点个死哒,给你的第一个开元项目点个赞,收藏一下,然后右上角回到自己的仓库,可以看到已经 复制过来了,这就是元岛创建的项目,在个人账号下的 branch, 点这个 code, 复制一下你仓库的 https 链接,然后你在自己电脑上找个文件夹,用 vs code 打开新建终端,输入 gate clown, 你的仓库链接空格点号,也就是英文的句号。这个命令叫克隆,克隆人知道吧,就是把网盘上的仓库克隆到本地电脑,如果失败的话多试几次,网络问题你懂得。看我上期的解决方案, 可以看到我已经克隆下来了,但是现在这个是基于你自己的仓库的,使用 get remote 杠 v 命令,可以看到只有你自己仓库的链接,这时候我们再去原道的仓库复制一下,像 我们的链接回到本地,用 get remote add upstream 链接添加进去,这个就是添加上游代码库的命令,再 remote 看一下,有了。 如果你要给别人加功能,可以先创建一个分支,我们使用 get check out 杠币康文昌来创建并切换进入康文昌的分支。 现在我们创建了一个文件夹, members 伙伴啊,你们不用创建,然后再创建一个 json 文件吧,我们唱点 json, 里面写一个 json 对象,内蒙式昵称 url 地址是个人网站保存, 拿标准流程过一遍, get it, 点 get commit gun m, 然后 add 括号 member 冒号, ctrl get push 一下, 好,回到自己的仓库,可以看到已经有这个分支了, 这时候我们就来爱丽丽的仓库点这个 pose 次拉取请求,简称 pr, 进去后点六新建 pr, 这里 bus 就是根源选择 r 一零一的命分支, ctrl 就是比较选择你自己刚刚创建的分支,选择后如果选 是绿色对号, apple tomas 是可以合并的意思,那么你就填写 pr 信息标题和内容,点右下角 create 创建 pr, 你就提交成功了。 之后你可以在评论区来发个评论,提醒我一下,我就会去操作合并进驻项目,你的第一次开源贡献就完成了。 如果没有显示绿色对号,那可能就是在你写代码的时候,我提交了新的 comet, 导致版本不一致。这时候你就需要先更新一下本地版本,执行 getfix upstream, 从上游更新一下最新代码,然后执行 good mordge abs dreme, 把远程的最新代码合并到自己的分支中,再执行 goodboost 推送上去,这时候快点去提交 片就可以了。好,那么 get gtop 的入门就完成了。同样的流程也适用于 gete 和 getlebe。 本期的内容比较抽象,但是如果你要找工作,或者是和别人协作开发项目,也或是参与开人项目,这个东西是必须要学的, 你不会 get 人家要你干啥?让给代码文件添乱是不?哈哈,所以啊,大家一定要实践实践,实践练的多了就会了,我把第一次如何完成已经教给你了,剩下的你就需要练习练习练习。 最后,本期这种枯燥内容数据,哎,就是很差,但他又极其重要,我必须负责教给你们,不能像营销号一样啊,难得不告诉你,就给你看看轻松炫酷的,对吧?所以既然大家都看到这里了,希望能三连支持一下。本期的作业 就是提交你的第一次开源贡献,第一次 pr, 一定要练习啊!下期我们把元导的零点二版本持续升级,从实战中学习,拜拜。
一起听说过 get 是一款选人数众多的分布式版本控制系统,可是到底什么是版本控制系统呢? get 和 get up 又有什么区别和联系呢?今天我们来用一个全新的视角来了解这款必备工具,并解密这一倍复杂化的概念和生僻术语。 在我们买代码的时候呢,我们可能经常会有这样的需求,我们可能希望保存原代码的不同版本,当软件出现 bug 的时候呢,我们可以回溯到之前的状态,比较版本之间的差别,从而找出 bug 的源头。 并且呢,在多人分工协作的时候,我们也会经常修改到相同的文件,这时候呢,如果有个工具能够帮助我们完成修改的合并,也许就可以帮我们节省不少的时间,那么版本控制系统也应运而生。如果你只是经常写一些脚本或者简单程序的话呢,版本控制软件可能用的 比较少,但是项目规模一旦大起来,或者涉及到团队协作的时候呢,版本控制软件可以说是必不可少的。 get 其实也是众多版本控制系统中的一种,其他的你可能还听过的包括 c b s, subversion, macurial, perforce, bizarre 等等, 其实他们都有各自的优缺点,并且应用的领域也稍有不同。 get 可以说是应用最为广泛并且最适合于中小项目开发的工具之一。而且版本控制的许多概念呢,其实互通的, 如果你还没有接触过相关软件的话呢,我也非常推荐从 git 这一款入门。另外, git 本身其实是一款命令行工具, 可能很多人更加推崇使用命令行工具,而不是图形化工具,这个我觉得是仁者见仁智者见智,这两个呢,我自己平时也都会用到。命令行更方便于写脚本。自动化 图形化工具的操作呢,通常更直观,入门也更加轻松,但在这里最重要的还是掌握 git 以及版本控制系统的核心概念,因此作为入门呢,我这里推荐的是一款叫做 gig crack 的图形化客户端, 它支持主流的操作系统,界面很漂亮,功能也很全面,并且对个人的开发呢是完全免费的。大家可以通过下面的链接在官网上下载对应的版本安装。 第一次启动 git crack 呢,他会提示你进行登录。这里我推荐大家用自己的 git up 账号进行登录,如果还没有 git up 账号的小伙伴呢,先可以去注册一个,因为早晚呢都用到的。登录完成之后呢,他会提示你输一些个人信息, 比如你的用户名称和邮件地址,这个信息呢跟签名档很像,他附带在你每一次的代码提交上。信息创建完毕之后呢,我们就来到了 的主界面,接下来第一步呢,是创建一个代码仓库。 repository, 又叫做 rapper 仓库,这个术语呢指的是与项目相关的所有文件,包括原代码、工程文件、资源文件和一些配置信息。他可以是本地的仓库,也可以是保证在远程服务器上的仓库。仓库之间呢,可以相互同步, 比如你可以把本地计算机上的代码同步到远程的服务器上, get up 上呢,就保存了许多的远程代码仓库,他也是当今最大的代码托管网站和开源社区。这里创建代码仓库时候呢,我们直接一步到位, 点击这个按钮,创建一个托管在 github 上的代码仓库,这样待会呢,我们就不用再特别设置用于同步的远程服务器了。这里呢,我们选择之前登录的 github 账号,给仓库起个名字,并附上一个简短的介绍。最后点下面的绿色按钮,完成 双肩中间这个很大区域呢,显示了代码的所有提交历史,其中的每项呢代表一个提交 cemate。 提交这个术语呢,很像是游戏里面的检查点,或者是一个快照。在每次你对代码做出修改之后呢,你可以提交这次所有修改, 此时 gate 会保存当前的代码快招。在之后的若干次修改之后呢,我们也可以轻松的回溯到这次修改状态。可以看到呢,这里唯一的一个提交是在新建代码仓库的时候自动创建的。我们选中这提交之后呢,可以看到这个提交里面修改的所有文件。 由这里可以看到呢,有一个新文件 read me 被创建。那么接下来呢,我们创建一个新的代码文件,并完成一次新的提交。我们可以首先点文件菜单中的在文件浏览器中打开,然后找到当前代码仓库在本地 计算机上存放的位置。这里呢,我们新创建一个文件,并命名为 hello 点 c。 然后呢,我们来随便写一个简单的 hello world 程序。保存文件之后呢,我们回到 get cracking 中,可以看到呢,中间提交历史中多出来了一项 weep, 代表这提交正在施工中。这边呢,我们可以看到这里多出来了一个我们刚刚创建的元代码文件,点击它可以看到文件中被修改的具体内容。接下来呢,我们来提交这个文件。我们首先点这里的 stage get, 要求在对修改的文件提交之前必须将他们 stage, 你可以把想象成提交之前的一个必经阶段,防止你的误操作。然后呢,你可以在下面输入你对这一次代码提交的一个小总结,这个信息呢是必填的,你想想看,如果你面对的呢,是一大堆无名的历史提交像, 从中找出你需要的,如同是大海捞针。最后呢,点击下面的提交按钮,完成这一次提交。到目前为止呢,我们所有的操作都是针对于你本地计算机上代码仓库的,如果我们去浏览 get up 上的远程仓库,可以看到还是处于最原始的状态。 如果我们希望将所有的提交都同步到远程的 git up 服务器上,让所有人都能看到你修改的话呢,我们需要使用到 git 中的 push 功能,也叫做推送。在 git cracking 中呢,我们只要点工具栏上的 push 按钮即可。 这里的 origin 通常指的是默认的远程服务器。推送之后呢,如果我们再去刷新 github 上的页面,可以看到所有的代码呢,都已经成功上传上去了。如果我们点这里的 commit, 也可以看到和本地一样的所有代码提交率时,我们竟然可以把本地提交推送到远程服, 就一定可以从远程服务器上下载新的提交。接下来呢,我们来讲一下 get 中与 pro 相对应的破操作,那么点开看一下可以看到呢,他对 redmi 文件进行了一点小修改。 如果我们切换到 gi crack 中呢,也可以看到提交历史的最上面多出来的这一条。至于左边呢,有两个标签需要我们注意一下,这个写有 master 并画有电脑图标的标签代表本地仓库中的提交。 上面这个呢,则是表示 get up 上远程仓库中提交。这里的 master 是一个分支 branch, 我们待会会讲到。 那这个时候呢,如果你想把这位同学的修改同步到本地仓库的话呢,我们可以点 gic crack 中的破按钮。之后呢,这两个图标会重叠在一起,代表本地仓库和远程仓库的提交历史已经完全一样了。这时候呢,如果 我们打开本地仓库中的 read me 文件,也可以看到其中修改内容。哎,那可能有人问,比如当不同的人去修改相同文件的时候, get 会怎么做呢?接下来我们来看一下 get 中的合并操作,也是版本控制中非常重要的一环。 这里在最新的提交中呢,我们看到小螺丝同学修改了一下 hello 点 c 文件,往里面添加了一个函数 multiply。 接下来呢,我们在本地也去修改同一个文件,将主函数中输出的支付串修改一下,然后按照之前的步骤在本地提交。这一次修改。 这里呢,我们看到提交历史出现了一个分叉,上面这个呢,是我刚刚创建的本地提交。如果我们希望将这两个对 hello 点 c 的修改同时应用在你本地的仓库中呢,我们则需要将这两个提交合并起来。合并其实在 get 中有很多种方式, 是我们先讲一种最简单的,就是使用之前我们提到的破功能, get 会在获取远程提交的同时,将远程的提交合并在本地的提交中。这里呢,我们可以点上面的破按钮,可以看到在窗口的最上面, get 为我们自动生成了这个新提交。 这个提交这个事情呢,就是将之前的两个提交合并起来,这时候如果我们打开 hello 点 c, 也可以看到这两处的修改已经被 get 自动合并了。 这时候呢,可能有人问了,如果两个人同时修改代码的同一处位置, get 又会怎么做呢?我们一起来研究一下。这里小螺丝同学呢,修改了一下这里的字符串,在前面加了一个 little, 我们也去修改同一行代码,把这里的悠悠改成嘿,然后本地提交。这一次修改可以看到呢,这里的提交又开始出现了分叉,接下 下来呢,我们来合并他们,按照之前做法呢,我们可以直接点破按钮,不过这次 get 自动合并失败了,取而代之的呢是一个错误信息,告诉我们这里有冲突 conflict, 需要我们手动解决。 原因很简单, get 也不知道我们应该如何合并了,毕竟我们修改的是同一行代码。我们可以点右边冲突文件下的这个 hello, 点 c 文件,左边窗口中呢,显示了我们刚刚的修改。还记得我们之前说的 origen 通常代表远程仓库吗?下面这窗口呢,代表合并之后的结果, 是我们手动解决冲突用的。那我们看了代码,当然明白应该将这里的 you 改成 he, 并在后面加一个 lido。 修改完成之后呢,我们保存文件,回到之前的窗口,和之前一样,描述一下这次合并的内容,并完成这一次提交。那对 git 以及 tap 的基本使用呢?这期视频我们就暂时讲到这里。视频中讲到的所有功能,其实有对应的命令行指令,我列了一个表以供大家参考。当然呢, get 中其实有许多被经常用到的高级概念, 比如分支, branch, 书签, bootmark, 补丁, patch, 以及获取远程分支和合并相关的 fetch 和 ray base。 对本地仓库管理呢,也会经常用到 reset, clean, gc, cherry, pig, reflog, archive, bundle 等等。与 git up 相关的呢,也有代码审查, poor, request, 权限管理等等。
大家好,上期视频我们简单了解了关于 get 分支在项目中的作用,那么今天呢,我们来仔细研究一下一个真实的项目应该来如何设计 get 分支的开发模式啊。这是一个 max 的分支, 他已经有了五次的提交,模拟上一期的情况,我们这里创建了两个分支,一个是飞驰奥的,一个是 facebc, 他们各自都有两次自己的提交。那么当我们把 bug 改好以后,需要把 fax 分支合并到 max, 那么由于 gtt 底层的合并是要创建一个新的提交,所以就叫卖纸看名字,然后把它合并过来, 这同理呢, c 车奥的未来改好了,也是要合并到马斯塔。好,这就是昨天的情况。那这样会有一个问题,就是公司里面绝大多数的项目是有测试环境的,我们在上生产环境 之前还需要上一半测试环境,那么这时候我们应该把哪个粉值变异上到测试环境呢?飞驰奥的肯定不可能了,因为我们要测的是 fax abc 这个代码, 那么要么就是上 fax a, b、 c, 要么上马斯坦,这俩哪个都不合适,因为我们要想上马斯坦,需要把费克斯合并到马斯斯再去上,否则上去的也没有这次修改的代码录制的时候没有说完整,如果将没有测试通过的代码合并到 macs 是一件极其危险的事情, 那么上费克斯分支呢?也不合适,因为我们针对一个项目通常只有一个测试环境,也说这个测试环境不止服务于你这一个费克斯分支,可能还有其他的费克斯分支,比如这样 cx, abd 我们只上这一个分支的代码,那其他的分支没法测试了,所以呢,这时候就需要有一个 测试分支,假如我们从这创建出一个测试分支叫太子的,那么通常情况下,太子的分支只是用于接收代码合并的, 通常来说不会在太子的分支上直接来改代码。有了太子的分支之后呢,我们就可以直接把代码合并到太子的上面, 那这时候呢,我们就可以把这个 past 分支的最新代码来闭眼影上到测试环境了,测试环境通过没问题之后,我们再来把 fax 分支合并到 mast, 记住千万不要把 past 直接合并到 mast, 因为 past 里面还有其他的代码,比如说这还有一个 abd 也合并到了这个 fast 分支上面。如果我们把 pass 的分值直接合并到 mate 的话,会导致有一些不能上线的没有通过测试的代码 也被伤到了生产环境,所以一定要把具体的某一个 fax 或者某一个飞车分支来合并到骂死他。那么飞车凹的这个分支呢,也是一样的,等他开发完以后呢,他先合并到 past, 太子的测试没问题之后,我们再把这个非常有点和平到阿斯的住分值。好,那今天就到这里,谢谢大家,再见。
听说有程序员因为不会用 get 而被公司辞退,我训练营的部分学员之前自学了好几个月,还不知道 get 妈妈们这些必备的开发工具,强力进行所有转码的人要把 get 基本操作都给弄清楚。 今天向大家推荐一个一看就会的 get 学习神器 get up 上获赞高达二点五万的开元项目,任 get brenching 是非常棒的 get 学习工具,实现 get 学习可视化,以游戏的方式让你熟悉 get 的不同命令。腾讯化界面项目生动展示了每一条 get 命令背后的细节, 帮助边玩边理解这个基本操作。在训练中呢,除了开发工具的学习,我还会带学员夯实计算机基础,掌握通用的技术站,做几个有深度的项目,具备独立开发者的能力。感兴趣可以详细沟通关注我是大厂成全华仔,我们只讲实实在在的技术干货。