Git分布式版本控制系統

2021-09-14 01:13:16 字數 2990 閱讀 8329

git是乙個開源的分布式版本控制系統,

是目前世界上最快、最簡單、也是最流行的版本控制工具,

它可以有效、高速的管理從很小到非常大的專案版本。

git是linus torvalds為了幫助管理linux核心原始碼,

而開發的一款開源的免費的版本控制工具。

git主要用途:

1.儲存每一次修改,便於追蹤檢視專案中所有檔案的變化;

2.同時使用多種方式實現乙個任務(並行分支),然後挑選最好的實現留下;

3.方便多人協作開發同乙個專案,保持專案的一致。

版本控制系統是一種記錄乙個或多個檔案內容變化,

以便將來查閱特定版本修訂情況的系統。

該系統通常用於管理軟體源**檔案的版本,

實際上對任何型別的檔案都能進行版本控制。

如果你是位作家或設計師,

可能會需要儲存某個檔案的所有修訂版本,

通常情況下需要手動備份這些檔案。

採用版本控制系統(vcs)管理所有檔案版本,

可以回溯檔案之前的所有狀態,

甚至整個專案回退到某個歷史狀態。

這樣就可以隨心所欲的進行創作,

而不用擔心修改之前的檔案丟失問題。

你可以比較檔案兩個版本之間的變化,

檢視專案中其他人的修改記錄,

即使有人誤改誤刪專案中的檔案,

也可以輕鬆恢復到原樣。

通常大家會複製整個目錄來備份專案和檔案,

或許還會改名加上備份時間以示區別。

不過有時候會混淆所在的工作目錄,

一旦弄錯檔案丟了資料就沒法撤銷恢復。

為了解決這個問題,

人們開發了許多種本地版本控制系統,

大多都是採用某種簡單的資料庫來記錄檔案的歷次更新差異。

接下來人們又遇到乙個問題,

如何讓在不同電腦上的開發者協同工作?

於是集中化的版本控制系統應運而生。

這類系統有cvs,svn等,

它們有乙個集中管理的伺服器,

儲存所有檔案的修訂版本,

而協同工作的人們通過客戶端連線伺服器,

取出最新的檔案或者提交檔案。

相較於本地版本控制系統,

每個人都可以看到專案中的其他人正在做些什麼。

管理員也可以輕鬆掌控每個開發者的許可權,

並且管理乙個集中系統遠比維護各個終端本地資料庫容易。

缺點是**伺服器的單點故障,

如果伺服器宕機,那麼在這段時間內,

誰都無法提交更新,也就無法協同工作。

要是**伺服器的磁碟發生故障,

而沒有備份,就會有丟失資料的風險。

同樣本地版本控制系統也存在類似問題。

集中式版本控制系統最大問題就是必須聯網,

而且對頻寬和網速要求很高,

如果在區域網內還好,頻寬和速度通常是夠的,

否則既不能提交也不能回滾,

更不能檢視檔案的歷史記錄,

對於使用者的工作效率是個巨大的打擊。

於是分布式版本控制系統面世了。

這類系統有git,mercurial等,

客戶端並不只提取最新版本的檔案快照,

而是把**倉庫完整地映象下來。

這麼即使任何一處協同工作用的伺服器發生故障,

事後都可以用任何乙個客戶端映象出來的本地倉庫恢復。

因為每一次的提取操作,

實際上都是一次對**倉庫的完整轉殖,

通過這種機制實現了分布式去中心化。

這類系統可以指定和多個不同的遠端**倉庫進行互動。

你可以在同乙個專案中,分別和不同工作小組的人相互協作。

你可以根據需要設定不同的協作流程,比如層次模型式的工作流,

而這在以前的集中式系統中是無法實現的。

我們使用比較多的集中式版本控制系統是svn,

經常會拿來和分布式版本控制系統git進行比較,

git本地倉庫包含**庫還有歷史庫,

在本地的環境開發就可以記錄歷史,

而svn的歷史庫存在於**倉庫,

每次對比與提交**都必須連線到**倉庫才能進行。

使用svn必須聯網,否則只能罷工,

而git只在和他人同步**時需要聯網,

由於git本地記錄和分支的關係,

合併同步**的工作也非常方便。

當然git的優勢不單是不必聯網這麼簡單,

還有git極其強大的分支管理,

在git中建立乙個分支或者標籤是非常簡單的,

但是svn建立乙個分支就必須複製整個目錄,

這就把svn等遠遠拋在了後面。

另外svn必須有乙個"**伺服器",

而git每乙個客戶端都可以作為伺服器,

通常我們會約定乙個"偽**伺服器"同步**。

分布式版本控制系統根本沒有"**伺服器",

每個人的電腦上都是乙個完整的版本庫,

那麼多人開發如何協作呢?

比如你在自己電腦上改了檔案a,

你的同事也在他的電腦上也改了檔案a,

這時你們倆之間只需把各自的修改推送給對方,

就可以互相看到對方的修改了。

在實際使用分布式版本控制系統的時候,

很少在兩人之間的電腦上推送版本庫的修改,

因為可能你們倆不在乙個區域網內,

兩台電腦互相訪問不了,

也可能今天你的同事請假了,

他的電腦壓根沒有開機。

因此分布式版本控制系統通常有一台"偽**伺服器",

但這個伺服器的作用僅僅是用來方便"交換"大家的修改,

沒有它大家也一樣幹活,

換一台伺服器作為"偽**伺服器"也很方便。

git官方教程中文版(支援多語言)

git教程_廖雪峰的官方**

GIT分布式版本控制系統

git是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小到非常大的專案版本管理。分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過轉殖 git clone 在本地機器上拷貝乙個完整的git倉庫。專案使用git的一般情景 1 從伺服器上轉殖完整的git倉庫或者建立本地的git...

git分布式版本控制系統

1.git三個工作區 2.使用前配置3.git命令 本地 git init 建立版本庫 在當前資料夾下多出乙個.git檔案 git add 新增到暫存區 git commit m 版本說明 新增到歷史區 git log 檢視日誌 git reflog 檢視所有日誌 git diff 比較工作區和暫存...

GIT分布式版本控制系統

git是一款免費 開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案。1 git的讀音為 g t git是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本管理。2 git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼...