git解惑

http://www.fwqtg.net/git%E8%A7%A3%E6%83%91.html

一、Git是什麼?

很多初次接觸Git的人總是把Git與Github等同起來,我剛開始也是如此。其實Git是一個分佈式軟件控制/配置管理軟件;而Github是一個可以託管Git版本庫的網站而已。越來越多的開源項目選擇使用Git進行管理,然後託管在Github網站上。
Git與svn、cvs都是進行版本管理的軟件,不過控制方式卻不盡相同。其中,cvs、svn屬於集中式版本控制系統,所有開發者都需要跟統一的服務器版本庫進行比對提交;而Git屬於分佈式版本控制系統,每個開發者都可以擁有一個自己的版本庫,然後再進行合併提交。

二、Git的基本操作?

關於Git網上已經有很多基本操作的文章,由於Git很多是指令操作,介紹指令的很多,當然Git也有圖形化工具支持,相關介紹也不少。我這裏不贅述,給幾個還不錯的鏈接。
Git簡單使用指南(這個指南看過之後常用的操作應該沒什麼問題了)
Git常用命令(這個博文畫了個命令的思維導圖,指令還挺全面的)

 Git相關的插件及圖形化工具可以參考如下鏈接:

Git在Eclipse中的插件EGit的使用方法
Git在Windows下的工具MsysGit/TortoiseGit的使用方法

三、Git的衝突解決方法?

在多人協作開發過程中,很容易出現合併衝突。大多數情況下Git都可以自動合併成功,但是如果兩個修改了同一個文件的同一個區域,此時就會出現邏輯衝突,無法自動合併成功,必須手動處理。 
發生衝突時,衝突文件會出現特殊標識符。其中<<<<<<<(七個小於號)和=======(七個等於號)之間的是當前分支的內容,=======(七個等於號)和>>>>>>>(七個大於號)之間的內容是合併的分支的內容。此時需要人工判斷保留哪些內容,修改完成後,再將文件提交在暫存區(add操作),再提交到版本庫就解決衝突了。

四、Git的內部原理?

Git在有遠程版本庫時,基本的工作流大致如下圖: 

Git解惑
 而Git版本控制最關鍵的便是.git目錄,幾乎所有Git存儲和操作的內容都在這個目錄下。具體的目錄存儲內容如下: 

Git解惑
 在這些目錄中,最重要的當屬objects目錄,因爲版本庫存儲的所有對象(文件內容、提交記錄)都放在這個目錄下。目錄中總共存儲有四種對象:tag對象、commit對象、tree對象、blob對象;關係圖的一角大致如下:
Git解惑
其中Tag對象指向一個Commit對象,有點像分支引用,不過tag對象的指向永遠不會變化,而分支引用是可以任意改變的。

五、Git學習資料?

Git的學習門檻個人感覺比svn要高一些,當然基本操作還是可以比較快速的掌握的。Git的指令集非常豐富,功能遠比想象中的強大得多。網上有很多的博文介紹,我也收集了些書籍。按照個人讀後的感覺,由簡到難排序: 
1. 《Pro Git》 中文鏈接 英文鏈接 下載地址
2. 《Git community book》 中文地址 下載地址
3. 《Git權威指南》 下載地址

發佈了31 篇原創文章 · 獲贊 43 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章