解釋 Git 協作工作流程
版本控制系統分為兩種型別 - 集中式和分散式。在集中式系統中,將有一個由所有團隊成員共享的單個儲存庫。此係統的問題是,如果中央儲存庫離線,則所有依賴於中央儲存庫的人員都將受到影響。
在 Git 中,每個人都有一個儲存庫,這意味著他們不依賴於中央伺服器。他們可以使用此模型離線工作。但是,我們如何使用此模型進行協作呢?與儲存庫的每個使用者同步需要時間,但我們可以擁有一個更好的工作流程,稱為集中式工作流程。
在集中式工作流程中,每個人都將擁有集中式儲存庫的單獨副本,如圖表所示。這是大多數私有團隊和閉源專案中使用的架構。
讓我們看看這如何優於像 Subversion 這樣的集中式版本控制系統。這裡沒有單點故障。如果我們的中央儲存庫離線,如果需要,我們也可以在儲存庫之間單獨同步。在組織中我們把中央儲存庫放在哪裡?大多數情況下,放在公司私有網路或內部基礎設施上的私有伺服器上。其他使用者使用 Git 託管服務,例如 GitHub、GitLab、Bitbucket 等。所有這些提供商都提供建立私有儲存庫的選項,這些儲存庫只能由團隊成員訪問。
讓我們看一個集中式工作流程的示例。
開發人員#01 將儲存庫克隆到他的本地機器,透過執行多個提交來處理專案,並將更改透過推送更改到中央儲存庫來共享,如下所示。
當開發人員#02 需要檢視開發人員#01 所做的更改時,他將從中央儲存庫拉取更改,解決任何現有的衝突並將更改推回中央儲存庫。
大多數開源專案使用稱為整合管理器工作流程的工作流程。讓我們看看它是如何工作的。在開源專案中,我們將擁有一個或多個維護者和許多貢獻者。
這裡的問題是,由於有很多貢獻者,我們不能信任他們所有人。我們不能授予所有貢獻者對儲存庫的推送或寫入許可權。只有專案的維護者應該擁有寫入許可權。
因此,如果您想讓其他使用者為開源專案做出貢獻,請按照以下步驟操作:
分叉中央儲存庫,以便貢獻者獲得中央儲存庫的副本。
克隆此儲存庫以在貢獻者的機器上獲取本地副本,進行更改並執行提交。
準備好共享您的工作後,將更改推回貢獻者的中央儲存庫或分叉儲存庫。
向專案的維護者傳送拉取請求。維護者將收到指示拉取請求的通知。
維護者將拉取貢獻者的更改,並審查貢獻者所做的更改。
審查後,如果維護者對貢獻者的更改感到滿意,他將在其本地儲存庫中合併更改,最後將其推送到中央儲存庫。
這稱為整合管理器工作流程,因為維護者負責專案整合。