Git - 智慧HTTP



Git **智慧HTTP** 協議是透過HTTP提供Git儲存庫更新且更高階的方法。它也被稱為**現代HTTP協議**。

  • Git 1.6.6 引入了一個更智慧的協議,允許Git協商類似SSH的資料交換。

  • 較新的協議,稱為智慧HTTP,由於其智慧的通訊技術和友好的結構而廣受歡迎。

  • 另一方面,之前的技術,稱為啞HTTP,採用了不太先進的通訊和資料傳輸方法。

關鍵特性

智慧HTTP使用標準的HTTPS埠,功能類似於SSH或Git協議。

它相容多種HTTP身份驗證協議,包括使用者名稱/密碼身份驗證。

1. **Git感知伺服器** - 伺服器理解各種特定於Git的服務和命令,例如**git-upload-pack**和**git-receive-pack**。

2. **智慧協商** - 伺服器和客戶端之間進行協商。它避免了冗餘資料的傳輸,使其比啞HTTP協議更高效。

3. **減少HTTP請求** - 由於沒有傳輸冗餘資料,因此減少了HTTP請求的數量。多個物件被合併到壓縮的packfiles中,從而提高了效能。

4. **高效克隆** - 智慧HTTP減少了克隆儲存庫時傳送的物件數量,並使用特定於Git的最佳化來加快整個過程。

5. **身份驗證** - 透過HTTPS使用密碼、令牌或基於OAuth的機制通常可以進行身份驗證的訪問。智慧HTTP支援匿名訪問和身份驗證訪問。

6. **支援推送** - 與啞HTTP不同,智慧HTTP允許您將更改推送到遠端儲存庫。從而使其在讀寫操作方面都完全發揮作用。

  • 這增加了那些可能難以設定SSH金鑰的使用者的便利性。

  • 智慧HTTP使用HTTPS進一步確保了網路上的安全資料傳輸。

  • 智慧HTTP將安全推送與身份驗證和加密(如SSH)以及匿名服務(**git://**協議)的功能結合在一起。

  • 它透過允許使用單個URL來推送和檢索儲存庫內容來消除對不同URL的需求。

  • 為了確保安全的互動,伺服器可能會在推送到經過身份驗證的儲存庫時要求使用者名稱和密碼。

由於GitHub等平臺有效地使用了智慧HTTP,因此可以檢視、克隆和推送儲存庫,使用相同的URL(**https://github.com/user/repo**),具體取決於使用者的許可權。

這種統一的方法改進了訪問控制措施並簡化了儲存庫管理。

它是如何工作的?

伺服器上使用兩個主要的Git命令

  • **git-upload-pack** - 透過將必要物件傳送到客戶端來使用**git fetch**和**git pull**等操作。

  • **git-receive-pack** - 透過接收客戶端傳送的必要物件並更新儲存庫來使用**git push**等操作。

優點

智慧HTTP協議具有以下優點

  • 智慧HTTP協議透過僅在需要時請求身份驗證並僅使用一個URL執行所有操作,從而簡化了訪問。

  • 與SSH金鑰管理相比,使用者可以使用其使用者名稱和密碼進行身份驗證,這使得使用起來更容易,尤其對於不太有經驗的使用者或不習慣使用SSH的系統。

  • 與SSH類似,智慧HTTP提供快速有效的效能。

  • 為了進一步提高安全性,儲存庫可以選擇透過HTTPS以只讀模式託管,從而確保加密的內容傳輸。

  • 為了進一步保護通訊,可以要求客戶端使用特定簽名的SSL證書。

  • 公司防火牆通常允許廣泛支援的協議(如HTTP和HTTPS),從而在受限網路中更容易訪問。

缺點

以下是使用智慧HTTP進行Git儲存庫的一些缺點

  • 在某些伺服器上,配置透過HTTPS的Git可能比配置SSH更復雜,這增加了與初始配置相關的開銷。

  • 儘管存在這種複雜性,但在交付Git資訊方面,智慧HTTP相較於其他協議提供了顯著的優勢。

  • 管理用於HTTP身份驗證推送的憑據可能比管理SSH金鑰更困難。

  • 像Windows的Credential Manager和macOS的Keychain這樣的程式透過安全地儲存密碼來簡化憑據管理。

  • Git文件的憑據儲存部分包含安全HTTP密碼快取的設定說明。

**智慧HTTP協議**是透過HTTP/HTTPS與遠端儲存庫互動的首選現代方法,它提供了效率、效能和完整的Git功能,包括身份驗證和推送功能。

廣告