粉丝8.6万获赞79.4万

假设有个需求即将上线,所有的代码都已经提交到 master 分支,突然项目经理说有一个需求不用上了,但是在你这个代码之后,已经有其他人也合并了他们的分支,这个时候你会怎么去回推代码? 是手动删除代码还是 research 回退后重新合并分支?在这里最合适的方法是使用 get revert。 在 idea 的 get log 记录中有这样一个选项叫做 revert commit。 revert 的作用是撤交某一次提交或者某几次的提交,然后用一个新的提交来覆盖掉之前的提交。 模拟上面的这个场景,比如我现在对某个类做了第一次变更,然后进行了一次代码的提交,并推送到远程分支,接着又进行了第二次代码提交,同样推送最新的代码到远程的分支。这个时候其他人合并了一个新的 比较进来, 现在分支上一共有三次提交, 这个时候突然被告知第二次提交的这块代码不用上线了,于是需要将这次提交回退,只需要在 get 的 log 记录中找到想要撤销的那次提交,选择 reverse commit, 相当于这一次的提交就被撤销了。 get reverse 的好处在于,即使代码已经回退了,但是所有操作记录都还在。 reverse 的实现是通过逆向生成的方式进行代码的回退,比如增加代码就变成了删除代码。 这个时候项目经理又说,刚刚的代码还是一起上线吧。如果用手动删除代码的方式,现在就傻眼了。用 revert 的话,只需要对 revert 的这次提交再进行一次 revert 即可。可以看到代码又回来了,如果是多次提交同时 回退,只需要选中多个,然后执行 revert commit 就可以了。下期视频再来讲讲很多人用的更多的 reset。 以上就是本期视频的全部内容了,我是于宅,我们下期再见。

哈喽,大家好,我是鱼仔,这是来自网上的一张 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 顶中 找到配置。一方面可以自定义生成的模板内容,按需修改模板的内容,并且也可以根据实际需要增加或减少提交类型,形成自己项目组或者公司的规范,还是一个比较不错的插件。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

兄弟们,本节将学习如何查看 get 的提交历史记录。在程序开发过程中,了解项目的演变历史非常重要,因为它可以帮助您更好的理解代码库并跟踪文件的变化。 get 为我们提供了 get log 工具,用于查看 get 代码库中的提交历史记录。 首先,我们先打开终端,进入项目目录,然后输入 get log 命令。按回车键后,您将看到一个包含所有提交信息的长列表。在默认情况下,他会按时间顺序列出了所有提交,并提供有关每个提交的详细信息。输出格式包括,提交哈西值、作者、提交日期、提交信息。 哈西值是一种唯一且固定长度的字符串,由哈西函数根据输入数据计算而来。他通常用于检测数据完整性和安全性。因为哈西函数是一种单向函数,他将输入数据转换为一个固定长度的哈西值,并且该过程不可逆, 还可以用于数据锁引或加密等领域。 get log 还提供很多选项参数,帮助我们更好的查看信息。例如 pretty, 它用于指定在输出中显示提交信息的格式,允许用户自定义输出的样式。 pretty 等于 one line, 可以把提交标记和信息显示在一行内。我们还可以用多种方式来控制输出结果,比如只显示某个作者的提交。 还有一些常用的命令,比如显示最近的两个提交记录,显示从五分钟前的所有提交记录,显示五分钟内的所有提交记录,以及显示当前分支上所有的提交历史。还有非常多的选项, 我们可以使用 get lock help 命令去查看帮助文档。随着提交越来越多,我们可以使用此条命令来显示提交信息,他可以整洁的显示我们所需要的信息。具体的含义我已经列出来了,大家自行暂停或者截图查看。 get 还集成了一个让我们查看日志的图形化界面。 get, 我们在仓库目录输入 get 就会弹出这个工具。


那突然呢,收到一个小伙伴的求救啊,就说自己的 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, 这里只讲干的,我们下期再见。

哈喽,大家好,每天分享一个经典面试,今天分享一下 get 中操作, get report 和 get reset 这些的区别 啊,我们举个例子啊,比如说我们现在有三个小伙伴分别提交了三个呃操作啊,这样的话就是当我想撤销第二个这操作的时候, 那我们如果是使用 get reverb 操作的话,就相当于我们会把第二个提交呃撤回,然后再创建一个新的提交 啊,再将啊原先修改的东西进行还原,这样我们的版本的履历里面,比如说我是有原先有三次提交履历,再加一次我撤销的一个提交履历,如果 我们使用 get reset 操作的话,那这样的话就是我们第二次撤销之后,相当于只会保留第一次提交的这个履历啊,他同时会修改我们的这个提交的一个履历。 所以说以上就是这两者的一个区别,我们综综上所述,我们 get re rever revert, 它会修改提交履历,它只会保留 re rever reset 对应的这个版本号,之前的保留,后面的话都会 删除掉。然后我们 get revert 呢,它只是删除对应的这个版本号,然后再创建一个新的提交,然后进行啊,让我们看到的履历的话,会多了一个提交履历。好的,今天的分享就到这里。


我们怎么样把代码推到两个仓库呢?今天给大家分享一下。这个是国内的马云,这个呢是 github, 那么这个,那么这个项目呢,是咱们每天晚上直播的代码,这个呢也是 我现在每次推的时候会同时推到这两个仓库当中,这个是怎么做的呢?我给大家分享一下。最简单的方式,你先可以在 gehapple 当中新建项目,新建完项目之后呢,回到马云当中,然后呢在这块点新建仓库, 然后点击这个按钮,从其他网站导入仓库,我们点击导入,然后这块的话呢,从一哈不来进行导入,在这里边啊, 就会列出你 gay hop 的所有的项目,然后你点击导入就行了,这样就可以保证你这两个仓库代码是完全一致的。然后呢回到命令行当中,是吧,你就可以来克隆你的项目,克隆 或者是马云的都可以,克隆之后的话呢,在这里边会有个隐藏的文件夹。好,那么我们进入到这个文件夹当中啊,修改这个配置文件, 然后呢我们把仓库这一段给他复制一份,复制一份之后,比如说你克隆的是马云的啊,克隆的是 github 的,那你再复制一份,把这个马云的地址填上, 这个地址呢就去这块来进行查看,找到 sss, 那我建议啊,使用 sss, 不要用 stps。 好,这是命令行的操作。那我们再看一下软件,软件,我拿骚去来为例啊,骚去,那你打开骚去之后啊,那么在菜单栏当中的仓库,仓库设置点开,点开之后呢,在远程仓库这一块,你就可以点 添加来添加,这个残酷。那么我们推的时候啊,在命令行里边,比如说我们推的时候,我呢定的一个别名,那我们回到 jshiler 当中,好,在这里边呢,我定这个别名。 好,我听这个别名叫 gp, 他同时会推到默认仓库,还会推到马云仓库,所以呢,我提交代码说挑上 gp 就行了,所以现在比如说我要提交代码,我就可以先添加,然后添加注册,是吧?完成注册。 好,然后我调一下 gp, 就看到他会推到 gdp 号吧,同时的话呢,再往下走,在这块的话呢,又给咱们推到了马云。好,分享结束,大家点个赞,再见。