粉丝152获赞1289

哈喽,这里来演示下在 ida 中对于 get 的各种常用操作,比如说像拉取代码、提交代码、切换分支,合并分支,然后充足解决等等之类的。 我们首先在我们的一个 ida 的右下方,这里有个分支,我们可以在这里去创建一个新分支,然后我们比如说创建一个测试分支啊,测试,然后创建一下,在这里他会到我们的一个测试分支上,然后我们在测试分支上写点代码, 比如说我们将这里改为一二三,那我们去提交一下,这样的话我们就能针对于要提交的一个文件去写下我们一个提交信息, 然后在右下方有一个 comet, 那我们可以点击一下 comet and push, 我们就可以提交到我们一个远程仓库,在这里我们再去剖析一下这里铺下了 不小的时候,我们可以点一下这里,然后我们可以切换到我们的一个 master 分支上面去点击切割二的就可以切换分支了, 这里可以看到我们到马斯的分子了,然后我们在这里去点击一下,我们去合并代码,到我们马斯的分子这里有个墨迹,我们点击一下就合并到我们的马斯的, 然后这里可以看到刚才写的一个一二三已经过来了,嗯。在我们的一个 get 中,然后我们可以针对于代码的这里,然后我们去右击一下,有一个我们这个按钮,我们可以看一下就是是谁提交的,去交流交流。我们下面的演示下从头解决吧。这里有个拉取代码,点一下 ok, 就可以拉取我们的一个代码, 这时候可以看到我们的一个冲突就来了,嗯,这时候我们可以在这里左边是我们本地的,然后右边是我们远程的,然后中间是我们要合并的 一个结果,我们可以点击一下这个符号,我们可以选择不要这个代码,或者说将这个代码合并到这里。如果说我们不想要的话,我们也可以去手动修改一下,比如说我把它修改为八八八, 我们这里就解决好了。解决好了之后,然后我们在这里有个就申请解决,申请我们的一个解决,那在这里我们就已经就是解决好了。 在这里有个 get, 然后点击下可以看到我们历史的一个提交日志信息。嗯,对于 get 回归代码以及像他的一个 get 的一个工作流的话,嗯,在之前的一个视频中已经分享过了,这里就不多说了。最后在 i 调中你们还有其他的一个常用操作吗?可以评论分享一下,谢谢。

