三歪給女朋友講解什么是Git
在周六發(fā)現(xiàn)了Linus去Google演講的一個(gè)視頻,當(dāng)時(shí)還發(fā)了一條朋友圈:

有興趣的同學(xué)也可以去看看,一點(diǎn)兒也不無聊,在線看Linus大佬懟人
https://www.bilibili.com/video/BV1xb411A7ac?from=search&seid=4239535088233137638
朋友圈的評(píng)論有幾個(gè)人問我女朋友呢


我又恰好給我女朋友科普過什么是Git,所以這篇文章就有了。
Git介紹
Git是干啥用的?它是一個(gè)版本控制軟件。
Git這個(gè)玩意三歪曾經(jīng)還給女朋友給科普過(三歪會(huì)經(jīng)常給女朋友說點(diǎn)技術(shù)的東西,我也不知道她到底聽懂了沒有,反正她每次都說好像有點(diǎn)懂了)。
當(dāng)時(shí)情況是這樣的,某一天她跟三歪說:我做的Excel還沒保存,電腦藍(lán)屏死機(jī)了,東西全丟了。
于是三歪說:這...我也沒怎么用過Excel這類的軟件,要不看看你用的WPS或者Office?有沒有相關(guān)的備份功能或者說是自動(dòng)保存?
三歪順手找了一下WPS是有備份(自動(dòng)保存)功能的,時(shí)間什么的要自己定義一下。

三歪還補(bǔ)了一句:這種情況要是在程序員的手上感覺發(fā)生的概率會(huì)低一點(diǎn),程序員習(xí)慣會(huì)按ctrl+s。甚至有的時(shí)候,看著看著網(wǎng)頁還會(huì)按ctrl+s。不過像我們寫代碼的工具(IDEA)都不用自己手動(dòng)保存了....

過了一會(huì),她說藍(lán)屏之前做的東西找不回來了,沒設(shè)置自動(dòng)保存。
三歪又感嘆一句:我們寫代碼還有版本控制的軟件,在這個(gè)過程中會(huì)記錄每次修改的內(nèi)容,誰改了什么東西。誰改錯(cuò)了,誰要背鍋,一個(gè)都不能跑!
女朋友聽著三歪一頓亂吹,貌似也有點(diǎn)感興趣:“版本控制是什么東西?這么厲害的嗎?會(huì)計(jì)就經(jīng)常要背鍋”
三歪:“其實(shí)也沒啥,就是我們一般寫代碼往往都是多人協(xié)作的。你們會(huì)計(jì)可能是每個(gè)人負(fù)責(zé)一張表(Excel),然后把已完成好的表傳給下一個(gè)人。而寫代碼的不一樣,我們都是在同一個(gè)項(xiàng)目里邊編寫的,不會(huì)單獨(dú)等著某個(gè)人做完了,其他的人再開始動(dòng)手”
女朋友:“嗯?然后呢”
三歪:“你可以理解成,我們多個(gè)人會(huì)在同一個(gè)目錄下編寫代碼,里邊可能會(huì)做更改或者添加文件的操作。項(xiàng)目組里的所有人都可以對(duì)這個(gè)目錄修改,改完了我們會(huì)提交,然后發(fā)布上線系統(tǒng)?!?/p>
女朋友:“啥?你是不是偏題了?這跟發(fā)布上線系統(tǒng)有啥關(guān)系?”
三歪:“哦,我還是舉個(gè)例子吧。就比如我們寫論文的時(shí)候可能要對(duì)論文不斷修改,我們的修改是基于原有的基礎(chǔ)上改的”

三歪繼續(xù)補(bǔ)充:”因?yàn)槲覀兣略谠瓉淼幕A(chǔ)改錯(cuò)了東西,沒法恢復(fù),所以,我們可能會(huì)有多個(gè)「畢業(yè)論文」的文件。而我們寫代碼的時(shí)候本身就是「多人協(xié)作」的,修改是無法避免的,我們不希望有多個(gè)文件的產(chǎn)生,又希望能夠記錄每次更改的內(nèi)容?!?/p>
三歪:”更改的內(nèi)容指的就是:基于原有的基礎(chǔ)上更改了什么,以及提交者是誰。這樣子,我們就沒法甩鍋了。說白了就是,我們能知道的文件被改了什么,以及誰改了“。

三歪:“到這里,有問題嗎?”
女朋友:“嗯,沒問題,你繼續(xù)”
三歪:“「每一次的修改」我們稱為一個(gè)版本,它能夠?qū)崿F(xiàn)版本與版本之間的來回穿梭。打個(gè)比方,我有篇文章寫了一周,這期間有10個(gè)版本,我能隨意回到我想要的版本。所以它叫做版本控制軟件”
女朋友:“我大致聽懂了,大概就是每一次修改都會(huì)被記錄下來,然后你們就可以知道每一次版本修改了什么,是誰改的,如果做錯(cuò)了,可以通過這個(gè)軟件回到想要的版本”

三歪:“嗯,就是這個(gè)意思”
女朋友:“那我想問個(gè)問題,你一直提到的「多人協(xié)作」是在同一個(gè)目錄下對(duì)文件修改的,然后可以看到彼此改了什么。那你是在你的電腦上改,你的同事是在他的電腦上改的,你們是怎么看到彼此改了什么?這現(xiàn)在有這么厲害的東西了嗎?“
三歪:”哦~你的意思大概就是:我們又不聯(lián)網(wǎng),怎么知道對(duì)方改了什么,是這個(gè)意思吧?“
女朋友:“嗯,是的”
三歪:“你的理解是沒錯(cuò)的,我們之間不聯(lián)網(wǎng),是沒辦法知道對(duì)方改了什么的。我漏了一點(diǎn)沒說,我們?cè)诟牡揭欢ǔ潭认拢ū热缯f這個(gè)功能我們做完了、也可能做得差不多了),我們會(huì)把當(dāng)前版本提交到遠(yuǎn)程倉庫上”
三歪繼續(xù)補(bǔ)充:“可以發(fā)現(xiàn)的是,提交到遠(yuǎn)程倉庫后,即便我們電腦壞了,我們可以從遠(yuǎn)程倉庫再把這份數(shù)據(jù)拉取下來。”

