秃头程序猿如何给小女朋友科普什么是Git?

GIT 是 什 么 ?Git是干什么的?它是一个版本控制软件。情况是这样的,某一天女朋友跟秃头程序猿说:我做的Excel还没保存,电脑蓝屏死机了,东西全丢了。程序猿顺手找了一下WPS是有备份(自动保存)功能的,时间之类的要自己定义。 过了一会,女朋友说蓝屏之前做的东西找不回来了,没设置自动保存。程序猿又感叹一句:我们写代码还有版本控制的软件,在这个过程中会记录每次修改的内容,谁改了什么东西。谁改错了,谁要背锅,一个都不能跑!女朋友听着程序猿一顿乱吹,貌似也有点感兴趣:“版本控制是什么东西?这么厉害的吗?会计就经常要背锅”程序猿:“其实也没什么,一般写代码往往都是多人协作的。你们会计可能是每个人负责一张表(Excel),然后把已完成好的表传给下一个人。而写代码的不一样,我们都是在同一个项目里边编写的,不会单独等着某个人做完了,其他的人再开始动手”程序猿:“你可以理解成,我们多个人会在同一个目录下编写代码,里边可能会做更改或者添加文件的操作。项目组里的所有人都可以对这个目录修改,改完了我们会提交,然后发布上线系统。”还是举个例子吧,就比如我们写论文的时候可能要对论文不断修改,我们的修改是基于原有的基础上改的”。 程序猿:”更改的内容指的就是:基于原有的基础上更改了什么,以及提交者是谁。这样,就没法甩锅了。说白了就是,大家都能知道的文件被改了什么,以及谁改了。” 程序猿:“「每一次的修改」我们称为一个版本,它能够实现版本与版本之间的来回穿梭。打个比方,我有篇文章写了一周,这期间有10个版本,我能随意回到我想要的版本。所以它叫做版本控制软件。”女朋友:“大致就是每一次修改都会被记录下来,然后你们就可以知道每一次版本修改了什么,是谁改的,如果做错了,可以通过这个软件回到想要的版本”程序猿:“嗯,就是这个意思”女朋友:“那我想问个问题,你一直提到的「多人协作」是在同一个目录下对文件修改的,然后可以看到彼此改了什么。但在你不联网的情况下,你是在你的电脑上改,你的同事是在他的电脑上改的,你们是怎么看到彼此改了什么?程序猿:“你的理解是没错的,我们之间不联网,是没办法知道对方改了什么的。我漏了一点没说,我们在改到一定程度下(比如说这个功能我们做完了、也可能做得差不多了),我们会把当前版本提交到远程仓库上。”程序猿继续补充:“可以发现的是,提交到远程仓库后,即便我们电脑坏了,我们可以从远程仓库再把这份数据拉取下来。”女朋友:“所以呢?远程仓库到我这听起来就是一个备份的功能吧?你们怎么知道对方改了什么?”程序猿:“是这样的,我们从远程仓库拉取代码的时候除了会把有变动的代码同步到自己的电脑上,还会把所有修改的记录也同步到自己的电脑上。所以说,我们会知道彼此修改的内容。”女朋友:”听着很有用啊,我平时用的word和excel可以用这个软件吗?即便我电脑坏了,我还可以去『远程仓库』拿到上一次我提交的数据,并且还有你所说的『版本控制』功能。又能备份,又能知道每次修改了什么,很好用啊!“程序猿:”很可惜,像你们那种工作场景,可能用不上,也可以说不太适合用“女朋友:”为啥?你不是说你们写代码都可以的吗?为什么word和excel就没法查?“程序猿:”我们写代码的文件类型都是属于文本文件,而你的word、excel本质上属于二进制文件,很难去比对每次修改的差异,所以不支持“女朋友:”那听你这样说,在我的场景里这个「版本控制软件」没什么用处,它不能记录像Word、Excel这种文件每次版本的差异,要想用它做备份,还不如现有的云产品。“程序猿:”嗯,是的。其实现在云产品也能提供版本控制的功能了,你用它们就足够了。还有一点很重要的是,它有学习成本,可不是每个人都会用的。”女朋友:”那你这么说的话云产品就很好啊,为什么你们还要「偏执」的去用你说的那个东西?“程序猿:“因为写代码时遇到的问题会更多,我们用的「版本控制软件」会更加灵活,它支持的功能会更多。”女朋友:“对了,你都说了这么久了,你们用的那个软件叫啥啊?”程序猿:“Git”。关于Git大家可以去看看Linus去Google的一次演讲链接在这里http://mrw.so/5IsXPU

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):