哈喽,今天我们讲一下在 a 店里面怎么操作。 get, 我们先用 a 店来拉一个新的一个仓库,这边还是用之前我们创业这个项目,我们先复制一下这个项目的地址,然后到 a 店这边,我们关掉这个当前这个项目, 然后在这边的话我们选择这个点一下,然后这边复制我们刚刚那个链接,这边选择是 get, 我们点这个克隆就可以了。这边的话你如果说不想保存这个位置的话,你就自己选一下,你要保存一个位置就可以了。 好,看好之后我们就直接打开这个项目,大家可以看到就是这时候的话在这边打开,比如说我们现在的话要创建一个新项目,这边的话本地要开发了,现在的话创建个 text 三吧。好,这样一个加入项目,比如说好,这边的话说要不要加入 我们 get, 我们这边小先不加,大家可以看到现在的话这个是红色的,这时候如果说我们想加到赞同区的话,我们就选这边的话,右击,你要选中,你要自嗯添加哪个文件,你就在哪个点右击,然后选择 get, 然后这边的话添加我们暂停区就可以了。 add, 这个的话相当于是我们在命里面输入 get, add 是一样的。 好,这时候的话添加这种区,他就变成这个蓝色了,绿色的大家可以看到。好,这时候如果说我们想提交这个文件的话,怎么提交呢? 这边的话大家可以看到有三个这样的一个符号,首先这个是更新,相当于是就是破,执行我们这个 get 破这个命令,破这个命令,然后这个的话是什么?就是 commetercommeter 的话, 就是,就是提交吗?就是刚才我们添加暂送器,然后再提交的话就提交本地仓库,然后还有一个就是推送了,就是迫使就推到远程仓库,这时候我们可以直接用这三个命令,也可以,就非常方便。好比如说我现在的话已经添加暂送器了, 我想把它提交到我们这个里面的话,我们就点一下他,这是我的卡密特。好,这时候的话如果文件很多的话,你可以自己在那选,要提交哪些哪些不提交,你都可以在这边选好。比如说,嗯,添加一个 test, 开始三。好,然后我们点卡密特提交就可以了。好,这边点一下提交。好,这时候的话已经提交,提交之后他就没有文件了,然后他这边的话给我们提示他说有这样几个文件好, 不用管他,因为这几个文件的话,他是 id 二的文件,这时候的话可能我们每次提交的时候他会就是有影响,我们可以直接在这边看啊,他是红色的,表示我们没有提交 好,这时候如果说我们肯定不可能把这样的文件提高上去嘛,所以说我们要把它隐藏,隐藏的话就是忽略,相当于是忽略的话,我们在 id 里面选择这个 get, 然后这边的话有一个叫一克浪,就是我们忽略这个文件夹就可以了。好,我们点添加到忽略文件,毕竟的话创建一个忽略文件,现在没有那个一克浪那个文件,我们选择他,然后点一下。好,这时候的话他说需要创建这样一个文件吗?我们说创建就可以了, 我们点添加,把这个文件添加到暂停,如果说你不想添加的话,那你就直接在这边还是一样的,然后 get edd, 然后添加好,这时候 这些文件的话就不是红色未提交了,而你下一提交的话就没有这些文件了,我们再来看 啊,这是哪曲?我们再来点提交,大家可以看到现在的话只有一个这个老文件啊,天, 添加忽略文件。好,然后点提交,这边可以提交和这个 pos 一起啊,我们点提交就可以了。好,这现在没有提交文件了,然后我们再就回到这边来, 如果说我们想把它推到我们刚刚这个添加这个文件提要到我们这个远程仓库,现在是没有的,想提要的远程仓库,我们就点这个 pose 就可以了, 然后这边他说你是需要提交这些东西吗?我们点这个 pose, 我们也可以点这个在这边,哎,直接点提交了啊, 我们就点提交吧。好,这时候的话他已经把我们这个他说提交的这个 master 分支了,我们再刷新看一下有没有提交上去, 大家可以看到这时候这个文件就提交上去了。 you id 二的话也是比较方便的啊,我们再来看一下在 id 二里面怎么解决我们这个冲突,我们都知道我们用这个这个箭头的话,就表示他是更新,现在是 get 破,我们点一下它, 这时候应该是没有冲突了,文件已经是最新的,跟线上是保持一样的。好,这是我们小八,嗯,比如说我们现在的话,线上线上的还是张三啊,比如说我们 好,现在张三的话,比如说现在改都行,比如说把这个一改成了二二,好,这时候他提交了, 然后这个李四这边也把这个 hello, 这边的话,李四,比如说李四他不知道,他把这个东西也改成二二二,他以为张三没有改 好,这时候两个人,比如说他或或者是他改成了九九,好,这样的一个十九,然后这时候的话就会产生这个冲突。好,我们点这个提交好他,他就会让我们把这个文件提交一下,比如说修改了 哈喽,我的吧,哈喽,然后我们点提交好,这种提交之后我们再更新一下啊,比如说我们想把这个远程再同步一下,看有没有提交,没有提交的话我要提交,然后再更新一下, 好,这时候更新代码时候他会就会说这边有冲突了,好,我们点一下他, 好,我们点一下他之后的话,这个窗口大家可以看啊,这个窗口的话可以放大啊,这时候大家可以拉一下,如果说这样的话,你不要直接随便点啊,因为你看不清里面东西,这时候你要放大一点,放大以后你就可以看到里面东西了。 这边有,这,首先这个是你自己的当前版本,就是你自己改了,然后这边就是最终的一个结果,然后这边的话就是远端那个仓库,比如说你想要自己的东西的话,你就把自己东西往这边放,这是原来的, 就是最终一个结果,他们就放这,他就把原来覆盖掉了。比如说你还想要这个张三内容,你就 继续往这边放,如果你不想要他,你就把这个删掉,然后点应用,这时候的话这个冲突就解决了。好,解决完之后,比如说你现在改成九九九了,我们解决之后的话,然后再点这个 pos, 然后把这个东西就可以提交上去了。 好,这时候的话我们再来看一下,这里面内容的话应该改成九九九了吧?大家可以看到这时候冲突就已经解决了。

