Git學習1:初識Git

rhwayfunn發表於2016-04-24

認識Git

其實學習Git已經有一段時間了,但是一直不知道怎麼把學的東西整理出來並寫成部落格。這個系列的部落格不會詳盡將Git的使用展現出來,畢竟已經有比較經典的Git教程了。本著實用的原則,會先將Git的一些概念做一個介紹,然後對在使用Git過程中常用的命令做一個深入的解釋,所謂知其然知其所以然。

Git是Linux之父Linus的第二個偉大的作品(第一個大家都懂的)。在Git出現之前,SVN佔據了版本控制系統的半壁江山,而Git與SVN的最大的區別可以概括為以下幾點:

  • Git是分散式版本控制系統,而SVN是集中式的。分散式與集中式的最大區別在於不需要集中式的版本庫,每個人都可以工作在通過克隆建立的本地版本庫中。換言之,每個人都具有一個完整的版本庫
  • Git版本庫的是按照後設資料儲存的,而SVN則是按照檔案儲存。具體而言就是,通過Git克隆的本地版本庫下的.git目錄只會儲存後設資料,而SVN倉庫下的.svn目錄會包含原始檔案的拷貝
  • Git的版本號的全球唯一的哦。Git使用了SHA-1(40個十六進位制數字)演算法保證了版本號的全球唯一,Linus指出使用SHA-1演算法的目的是保證資料的完整性。理論上對其進行雜湊碰撞(hash collision,不同的兩塊資料有相同的hash值)的攻擊可以在2^51(2的51次方)左右的次數內實現。也就是兩個版本號衝突的機率是1/2^51

Git除了以上與SVN的巨大不同外,還具有以下的閃亮特性,這也是我學習Git的理由。學好Git,受用終身。


工作備份

程式碼備份也許是多數人使用Git的理由,其實除了程式碼備份外,Git還可以備份其他檔案。在進行工作備份的時候,我們需要的僅僅是執行以下簡單的程式碼:

git add . # 這兩個命令可以將本地的修改提交給本地倉庫
git commit
git push # git push命令把本地倉庫的修改更新到遠端倉庫


異地協同工作

我覺得這是另一個Git的優秀特性,比如在學校的機房將工作成果完成了工作備份,在宿舍就可以通過一個命令git pull把工作成果同步到本地,如果又進行了其他的修改,那麼只需要git push就可以重新將新的工作成果備份到遠端的版本庫中。


現場版本控制

在使用Git的時候,完全可能在工作完成一部分的時候發生了意外,如果需要對目前的工作成果進行儲存,使用git tag命令就可以輕鬆完成。tag的意思就是標籤,在Git中則理解為里程碑。無論工作進行到哪裡了,都可以使用git tag標記專案的里程碑。也可以回退到指定到的里程碑上。


吃後悔藥很簡單

在Git中提供了很多反悔的操作,所以把Git理解為“時光穿梭機”也不為過。可以使用諸如git rmgit commit --amendgit rebase等操作就可以輕易實現反悔操作。


更好用的差異比較

Git提供了功能豐富的差異比較命令,Git支援的差異比較除了支援基於行的差異比較外,還支援行內逐字的比較。在Git中實現差異比較只需要使用git diff命令就可以各種型別的差異比較。

相關文章