版本控制系統(version control system, vcs)可以幫助我們記錄和跟蹤專案中各檔案內容的修改變化。
分布式版本控制系統(distributed version control system, dvcs)也是這樣,它的主要目標仍然是幫助記錄和跟蹤專案中所做的修改。而它與傳統版本控制系統的區別在於,開發人員相互同步修改內容的方式不同。
版本庫(repository)是版本控制系統用來儲存所有歷史資料的地方。
大多數版本控制系統在版本庫中儲存各個檔案的當前狀態、歷史修改時間、誰做的修改,以及修改的原因。
cvs和subversion這類版本控制系統屬於集中式版本庫(centralized repository)模式。在這種模式下,所有的程式設計師都會把他們的改動提交到伺服器上的乙個公共版本庫中。在本地工作目錄樹中,只能看到**的最新版本,如果想查詢歷史修改記錄,就必須與伺服器上的版本庫打交道。這就帶來乙個問題:必須要使用網路。
如果使用分布式版本控制系統,就不會遇到不能上網所帶來的問題。
這是以git為代表的分布式版本控制系統最大的優勢。
每個人都會在本地有自己的版本庫,而不是連線到伺服器上的乙個公共的版本庫。所有的歷史記錄都儲存在本地的版本庫中。
工作目錄樹是程式設計師進行程式開發的地方。
在傳統的版本控制工具中,工作目錄在本地,而版本庫在伺服器上,而git中並非如此。
在git中,版本庫不在伺服器上,而儲存在本地工作目錄樹的「.git」目錄中。
工作目錄樹最初的建立有兩種方法:
1.用git相關命令初始化版本庫,生成「.git」目錄,於是「.git」目錄的父目錄就成了工作目錄樹。
2.轉殖乙個已有的版本庫,也就連帶建立了相應的工作目錄樹。
每次提交(commit)操作都會使得版本庫中新增乙個版本(revision)。
使用像git這樣的分布式版本控制系統時,除了把改動提交到本地版本庫之外,還要通過某種方式將改動共享,以便其他程式設計師能夠得到。為此,需要把改動推入(push)到上游版本庫(upstream repository),即公共版本庫。
推入操作是**同步的一半,另一半是,必須把別人完成的勞動從公共版本庫拿到本地版本庫中來。
具體來說,把遠端版本庫中的改動拿到本地版本庫中,需要兩步操作:
1.把改動取來(fetch),把遠端版本庫中的改動取到本地版本庫。
2.將取來的內容和本地改動合併(merge)。
在git中,可以用乙個命令完成這兩個操作:pull。
標籤以乙個簡單的名稱(即標籤名)來標記版本庫歷史中某個特定的點。
本質上,標籤是乙個對於使用者來說易於理解和易於記憶的名字,用來標識版本庫中乙個難讀難記的內部版本號,以此幫助使用者跟蹤歷史版本。
在版本庫中建立分支的起點。自此,各路發展平行並進。
每條分支記錄這條分支上發生的變更,而與其他分支隔離。
主分支(master branch)是研發的主線,一些版本控制工具也把主分支稱作主幹(trunk)。
分支可以長期存在,也可以僅存在數小時。分支可以合併到其他的分支,但並非所有的分支都必須合併。
合併操作把兩條或者兩條以上的分支合併到一起。
git自動處理分支合併的方法與程式設計師人工處理的方法是相同的:git比較各分支上的變化,確定變化在**發生——哪個檔案的哪個位置。
當不同的變化發生在檔案的不同部分時,git能夠自動合併。但
情況並不總是這樣理想,當git不能自動合併時,就會提示衝突(conflict)。
嚴格鎖(strict locking):乙個時刻,只有乙個人可以占用資源。
樂觀鎖(optimistic locking):允許多個人同時修改同一檔案。樂觀鎖基於乙個假定:大多數時候,這種併發修改不會引起衝突。
git 首字母大寫表示git工具本身。
git 表示命令行中的命令。
prompt> 表示需要輸入的命令。
prompt> git config --global user.name 「***name」
prompt> git config –global user.email 「***[email protected]」
用下列命令可以檢查上述設定是否成功:
prompt> git config --global --list
啟**形介面:
prompt> git-gui
啟動gitk:
在工作目錄樹下prompt> gitk
顯示版本庫中的歷史記錄:
prompt> gitk –all
獲取git內建幫助資訊:
prompt> git help
prompt> git help
其中,用希望了解的具體命令名稱替代
文件中相應命令的頁面將會在瀏覽器中顯示出來。
《版本控制之道——使用git》(pragmatic version control using git)
git版本控制工具
安裝while true 下一步 安裝完成後,開啟git bash git config global user.name xx git config global user.email xx cd到專案根目錄 git init git add 首次新增全部內容 git commit m first...
git版本控制工具
一.git和svn的區別 svn是集中式伺服器,git是分布式伺服器。二.git的優勢 1.git需要在本地建立乙個本地倉庫,我們可以在這個倉庫中提交修改 不受到其他人的影響。2.git提供了一層檔案的緩衝區,緩衝區有兩個好處 1 多次提交到緩衝區的變動內容可以一次提交到本地倉庫 2 緩衝區為我們提...
Git 版本控制工具
區域網下 gitlab伺服器 外網環境下 本地庫初始化 在對應資料夾中使用git bash git init 設定簽名 形式使用者名稱 tom 作用 區分不同開發人員的身份 辨析 這裡設定的前面與登入遠端庫 託管中心 的賬號,密碼沒有任何關係 專案級別 倉庫級別 僅在當前本地庫訪問內有效 git c...