哈喽,大家好,我是随风,欢迎大家上个美颜视频啊,那么今天这个视频呢,我们将一起来介绍一下如何在 ida 当中进行 get 代码的一个合并啊,以及碰到冲突的时候,我们怎么样去解决啊?怎么样去合并代码,对吧?那么这个呢,也是我之前的 ida 视频当中问的最多,或者说私信问的最多的这样的一个问题,对吧?今天就一起来给大家解答演示一下。 首先我们这个地方有一个非常简单的加法项目啊,然后接下来呢,我们来到 kte, 也就是远程仓库,在这里呢,我们就是想模仿一下,就是别人提交了代码,然后我们有冲突,怎么样去解决啊?我们点一下这个编辑, ok, 然后打开可能有点慢啊,然后我们就非常简单吧,就比如说在这个地方,我给他多来几行代码,把这个空行给他去掉,代码搞整齐一点,对吧?然后接下来呢,我们就写一下,比如说 fix 啊, at some line, 然后点击一个提交,提交完毕了以后呢,我们这个地方代码就产生了改变,然后接下来呢,我们再在本地啊,也对这个相同的区域啊代码搞一些提交, ok, 然后我们在这个的后面加上一个 logo, ok, 那么接下来呢,我们相当于本地开发完了代码,对吧?然后我们来做一个提交,首先我点击这个 commit, 然后选择我要提交的一个文件,然后写好注释,点击这个 commit and push 啊,它是一个快捷操作,就是你的 commit 和 push 可以一次搞定,对吧?然后我们点击这个 push, 那当我们去提交代码的时候呢, ida 给了我们这样的一个提示啊,就是你的 push rejected, 你的提交倍 拒绝了,什么意思呢?就是我们现在本地的一个代码和远端的一个代码可能产生冲突了,别人改了,你也改了,然后有一些内容是重合的,那么这个时候呢,你就需要去选择怎么样来处理这样一部分重叠的代码,对吧?你可以选择 cancel 啊,比如说你回到本地,你看一下你的哪些部分和别人是有冲突的,你看了一下线上的这个 代码,然后你本地做完修改再提交,这个是可以的。另外一种方式呢,就是比较快捷,就是 merge 和这个 rebase。 其实 merge 和 rebase 呢,都是去合并代码的一个操作啊,但是他们两个基于这个代码分支上面的一个操作呢,是有一点不一样的啊, rebase 可以理解成是叫变机啊。 如果说大家想更清楚的了解 merge 和 rebice 的一个区别的话呢,可以去看我之前的一个视频,讲的非常的清楚, ok, 那么这个时候呢,我们就选择 merge 啊,中间的这个也就是 idea 默认选中的这个,对吧?我们点击这个 merge, 点击完了 merge 以后呢,它 这个地方还是会有一个快捷的操作啊,就是 accept yours 还是 accept theirs 啊?就是我不用去看具体的内容了,如果说我这一部分代码就是扣 refill 的时候已经通过了啊,我就想用我的代码去覆盖远程的一个提交,我就 accept yours 啊, yours 就是你的嘛,啊,就是我自己的嘛,然后 accept theirs, 就是远端的那个人写的代码比我好,或者说大家公认的就要这么去写,那我就 accept theirs, 我就不需要看了,我直接用他的代码就可以了,对不对?如果说你们两个 啊,一个人改的是 a 方法,另外一个人改的是 b 方法,但是代码写着写着写着他的这个行数会串号,所以说这样也会产生一些代码的冲突的情况,对不对?所以说这个时候呢,我们就要去选择这个 merge, 通常我们还是选择 merge 啊,因为 merge 点开了以后呢,他会有这样的一个操作和确认的面板,给我们做第二次的一个确认。首先对于这个操作面板呢,我想讲一个非常 常有用的设置啊,就是这个地方啊,你可以看到,当我取消了以后呢,他这个地方展现的是所有的这个代码的内容,当你点选了他以后呢,他会只显示啊,你们两个冲突的那个部分的内容,对吧?就是他会把一些无关紧要的给你折叠起来, 然后左边的话呢,左边这个窗口是 your version, 就是你当前本地的一个提交,然后右边这个区域呢是 change from server, 就是远端的那个内容大概长什么样子? 中间的这个很好理解,就是左右两边左右互搏了以后啊,最终形成的一个结果就展示在中间,然后左边和右边呢,都会有这样的两个快捷操作,一个是叉叉,一个是 双箭头,对吧?叉叉的意思就是我不需要你这样的一个提交,我不需要你这样的一个内容啊,然后箭头的话呢,就是把你的这部分内容挪过来,哎,我们发现当我们把左边这个箭头点完了以后呢,左边就没有任 的这个快捷操作了,对不对?然后右边呢?还是剩下这两个快捷操作?如果说我们既想保留左边,又想保留右边,那么继续点这个叉叉,哎,右边的这个操作也会过来,对不对? 然后左右两边的这个操作都过来了以后呢啊,我们这个地方就可以点击这个 apply 了,对吧?然后大家会发现在左侧的这个底部啊,还是会有这个 accept left, 还有这个 accept right 这样的一个快捷操作啊,什么意思呢?就是当你发现很多的这个代码都会有那种变动,然后都是一些啊,完全可以接受的,或者说就想用某一个 这个版本的啊,比如说我就想用左边,那么你就可以看快捷的点这个 set left 啊,就可以了,对吧?然后呢,在你合并完了代码以后,如果说你对某一个部分有任何的一个想法啊,你都可以在这个地方去给他做修改这个 result, 这个地方他是可以去修改的啊,然后这些地方是改不了的啊,就是比如说你在左边, 在右边,他都是无法进行修改的,他们是一个指读的状态,但是在中间你是可以去修改的,对吧?然后任何时候,如果说你想要去进行撤销啊, ctrl z 都是可以用的, ok, ctrl z 都是可以用的,对不对?然后最后我们选择合并左边的一个代码, 右边我们就不需要了。点完这个叉叉,然后呢,我们点击一下这个 apply, 哎,你会发现当前我们就已经合并完毕了,对吧?然后我们再点击一下这个 push, 哎,他这个地方就会来一个 merge 啊, remote tracking branch 什么什么什么之类的,然后把我们本地的一个提交也放上去了,然后我们就点击一个 push, 哎, pose 完毕了以后呢,我们再来到这个 gate e, 然后刷新一下这个代码,我们会发现刚才我们本地的一些提交和变化都已经同步到了远端。 ok, 那么这个呢,就是一个非常简单的 idea 当中 gate 呃,产生 冲突,然后怎么样去和平代码的一个快捷操作了,对吧?好的,那么以上呢,就是本期视频的一个全部内容,如果大家觉得这个视频还不错的话呢,请帮忙点赞,投币分享,一键三连,支持我一下,如果你还没有关注我的这个频道,也请你点下关注啊,我这个频道是专注于程序员干货,视频教程分享,关于程序员身心健康的这样一个频道。 ok, 我们下个视频再见吧! peace。


