在週六發現了Linus去Google演講的一個視頻,當時還發了一條朋友圈:git
有興趣的同窗也能夠去看看,一點兒也不無聊,在線看Linus大佬懟人程序員
www.bilibili.com/video/BV1xb…github
朋友圈的評論有幾我的問我女友呢算法
我又剛好給我女友科普過什麼是Git,因此這篇文章就有了。後端
Git是幹啥用的?它是一個版本控制軟件。網絡
Git這個玩意三歪曾經還給女友給科普過(三歪會常常給女友說點技術的東西,我也不知道她到底聽懂了沒有,反正她每次都說好像有點懂了)。數據結構
當時狀況是這樣的,某一天她跟三歪說:我作的Excel還沒保存,電腦藍屏死機了,東西全丟了。多線程
因而三歪說:這...我也沒怎麼用過Excel這類的軟件,要不看看你用的WPS或者Office?有沒有相關的備份功能或者說是自動保存?數據結構和算法
三歪順手找了一下WPS是有備份(自動保存)功能的,時間什麼的要本身定義一下。ide
三歪還補了一句:這種狀況要是在程序員的手上感受發生的機率會低一點,程序員習慣會按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,在持續更新中,能夠來找我催更~
我是三歪,一個想要變強的男人,感謝你們的點贊收藏和轉發,下期見。