前言
在周六發現了Linus去Google演講的一個視頻,當時還發了一條朋友圈:
有興趣的同學也可以去看看,一點兒也不無聊,在線看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的,
涵蓋Java后端所有知識點的開源專案(已有8K+ star):
- GitHub
- Gitee訪問更快
我是三歪,一個想要變強的男人,感謝大家的點贊收藏和轉發,下期見,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/167814.html
標籤:Java