一招教你不用翻墙,也可以快速下载 guitar 上的代码!其实国内早就有针对 guitar 的镜像克隆网站,网址如下,亲测,这个访问速度较快,这个网址不用登录 guitar 账号,也不用担心账号被盗,直接跟访问 guitar 一样,访问这些镜像网站。如果是选择 download, 可以直接下载。如果是选择 p 图软件下载,那就 需要把克隆地址 dtar 点 com 替换为如下地址即可。下载完成后,如果还想要通过 deat 对代码进行 push, 则需要先修改仓库的 push, 然后再进行 get push。 赶紧点赞收藏吧!

有段时间,公司需要统计每个人的 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 问题会难住你了。感谢你的观看,我们下次再见。

大家对 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 能有效降低这种风险,让分支切换更加安全可靠。 写代码是软件开发的核心工作,但在实际的项目中,能否与他人长期高效的合作编写代码同样重要。遵循合理的并使用规范,不仅能提升个人的开发效率,还能为团队的写作砥定良好的基础。

你们公司还有在使用 svn 吗?你是一个资深程序员,你们日常开发工作几乎离不开点,无论是个人项目的小打小闹,还是团队中的大兴写作,也都是你们最信赖的伙伴。 但大约几年前,你们都还是 svn 的 信托。那时候你们项目组所有项目都在使用 svn 作为项目版本控制系统,后来有人给你们推荐给,但被你义正言辞地拒绝了。原因很简单,也多出了本地仓库的概念。 对于最基本的代码提交操作, svn 只需要一个 command 就 能将代码提交到远程服务器上, 猿却需要仙客们到本地仓库,咋不是到远程仓库?这不符合你们对极致简单美学的追求。直到有一次,你们 s c n 服务器出现了问题, 而此时你们刚好有一个紧急的 bug 需要赶紧修复。按照以往流程,你们需要基于线上分支创建一个新的分支,然后在新分支中完成修复工作并发布版本。 但 fbi 服务器的故障导致你们无法完成拉取新分支的操作。当然,你们当时正在开发的分支其实也是基于线上分支拉取出来的, 所以也可以直接在当前的开发分支上进行修改。但很可惜,你们已经在这个分支上迭代了两三天的新功能代码了。 就算你们愿意舍弃你们新开发的代码,回滚到一开始的状态,然后去修复 bug, 但由于 svm 服务器的故障,你们也无法完成代码的回滚, 这属实令人崩溃。而随之崩溃的还有你们对极致简单美学的追求。从那以后,你们决定放弃 svm, 转而拥抱电,因为电池分布式架构 前面这种问题非常容易解决。所谓分布式架构还得从本地仓库说起。当我们从远程越服务器克隆一个项目下来时,本地也会创建一个仓库,其中包含所有的历史版本信息, 这个仓库就是本地仓库。而我们日常的创建新分支、提交代码、回本代码,这些操作都是针对本地仓库中的分支而言的, 直到我们执行 pos 操作时,才会将本地仓库中的代码推送到远程服务器中。所以就算远程服务器出现了问题,我们也可以直接从本地仓库中基于线上分支创建一个新的分支出来。 等修复 bug 后,如果远程电服务器还未恢复,可以简单点直接在本地打包进行发布。 也可以部署一台新的临时服务器,然后将代码部署到新服务器上,然后通过自动化流程部署。而我们回头来看, s b n 这种集中式架构,只有 s b n 服务器上才有项目的完整历史版本, 而开发人员本地只有项目的当前版本。当我们对代码进行修改,然后想要提交新代码时,会将本地代码提交到远程服务器,然后服务器上完成代码的合并操作。 所以一旦服务器出现异常,向代码提交代码回滚拉取分支,这些操作就都会卡壳,所以还是更好呀。所以大家现在是在使用什么作为版本管理工具呢?评论区聊一聊。