女朋友:“所以呢?遠(yuǎn)程倉庫到我這聽起來就是一個(gè)備份的功能吧?你們?cè)趺粗缹?duì)方改了什么?”
三歪:“是這樣的,我們從遠(yuǎn)程倉庫拉取代碼的時(shí)候除了會(huì)把有變動(dòng)的代碼同步到自己的電腦上,還會(huì)把所有修改的記錄也同步到自己的電腦上。所以說,我們會(huì)知道彼此修改的內(nèi)容?!?/p>

女朋友:”聽著很有用啊,我平時(shí)用的word和excel可以用這個(gè)軟件嗎?即便我電腦壞了,我還可以去『遠(yuǎn)程倉庫』拿到上一次我提交的數(shù)據(jù),并且還有你所說的『版本控制』功能。又能備份,又能知道每次修改了什么,很好用??!“
三歪:”很可惜,像你們那種工作場(chǎng)景,可能用不上,也可以說不太適合用“
女朋友:”為什么?“
三歪:”之前我也想要用定時(shí)任務(wù)+GitHub的方式去保存我在本地寫的文章,發(fā)出來之后,被一頓噴。GitHub你可以簡(jiǎn)單理解為就是那個(gè)遠(yuǎn)程倉庫,定時(shí)任務(wù)我就是讓它隔一段時(shí)間就保存一次“
女朋友:”我聽明白了,你想要的是備份功能,對(duì)吧?為什么被噴的呢?“
三歪:”他們說我瞎整,這每隔一段時(shí)間就提交到GitHub,網(wǎng)絡(luò)開銷可多大啊。然后給我列出一系列的產(chǎn)品,比如說:「堅(jiān)果云」「Dropbox」「OneDrive」等等“
女朋友:”那你怎么不用?“
三歪:”我哪知道啊,有信息差的呢。反正當(dāng)時(shí)覺得自己寫個(gè)定時(shí)任務(wù)實(shí)現(xiàn)了,就沒多想了?!?/p>
女朋友:”那你是真的菜“
三歪:”哦“
三歪:”除了上面說的自動(dòng)同步,你們的word、excel在用我們的工具也沒法查到歷史的版本記錄“
女朋友:”為啥?你不是說你們寫代碼都可以的嗎?為什么word和excel就沒法查?“
三歪:”我們寫代碼的文件類型都是屬于文本文件,而你的word、excel本質(zhì)上屬于二進(jìn)制文件,很難去比對(duì)每次修改的差異,所以不支持“
女朋友:”那聽你這樣說,在我的場(chǎng)景里這個(gè)「版本控制軟件」沒啥用啊,它不能記錄像Word、Excel這種文件每次版本的差異,要想用它做備份,還不如現(xiàn)有的云產(chǎn)品?!?/p>
三歪:”嗯,是的。其實(shí)現(xiàn)在云產(chǎn)品也能提供版本控制的功能了,你用它們就足夠了。還有一點(diǎn)很重要的是,它有學(xué)習(xí)成本,可不是每個(gè)人都會(huì)用的?!?/p>
女朋友:”聽你說了這么多,好像云產(chǎn)品就很行啊,為啥你們還要「偏執(zhí)」去用你說的那東西?“
三歪:“主要是我們寫代碼時(shí)遇到的問題會(huì)更多,我們用的「版本控制軟件」會(huì)更加靈活,它支持的功能會(huì)更多?!?/p>
女朋友:“對(duì)了,你都說了這么久了,你們用的那個(gè)軟件叫啥???”
三歪:“Git”

三歪瞎扯
其實(shí)本來想著直接講一下在工作中常用到的Git命令,但發(fā)現(xiàn)不太好寫(琢磨了很久
看三歪文章的人可能很多都是大學(xué)生,對(duì)Git本身了解可能就不太清楚,直接上Git的命令可能看不太懂,所以就分開了兩篇。
下一篇講一下三歪在工作中使用Git的糗事以及工作中是怎么用Git的。
我是三歪,一個(gè)想要變強(qiáng)的男人,感謝大家的在看收藏和轉(zhuǎn)發(fā),下期見。

各類知識(shí)點(diǎn)總結(jié)
下面的文章都有對(duì)應(yīng)的原創(chuàng)精美PDF,在持續(xù)更新中,可以來找我催更~
- 92頁的Mybatis
- 129頁的多線程
- 141頁的Servlet
- 158頁的JSP
- 76頁的集合
- 64頁的JDBC
- 105頁的數(shù)據(jù)結(jié)構(gòu)和算法
- 142頁的Spring
- 58頁的過濾器和監(jiān)聽器
- 30頁的HTTP
- 42頁的SpringMVC
- Hibernate
- AJAX
- Redis
- ......
掃碼或者微信搜Java3y?免費(fèi)領(lǐng)取原創(chuàng)思維導(dǎo)圖、精美PDF。在公眾號(hào)回復(fù)「888」領(lǐng)取,PDF內(nèi)容純手打有任何不懂歡迎來問我。
原創(chuàng)電子書
原創(chuàng)思維導(dǎo)圖

![]() |
|


