對git的初步認識

2022-05-05 05:30:07 字數 3796 閱讀 8413

版本控制系統 (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 括號裡面的內...