Git 可以使用四種主要的協(xié)議來傳輸數(shù)據(jù)
1.????本地傳輸:????
????????????遠(yuǎn)程倉庫在該協(xié)議中就是硬盤上的另一個目錄 ? ? ? ? ? ? ? ?
2.????SSH 協(xié)議
? ??????????SSH 也是唯一一個同時便于讀和寫操作的網(wǎng)絡(luò)協(xié)議。另外兩個網(wǎng)絡(luò)協(xié)議 (HTTP 和 Git)通常都是只讀的循榆,所以雖然二者對大多數(shù)人都可用霉晕,但執(zhí)行寫操作時還是需要 SSH渺尘。SSH 同 時也是一個驗(yàn)證授權(quán)的網(wǎng)絡(luò)協(xié)議;而因?yàn)槠淦毡樾裕ǔR埠苋菀准茉O(shè)和使用
? ??????????通過 SSH 進(jìn)行訪問是安全的——所有數(shù)據(jù)傳輸都是加密和授權(quán)的纵散。最后, 類似 Git 和 本地協(xié)議,SSH 很高效顺呕,會在傳輸之前盡可能的壓縮數(shù)據(jù)枫攀。
3.????Git 協(xié)議
? ??????????這是一個包含在 Git 軟件包中的特殊守護(hù)進(jìn)程; 它會監(jiān)聽一個提供類似于 SSH 服務(wù) 的特定端口(9418),而無需任何授權(quán)株茶。用 Git 協(xié)議運(yùn)營倉庫来涨,你需要創(chuàng)建?git-export-daemon-ok?文件——它 是協(xié)議進(jìn)程提供倉庫服務(wù)的必要條件——但除此之外該服務(wù)沒有什么安全措施
? ??????????Git 協(xié)議是現(xiàn)存最快的傳輸協(xié)議
? ??????????Git 協(xié)議消極的一面是缺少授權(quán)機(jī)制。用 Git 協(xié)議作為訪問項(xiàng)目的唯一方法通常是不可取的
4.????HTTP/S 協(xié)議
? ??????HTTP 或 HTTPS 協(xié)議的優(yōu)美之處在于架設(shè)的簡便性启盛”钠基本上, 只需要把 Git 的純倉 庫文件放在 HTTP 的文件根目錄下僵闯,配置一個特定的?post-update?掛鉤(hook)卧抗,就搞定了
在服務(wù)器部署 Git
開始架設(shè) Git 服務(wù)器的時候,需要把一個現(xiàn)存的倉庫導(dǎo)出為新的純倉庫——不包含當(dāng)前工作目錄的倉庫鳖粟。 方法非常直截了當(dāng)社裆。 把一個倉庫克隆為純倉庫,可以使用 clone 命令的?--bare?選項(xiàng)向图。純倉庫的目錄名以.git?結(jié)尾
git clone --bare my_project my_project.git
將純目錄轉(zhuǎn)移到服務(wù)器 ?(假設(shè)一個域名為?git.example.com的服務(wù)器已經(jīng)架設(shè)好泳秀,并可以通過 SSH 訪問,而你想把所有的 Git 倉庫儲存在?/opt/git?目錄下)
scp -r my_project.git user@git.example.com:/opt/git
生成 SSH 公鑰
SSH 公鑰默認(rèn)儲存 在賬戶的?~/.ssh?目錄
首先查看是否存在公鑰(?cd ~/.ssh ? ? ?ls) 榄攀,關(guān)鍵是看有沒有用 文件名 和 文件名.pub 來命名的一對文件嗜傅,這個 文件名 通常是?id_dsa?或者?id_rsa.pub?文件是公鑰,另一個文件是密鑰