版本控制系統 (vcs)
版本控制系統 (vcs) 是軟體,幫助軟體開發人員攜手合作,他們的工作並保持完整的歷史。
以下是vcs目標
允許開發人員同步工作.
不要覆蓋對方的變化.
維護歷史的每乙個版本.
以下是常見的vcs
集中式版本控制系統(cvcs)
分布式/分布式版本控制系統(dvcs)
在這個教程,我們將介紹集中分布式的版本控制系統,尤其是git。 git 屬於分布式版本控制系統。
分布式版本控制系統(dvcs)
集中式版本控制系統採用**伺服器上儲存的所有檔案和實現團隊協作。但是cvcs主要缺點是**伺服器的單點故障,即故障。不幸的是,如果**伺服器宕機一小時,然後在該時段沒有人可以合作。即使在最壞的情況下,如果**伺服器的磁碟被損壞,並沒有採取適當的備份,那麼將失去整個專案的歷史。
dvcs客戶不僅檢出的最新快照目錄,但他們也完全反映資源庫。如果sever停機,然後從任何客戶端庫可以複製回伺服器,以恢復它。每個結賬是完整的版本庫備份。 git不會依賴**伺服器,這就是為什麼可以執行許多操作,當處於離線狀態。可以提交修改,建立分支檢視日誌和執行其他操作,當處於離線狀態。只需要網路連線,發布您的更改,並採用最新變化。
git優勢
由於大部分的操作都在本地執行,它給人帶來巨大的好處,在速度方面。 git 不依賴於**伺服器,為什麼每乙個操作就沒有必要與遠端伺服器進行互動。 git核心部分是寫在c中,從而避免了與其他高階語言的執行時開銷。雖然 git中反映整個儲存庫,在客戶端上的資料的大小是小的。這說明它是在客戶端上的資料壓縮和儲存的效率有多高。
丟失資料的機會是非常罕見的,當有多個副本。存在於任何客戶端的資料儲存庫中,因此它可以被用來在發生崩潰或磁碟損壞的映象。
git使用常見的加密雜湊函式,稱為安全的雜湊演算法(sha1)命名,並確定在其資料庫中的物件。每乙個檔案並提交檢查總結和檢索其校驗在結賬的時候。意思是說,這是不可能改變檔案,日期,提交資訊和且從git 資料庫不知道git 任何其他資料。
在cvcs情況下,中心伺服器需要足夠強大,要求整個團隊服務。對於較小的團隊,這是不是乙個問題,但隨著團隊規模的增長,伺服器的硬體限制可能成為乙個效能瓶頸。在dvcs開發的情況下不與伺服器進行互動,除非他們需要推或拉的變化。所有繁重發生在客戶端上,所以伺服器硬體可以是很簡單的。
cvcs使用廉價的複製機制,這意味著如果我們建立新的分支,它會複製到新分支的所有**,所以它的耗時和效率不高。另外cvcs的分支的刪除和合併是複雜和費時的。但是,使用git分支管理是很簡單的。只需要幾秒鐘,建立,刪除和合併分支。
自由和開放原始碼
快速和小
隱式備份
安全不需要強大的硬體
更簡單的分支
dvcs術語
本地資源庫
每個vcs工具提供私有工作場所的工作副本。開發者在他的私人工作場所的變化,並提交這些更改後成為倉庫的一部分。 git的需要這一步,為他們提供的專用副本是整個倉庫。使用者可以執行許多操作,這個庫中,如新增檔案,刪除檔案,重新命名檔案,移動檔案,提交改變,還有更多。
工作目錄,暫存區域或索引
工作目錄是地方檔案檢出。其他cvcs開發商一般不修改,並承諾他的變化,直接向版本庫。但git使用不同的策略。 git不會跟蹤每乙個修改過的檔案。每當提交操作,git在目前臨時區域的檔案。只有檔案被認為是目前在臨時區域提交,而不是所有修改過的檔案。
讓我們來看看git的基本工作流程。
第1步:修改檔案的工作目錄。
第2步:將這些檔案新增到暫存區
第3步:執行commit操作。這將檔案從臨時區域。推送操作後,它永久地儲存更改的git倉庫
假設修改了兩個檔案,即 「sort.c」 and 「search.c」 ,兩種不同分別 提交操作。可以新增乙個檔案分段區域,不提交。第一次提交後重複相同的步驟為另乙個檔案。
# first commit
[bash]$ git add sort.c
# adds file to the staging area
[bash]$ git commit –m 「added sort operation」
# second commit
[bash]$ git add search.c
# adds file to the staging area
[bash]$ git commit –m 「added search operation」
blobs
blob代表二進位製大物件。為代表 blob檔案的每個版本。乙個blob儲存檔案資料,但不包含任何有關檔案的元資料。它是乙個二進位制檔案,該檔案它被命名為sha1雜湊 git資料庫中。在git中,檔案未提及的名字。一切固定內容定址。
tree
樹是乙個物件,它表示乙個目錄。它擁有blobs以及其他子目錄。一棵樹是乙個二進位制檔案,該檔案儲存blob樹,也被命名為樹物件的sha1雜湊的引用。
commit
提交持有的庫的當前狀態。commit命令同樣由sha1雜湊的名字命名。可以考慮commit物件的鍊錶節點。每個提交的物件有父commit 物件的指標。從給定的承諾可以遍歷尋找在父指標,檢視歷史記錄的提交。如果提交多個父承諾,這意味著特定的提交是由兩個分支合併。
branches
分支用來建立另一條線的發展。預設情況下,git的主分支,這是一樣軀幹顛覆。平時要工作的新功能建立乙個分支。功能完成後,它被合併回master分支,我們刪除分支。每個分支所引用head,這點在分支的最新提交。每當做出了乙個提交,head更新為最新提交。#br
clone
轉殖操作的庫建立例項。轉殖操作不僅檢出的工作拷貝,但它也反映了完整的資訊庫。使用者可以執行許多操作,這個本地倉庫。網路介入是唯一的一次,當正在同步資料庫例項。
pull
pull操作複製的變化,本地的乙個例項來從遠端倉庫。pull操作是用於兩個儲存庫例項之間的同步。這是在subversion更新操作一樣。
push
推動從本地儲存庫例項的遠端操作副本的變化。這是用來儲存到git倉庫中永久改變。這是在subversion的提交操作相同。
head
head指標總是指向分支的最新提交。每當你做出了乙個提交,head更新為最新提交。head樹枝儲存在.git/refs/heads/ 目錄中。
[centos]$ ls -1 .git/refs/heads/
master
[centos]$ cat .git/refs/heads/master
570837e7d58fa4bccd86cb575d884502188b0c49
revision
修訂版本的源**。在git修訂代表的提交。這些提交由sha1安全雜湊值確定。
urlurl代表的git倉庫的位置。 git 的url儲存在配置檔案中。
[tom@centos tom_repo]$ pwd
/home/tom/tom_repo
[tom@centos tom_repo]$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = [email protected]:project.git
fetch = +refs/heads/*:refs/remotes/origin/*
因為對git不認了解!所以,本文摘自《易百教程》還望見諒!
對OGRE初步認識
最近在學習ogre,對ogre是使用我做了初步整理,很多方面不全的。用ogre引擎程式設計,應注意以下幾點 1.初始化時應該建立root scenemanager camera viewpor 載入resource與plugin,其中resource檔案中指出程式用到的 聲音等資源檔案獲取路徑,pl...
git入門 初步認識
由於工作的變換,開始接觸git,所以把git進行了初步的學習和整理。此系列的內容基本都是來自網路上各個的經驗 總結和分享,個人也僅僅用於學習習記錄,方便日後檢視,如有侵權望告知。1 版本控制和git。上乙個工作用的是svn,自己也沒有系統的學習過,就直接熟悉常用命令開始上手工作,雖然也不耽誤什麼,但...
對python的初步認識
例如 你想讓計算機計算100 8並輸出結果 c語言 include intmain 而用python就容易很多了,只需要 一句 print 8 100 就可以了。另外 如果要在終端顯示8 100 800 print 8 100 8 100 例如輸入name變數 就是name input 括號裡面的內...