甚么是Git?我曾给我男朋友传授过
在周日辨认出了Linus去Google演说的两个音频,彼时Farlay了两条贴文:

有兴趣的老师也能去看一看,不要紧也不无趣,唐嫣Linus元老怼人
https://www.bilibili.com/video/BV1xb411A7ac?from=search&seid=4239535088233137638
贴文的文章有两个人问我男朋友呢


我又正好给我男朋友科学普及过甚么是Git,因此这首诗就有了。
Git如是说
Git是干啥用的?它是两个版多媒体播放。
Git那个玩意儿三歪曾送给男朋友给科学普及过(三歪会时常给男朋友说点控制技术的小东西,我也不晓得她究竟听得懂了没,再说她每天都说好似有点懂了)。
彼时情形是这种的,某一天她跟三歪说:我做的Excel还没留存,笔记本电脑当机当机了,小东西全丢了。
只好三歪说:这…我也没是不是所用Excel此类的应用软件,要不看一看你用的WPS或者Office?有没相关的备份功能或者说是自动留存?
三歪顺手找了一下WPS是有备份(自动留存)功能的,时间甚么的要自己定义一下。

三歪还补了一句:这种情形要是在程序员的手上感觉发生的概率会低一点,程序员习惯会按ctrl+s。甚至有的时候,看着看着网页还会按ctrl+s。不过像我们写代码的工具(IDEA)都不用自己手动留存了….

过了一会,她说当机之前做的小东西找不回来了,没设置自动留存。
三歪又感叹一句:我们写代码还有版本控制的应用软件,在那个过程中会记录每天修改的内容,谁改了甚么小东西。谁改错了,谁要背锅,两个都不能跑!
男朋友听着三歪一顿乱吹,貌似也有点儿感兴趣:“版控制是甚么小东西?这么厉害的吗?会计就时常要背锅”
三歪:“其实也没啥,就是我们一般写代码往往都是多人协作的。你们会计可能是每个人负责一张表(Excel),然后把已完成好的表传给下两个人。而写代码的不一样,我们都是在同两个项目里边编写的,不会单独等着某个人做完了,其他的人再开始动手”
男朋友:“嗯?然后呢”
三歪:“你能理解成,我们多个人会在同两个目录下编写代码,里边可能会做更改或者添加文件的操作。项目组里的所有人都能对那个目录修改,改完了我们会提交,然后发布上线系统。”
男朋友:“啥?你是不是偏题了?这跟发布上线系统有啥关系?”
三歪:“哦,我还是举个例子吧。就比如我们写论文的时候可能要对论文不断修改,我们的修改是基于原有的基础上改的”

三歪继续补充:”因为我们怕在原来的基础改错了小东西,没法恢复,因此,我们可能会有多个「毕业论文」的文件。而我们写代码的时候本身就是「多人协作」的,修改是无法避免的,我们不希望有多个文件的产生,又希望能够记录每天更改的内容。“
三歪:”更改的内容指的就是:基于原有的基础上更改了甚么,以及提交者是谁。这种子,我们就没法甩锅了。说白了就是,我们能晓得的文件被改了甚么,以及谁改了“。

三歪:“到这里,有问题吗?”
男朋友:“嗯,没问题,你继续”
三歪:“「每一次的修改」我们称为两个版,它能够实现版与版之间的来回穿梭。打个比方,我有首诗写了一周,这期间有10个版,我能随意回到我想要的版。因此它叫做版多媒体播放”
男朋友:“我大致听得懂了,大概就是每一次修改都会被记录下来,然后你们就能晓得每一次版修改了甚么,是谁改的,如果做错了,能通过那个应用软件回到想要的版”

