我們爲啥需要Git?Git又是怎麼生出來的?

首先我們必須明白軟件開發這件事一定是由一個團隊進行開發的,所以就存在着成員之間的分工,那麼就會出現這種情況,成員A對項目進行了數據增加邏輯的操作的同時,成員B也在對項目進行數據刪除邏輯的操作,兩者執行操作之前的項目藍本肯定都是一樣的,但是假設A先完成了操作並且上傳服務器,之後B也完成了操作並且上傳服務器,請問這是會出現什麼情況呢?顯然B上傳的文件會將A的文件覆蓋,那麼A編寫的邏輯就會失效,那麼豈不是A做的工作全都涼…這裏爲了讓大家理解的更加清楚,會通過下面的圖來進行解釋。

在這裏插入圖片描述

在舉個非常簡單的例子,當我們已經新建過一個java文件夾時,如果我們再建一個java文件夾,顯然是會覆蓋前一個文件夾的,那麼之前的文件夾就會丟失。所以就需要一款軟件來實現項目的版本控制,如下圖所示:
在這裏插入圖片描述

所以就出現了一系列的版本控制工具。這其中主要是分爲兩類,一類是集中式版本控制工具,這其中必要著名的就是SVN,CVS,VSS…另一種就是分佈式版本控制工具,這裏面主要的就包括我們現在所說的Git工具。

這裏我們在稍微說一下集中式與分佈式版本控制工具的關係。

我們先用兩張圖來看看集中式與分佈式。

在這裏插入圖片描述

從這張圖我們就能看出來集中式的理念了,顯然就是所有的主機都將版本信息交由服務器來統一控制,體現的了集中的概念。

在這裏插入圖片描述

從上面的圖我們就能發現一點,這裏的箭頭我用的都是雙箭頭而並不是單箭頭了,就很能體現出分佈式的理念了,顯然這裏雙箭頭的意思就是每個主機既能充當其他主機的服務器版本控制工具,同時自己也是一臺主機,可以上傳自己的版本信息,這樣就更加的高效共享。

這裏我們在稍微講解一下Git的發展歷程。其實想想計算機的歷史也是挺好玩的。

這裏要提一位大神就是創造了Linux的linus,看了一下這個大神的介紹,發現他是真的牛逼,22歲就寫出了Linux,而且這還不是最牛逼的,你特麼敢信,這貨22歲的時候就已經有10多年的軟件開發經驗了,屬實牛逼。最早11歲的時候就用BASiC語言寫了一個關於統計學的小程序。11歲啊,11歲啊,說的不好聽點,那時候我們還不知道在哪兒玩屎呢。。。。。
在這裏插入圖片描述
在linus創造出Linux後並且開源出去之後,這樣便有越來越多的人在這上面進行開發,但是有人開發就會有一個問題,有這麼多開發者,就必定需要有人對他們貢獻的代碼進行管理,一開始就全是linus一個人進行手動的合併整理,但是畢竟一個人怎麼幹的過整個世界的開發者呢,所以linus自己也就十分的苦惱。
這時候就又有個人站出來了,但其實真正意義上,也不能說是人,而是一個公司,就是BitKeeper的一個子公司BitMover站出來了,說是願意出於人道主義向linus提供幫助,願意免費將自己的版本控制系統給linus來進行使用,但是前提是不能對他們的系統進行破解,這句話一說大家就都懂了嗎。就好比我現在讓你別去想貓,但是你現在腦子裏想的一定是貓的概念是一樣的。雖然這件事並不是linus去做的。但是畢竟linux是一個開源的系統,並不能對全世界的開發者進行強有力的約束,於是就出現了這麼一個人Andrew,他呢就想着去破解BitKeeper的協議,但是呢,BitMovier也不是喫乾飯的呀,沒多長時間就發現了,這下就該了,當初就這麼一個條件你們都不遵守,滾犢子,滾犢子,都特孃的別用了。
在這裏插入圖片描述
最後呢,兩者都沒有妥協,Linus自己呢也十分崩潰,那沒辦法了呀,你不給我用,我就自己搞一個唄。屬實是牛逼,linus自己用C語言開發了一個分佈式的版本控制系統:GIT,並且主體程序開發只他孃的用了兩個星期。太特麼殘暴了。一個月後,Git就基本生出來了,並且Linus也已經將linux系統的代碼交給Git來進行管理。牛--------------------------------逼-----------------------Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
在這裏插入圖片描述
大神屬實牛逼。
到2008年的時候GitHub也正是上線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章