各位学前端的同学,工作中接触别人的项目,不理解代码为什么这么写,想看看原始需求,那你就需要了解一下 eshop 引用格式,其实很简单,就是在你的 config message 里加上一个井号和 eshop, 就 可以将你的这个 config 在 pr 的 时候与对应的 eshop 关联上。无论是通过 issue 找 commit 还是通过 commit 找 issue, 都会非常方便。因为这个功能并不是 git 本身提供的,而是平台提供的,所以如果想看具体的规则,可以在平台的官方文档上查看。

嘿,各位开发者朋友们大家好,你有没有想过,要是能有个完美的编程搭档该多好,一个能秒懂你的想法,而且还不是疲倦的伙伴。嘿,今天咱们就来聊聊这个梦想,现在可能真的实现了, 他就是一个能直接住进你终端里的 ai 结队程序员,而且我跟你说,他很可能会彻底改变你的工作方式。 好,咱们直接来点实际的。相信每个写代码的朋友都懂这种痛,刚接手一个新项目,面对成千上万行陌生的代码,感觉就像在大海里捞针一样对吧? 那如果我告诉你,这个让人头疼的过程能从好几天一下子缩短到几分钟,你会不会觉得有点不可思议?哎,别急,解决方案这就来了,这就是 cloud code 要登场的地方, 你可别把它想成又一个普通的聊天机器人,它完全不是,它是一个专门为咱们开发者设计的,能深度集成在你命令行列里的 ai 伙伴, 它能真正理解你的项目,和你并肩作战。那么在接下来的几分钟里,咱们就一起来好好探索一下这个强大的工具。我们会从它超快的设置开始,然后看看怎么让它帮我们去理解任何一个复杂的代码库。 接着呢,看他怎么帮我们写代码改 bug。 最后我还会给你展示几个真正能改变游戏规则的超能力。准备好了吗?咱们开始吧。 首先啊,咱们得搞清楚一件事儿, cloud code 可远远不只是一个问答工具,他的设计理念就是让你感觉不到他的存在,无缝地融入到你的开发流程里,他就是一个真正懂代码、懂项目,随时待命的结对程序员。 那么上手这东西到底有多快呢?说实话啊,一个工具再厉害,要是设置起来特别复杂,也挺劝退的。好在啊, clod clod 安装过程简单到不行,可能你一杯咖啡还没冲好呢,就已经一切就绪,准备开始敲代码了。 整个过程真的就三步,你就在终端里运行一行安装命令,用 q 或者不入都行,然后登录一下你的账户,这两步一搞定,你就可以在任何一个项目目录里直接启动它开干了。没错,就是这么快! 说到登录嘛,也挺灵活的,你有两种选择,我个人最推荐的是用 cloud ai 的 订阅计划账户,当然,如果你有能访问 api 的 cloud console 账户,也完全没问题。而且最方便的是,只要登录一次,它就记住你了,后面就不用再管了,非常省心。 好了,准备工作搞定,咱们来看看它的第一个大招,理解代码。说真的,这绝对是咱们程序员最耗时的工作之一。但有了 clone code, 它就像一个经验丰富的老前辈,能带着你光速熟悉任何一个新项目。 你可以想象一下这个场景,你刚 clone 下来一个新项目,进到根目录启动 clone, 然后就敲下这么一句简单的话, 这感觉就好像你拍了拍旁边一位资深同事的肩膀,跟着说,哎,哥们儿,能给我讲讲这项目是干嘛的吗? 然后 cloud 给你的回答绝对会让你惊艳,他会非常全面地告诉你这个项目是干嘛的,用了哪些技术站,代码结构是怎样的,甚至连团度的编码规范和常用模式都能给你总结出来, 这简直就像是瞬间获得了一位资深架构师的全军视角,让你立刻就能抓住项目的核心脉络。 当然,光有宏观理解还不够,当你想深入细节的时候,他也一样给力。你可以问一些特别具体、特别复杂的问题, 比方说追踪一个完整的用户登录流程,从前端点击按钮一直到数据写出数据库,整个过程它都能给你理得清清楚楚。最关键也是最牛的一点来了,你完全不需要手动去复制粘贴代码,也不用告诉他该看哪个文件。 cloud 就 像一个真正的同事一样,他会根据你的问题自己去整个项目里查找和分析相关的代码, 就这一个功能,就不知道能为你省下多少来回切换和搜索的时间。好了,光说不练假把式,理解代码只是第一步, 一个真正的编程搭档,那必须得能动手干活才行。所以接下来咱们就看看 cloudy code 是 怎么帮我们写代码修 bug 还有做代码重构的。它最强大的地方就在于,你可以像和真人同事交流一样去描述问题。 比如你可以直接把一长串错误信息扔给他,或者就用大白话描述一个 bug 的 现象,然后你甚至可以就跟他说两个字儿,修复他,然后他就会开始分析并且给你提供解决方案。 对于代码现代化这种事儿,他也是一把好手。比方说你可以让他帮你把一个还在用老式回调函数的模块儿,整个儿重建成现在流行的 a sync await 语法。你想想,这种活儿自己干不仅繁琐,还特别容易出错。现在能轻松交给他是不是很爽? 当然了,他的能力还远不止这些,咱们平时那些都知道很重要,但又觉得很耗时,总想拖一拖的任务。 比如给代码补源点,测试生成规范的文档注式,甚至是你改完代码之后,帮你写一份清晰的 pro request 的 描述,它都能帮你轻松搞定。 怎么样,是不是觉得前面的功能已经很酷了?如果你是这么想的,那请坐稳了,因为接下来的内容将会把你从一个高校的开发者直接变成一个拥有超能力的开发者。咱们来看看它的一些高级玩法。 首先是这个计划模式。我得说啊,这是一个非常聪明而且安全的功能。在这种模式下, cloud 不 会直接去修改你的任何文件,而是会先对你的需求进行一个全面的分析,然后给你一份详细的行动计划。 那什么时候用它最合适呢?比方说,你要实现一个比较复杂的功能,或者想安全的去探索一个你完全不熟悉的模块式, 他会先给你一份详细的行动路线图,然后你还可以跟他来回讨论调整这个计划,等到你觉得万无一失了,再让他动手去执行。 咱们平时工作是不是总有一些重复性的任务?每次都得输入一长串指令,听烦的吧?别担心, closeco 提供了一个特别优雅的解决方案,自定义斜杠命令。 而且创建一个自定义命令简单到不行,你只需要在项目的一个特定文件夹里新建一个 markdown 文件,文件名儿就是你的命令名儿,然后文件内容就是你想让他执行的那些复杂指令。更棒的是,这个命令还可以被整个团队共享使用。 就像这样一个原本肯非常复杂的指令,现在你只需要输入一个简单的斜杠命令,比如杠 optimize 就 能立刻触发。你想想这能给你的日常工作流带来多大的效率提升和一致性。 当然了,它的超能力还不止这些,你还可以开启一个叫扩展思考的模式,给它更多的时间和计算资源去帮你解决那些真正棘手的难题。 你也可以把它和 git work trees 这种高级工具结合在不同的分支上,同时运行独立的绘画。甚至你还能像用其他命令行情工具一样,在你的脚本里通过管道来调用它。 这个工具的潜力啊,真的比我们想象的要深得多。好了,今天我们一起看到了 colocod 是 如何成为一个强大到不像话的 ai 编程伙伴的,它真的不只是一个工具,更像是一种全新的工作方式。那么现在问题来了, 当你的 ai 伙伴已经准备就绪,随时待命的时候,你准备好和它一起去构建怎样精彩的未来了呢?