三歪:“嗯,就是那个意思”
男朋友:“那我想问个问题,你一直提到的「多人协作」是在同两个目录下对文件修改的,然后能看到彼此改了甚么。那你是在你的笔记本电脑上改,你的同事是在他的笔记本电脑上改的,你们是是不是看到彼此改了甚么?这现在有这么厉害的小东西了吗?“
三歪:”哦~你的意思大概就是:我们又不联网,是不是晓得对方改了甚么,是那个意思吧?“
男朋友:“嗯,是的”
三歪:“你的理解是没错的,我们之间不联网,是没办法晓得对方改了甚么的。我漏了一点没说,我们在改到一定程度下(比如说那个功能我们做完了、也可能做得差不多了),我们会把当前版提交到远程仓库上”
三歪继续补充:“能辨认出的是,提交到远程仓库后,即便我们笔记本电脑坏了,我们能从远程仓库再把这份数据拉取下来。”
男朋友:“因此呢?远程仓库到我这听起来就是两个备份的功能吧?你们是不是晓得对方改了甚么?”
三歪:“是这种的,我们从远程仓库拉取代码的时候除了会把有变动的代码同步到自己的笔记本电脑上,还会把所有修改的记录也同步到自己的笔记本电脑上。因此说,我们会晓得彼此修改的内容。”

男朋友:”听着很有用啊,我平时用的word和excel能用那个应用软件吗?即便我笔记本电脑坏了,我还能去『远程仓库』拿到上一次我提交的数据,并且还有你所说的『版控制』功能。又能备份,又能晓得每天修改了甚么,很好用啊!“
三歪:”很可惜,像你们那种工作场景,可能用不上,也能说不太适合用“
男朋友:”为甚么?“
三歪:”之前我也想要用定时任务+GitHub的方式去留存我在本地写的文章,发出来之后,被一顿喷。GitHub你能简单理解为就是那个远程仓库,定时任务我就是让它隔一段时间就留存一次“
男朋友:”我听明白了,你想要的是备份功能,对吧?为甚么被喷的呢?“
三歪:”他们说我瞎整,这每隔一段时间就提交到GitHub,网络开销可多大啊。然后给我列出一系列的产品,比如说:「坚果云」「Dropbox」「OneDrive」等等“
男朋友:”那你是不是不用?“
三歪:”我哪晓得啊,有信息差的呢。再说彼时觉得自己写个定时任务实现了,就没多想了。“
男朋友:”那你是真的菜“
三歪:”哦“
三歪:”除了上面说的自动同步,你们的word、excel在用我们的工具也没法查到历史的版记录“
男朋友:”为啥?你不是说你们写代码都能的吗?为甚么word和excel就没法查?“
三歪:”我们写代码的文件类型都是属于文本文件,而你的word、excel本质上属于二进制文件,很难去比对每天修改的差异,所以不支持“
男朋友:”那听你这种说,在我的场景里那个「版多媒体播放」没啥用啊,它不能记录像Word、Excel这种文件每天版的差异,要想用它做备份,还不如现有的云产品。“
三歪:”嗯,是的。其实现在云产品也能提供版控制的功能了,你用它们就足够了。还有一点很重要的是,它有学习成本,可不是每个人都会用的。“
男朋友:”听你说了这么多,好似云产品就很行啊,为啥你们还要「偏执」去用你说的那小东西?“
三歪:“主要是我们写代码时遇到的问题会更多,我们用的「版多媒体播放」会更加灵活,它支持的功能会更多。”
男朋友:“对了,你都说了这么久了,你们用的那个应用软件叫啥啊?”
三歪:“Git”

三歪瞎扯
其实本来想着直接讲一下在工作中常用到的Git命令,但辨认出不太好写(琢磨了很久
看三歪文章的人可能很多都是大学生,对Git本身了解可能就不太清楚,直接上Git的命令可能看不太懂,因此就分开了两篇。
下一篇讲一下三歪在工作中使用Git的糗事以及工作中是是不是用Git的。
各类知识点总结
下面的文章都有对应的原创精美PDF,在持续更新中,能来找我催更~
92页的Mybatis129页的多线程141页的Servlet158页的JSP76页的集合64页的JDBC105页的数据结构和算法142页的Spring58页的过滤器和监听器30页的HTTP42页的SpringMVCHibernateAJAXRedis……涵盖Java后端所有知识点的开源项目(已有8K+ star):
GitHubGitee访问更快PDF文档的内容均为手打,有任何的不懂都能直接来问我


我是三歪,两个想要变强的男人,感谢大家的点赞收藏和转发,下期见。