git基本思想

2021-09-24 21:25:00 字數 1810 閱讀 5365

git相比叫傳統的基於檔案svn優勢明顯,主要體現在天然分布式不怕丟失;不以檔案為為基礎,基於git的資料庫(commit雜湊健值檔案)的版本管理,分支、標籤等操作飛速,而不是緩慢地檔案和目錄操作;git下每個人都有乙個獨特的工作區和分支,不必實時和中心伺服器同步就可以;帶有社交性質的基於fork——pr(mr)流程的,協作版本管理;最後就是基於gitlab running/github webhook的ci/cd開發一棧自動化流水線或者devops。以上各個點都是git的巨大獨特的優勢,下面蟲蟲給大家一一論述下。

天然分布式版本庫儲存

和svn中心集中式檔案管理的倉儲管理不同,git從設計到誕生就以融入了分布式基因。雖然git也有伺服器端的github、gitlab、gogs等多種伺服器端,但是git所有操作都可以無伺服器存在,你可以只在本地都能完成所有git操作,可以在目錄之間實現clone、push和pull等需要伺服器端的操作。設定許可權和通訊方法後,git客戶端直接也完全可以實現這些操作。所以我們說git是天然分布式,無需中心伺服器 介入。git伺服器的引入乙個好處就是把一些操作(比如新增證書,建立賬號、倉庫元資訊)和通訊傳輸方法(http、ssh),及大量更多擴充套件功能在伺服器端web介面實現了,方便了使用者的使用。

分布式的乙個好處是**變化push好的倉庫資料,最少保留兩份:本地乙份和伺服器乙份,不怕丟。

git是資料庫,不是目錄檔案

git中倉庫資訊都是以hash健值方式儲存檔案相當於乙個資料庫,當使用者子工作區做了add操作後,此後變化資訊就成了git物件資料庫了(blob、commit、three物件)。通過git命令(git clone checkout rest)可以實現把git資料庫(commit歷史庫和暫存區),變化成使用者實際接觸到檔案和目錄的工作區。

這是git,獨特之處和優勢之處,也是很多初學者迷惑指出,尤其拿之前使用svn的人無法理解的。git的四個區(工作區、暫存區、本地倉庫區和遠端倉庫區),五個狀態轉化流程如下:

知道了這些git就很多問題就都很好理解了。比如分支,比如標籤tag,比如head這些都是對特定commit的指標,所以對拉分支,分支間轉化都很容易,不過把指標(分支,head)指向某個commit,然後利用該commit id再生成工作區而已,看上去就和在不同分支的檔案目錄下切換,而且非常迅速,因為git的是按照差異對比來生成差異的目錄和檔案的。

git的社交性和協作(fork——pr/mr)

git能夠有現在這麼流行,當然還是歸根於其社交協作性質。基於fork和pr/mr的協作流程鼓勵了任何人都可以參與到專案中來而無需做其他特殊操作,無需特殊許可權設定和申請。通過fork操作把任何倉庫都變成自己owner的倉庫,然後想怎麼改就怎麼改,想怎麼操作就怎麼操作,完全有自己做主。改完了可以通過pr(github:pull request)mr(gitlab merge request)在提交給遠倉庫,該過程可以自動做對比,原專案管理者可以review變化,如果沒問題就可以merge 合併到倉庫,完成乙個完美的協作閉環操作。

由於這種社交性質的協作流,使得git廣泛地流行起來,也帶動了相關**github和gitlab也流行起來。githhub號稱」全球最大的同性別交友平台「(碼農大多數是單身男)就是這麼來的。

基於git的ci/cd和devops

這是也git才特有的功能,借助於gitlab runner和webhook實現**發布後,自動編譯、自動測試、自動安掃、自動發布的一棧式自動化流程,大大釋放開發過程繁雜的人力投入和流程,實現敏捷開發,快速迭代。這是目前的軟體開發的大勢和未來發展的方向。特別是雲和容器的技術的發展和不對實踐完善,這種一棧式解決方案越來越成熟,實現的功能越來越多,也被越來越多的企業開發團隊所採納。

而且這一切實現在git來說就是乙個yml配置而已,push後,後面一切都自動化完成,並反饋資訊。很神奇很憧憬把

MVP基本思想

mvp的邏輯性思維都在p層,他降低了頁面的耦合度,具備低耦合的特性,mvp的出現使 更具邏輯性 首先我們看到分包的嚴謹性 mvp的結構分析 p層負責整體邏輯並且將m層和v層聯絡起來,m層主要負責 塊,callback將結果集返回p層,v層最後展示檢視 注意以下介面 public inte ce my...

敏捷開發基本思想

敏捷開發是由一些業界專家針對一些企業現狀提出了一些讓軟體開發團隊具有快速工作 響應變化能力的價值觀和原則,並於2001初成立了敏捷聯盟。他們正在通過親身實踐以及幫助他人實踐,揭示更好的軟體開發方法。通過這項工作,他們認為 個體和互動 勝過 過程和工具 可以工作的軟體 勝過 面面俱到的文件 客戶合作 ...

Michael Abrash 的基本思想。

在大學的時候老鄉老楊買了一本厚厚的書,他看了幾天認為沒有什麼多大用途,就要讓給我。給我的 已記不得多少了。這本書就是michael abrash的 griphics programming black book 的中文版。這也是我看的第一本關於程式設計思想的書。後面的內容當時基本看不懂,但前幾章可以...