最基本的協議,其遠程倉庫其實就是硬盤內部的一個目錄(例如D:\\project)。常見於團隊內的人對一個共享的文件系統(例如NFS)具備訪問權限,或者多人共用一臺電腦的狀況。git
當搭建好硬盤上面的遠程倉庫以後,可使用 git clone /d/project 來克隆本地的遠程倉庫。shell
還可使用帶file協議的路徑: git clone file:///d/project 克隆本地遠程倉庫。安全
區別:1.僅指定路徑:Git嘗試使用硬連接(hard link)或直接複製所須要的資料;2.使用file://協議,Git觸發用於網絡傳輸資料的進程,效率低,慢。服務器
本地協議的優勢:搭建簡單。直接使用了現有的文件權限和網絡訪問權限,若是已經有了共享文件系統,創建版本庫會十分容易,只須要像設置其餘共享目錄同樣,將一個Git倉庫放在你們都可以訪問到的路徑並設置好讀寫權限就能夠了。網絡
缺點:不方便從多個位置訪問,例如你在公司的電腦上搭建了本地倉庫,你想在家裏訪問就有點困難了。不能保證Git倉庫的安全,因爲每個人都具備倉庫目錄完整的shell權限,沒有方法能夠阻止他們刪除或者破壞倉庫。ssh
啞(DUMP)HTTP協議(舊,不多使用了):只支持只讀模式。工具
智能(smart)HTTP協議(新,GitHub目前就使用了這種協議):支持讀寫模式。既能夠像git://協議同樣設置匿名服務,又能夠像SSH同樣提供傳輸時的受權和加密,並且只用一個URL就能夠加密
獲得git://和SSH的功能,省去了爲不一樣的需求設置不一樣的URL。 HTTP協議推送(push)以及拉取(pull),服務器都會詢問你的用戶名和密碼。spa
HTTP協議的優勢:不一樣的訪問方式只須要一個URL,服務器只在須要受權時提示輸入受權信息。code
相對於SSH而言,不須要生成SSH祕鑰對再把祕鑰上傳到服務器上。
HTTP/S被普遍採用,通常的企業防火牆都會容許這些端口的數據經過。
缺點:在一些服務器上,架設HTTP/S協議會比SSH協議棘手一些;每次須要輸入用戶名和密碼,管理這些憑證會比較麻煩一些(固然你可使用憑證存儲工具,keychain(OSX))。
除此以外沒有別的缺點。
架設Git服務器時經常使用SSH協議做爲傳輸協議,由於大多數環境都支持SSH訪問,即便不支持也比較容易搭建。
$ git clone ssh://user@server/project.git //使用ssh協議clone一個倉庫
優勢:1.架設簡單;2.數據傳輸時是安全的(全部數據傳輸時都通過受權和加密);3.高效,和其餘3種協議同樣,在傳輸數據時也會盡可能壓縮數據。
缺點:不能經過它實現匿名訪問。即便使用者只須要讀取數據,使用者也要有經過SSH訪問你主機的權限,不利於開源項目。
包含在Git裏的一個特殊的守護進程中,監聽一個特定的端口9418(相似於SSH服務,可是無需任何訪問受權)。
優勢:目前是Git所使用的協議裏面最快的。若是你的項目不須要爲寫進行用戶受權,可使用Git協議。
缺點:1.缺少受權機制,一旦放開推送操做,意味着網絡上的任何人都能向你的項目推送代碼;2.架設難。