Git版本控制系統VCS
一、版本控制系統基本情況說明
版本控制是一種記錄一個或者若干個文件內容的變化,以便將來查閱特定版本修訂情況的系統
1、作用
記錄文件的所有歷史變化
隨時可回覆到任何一個歷史狀態
多人協作開發或者修改
錯誤恢復
多功能的並行開發(分支功能、特性-合併操作)
2、分類
本地版本控制系統(local VCS)
集中化的控制系統(Centralizes VCS)
分佈式的版本控制系統(Distributed VCS)
3、基本概念
repository——存放所有文件及歷史信息
checkout ——取出或者切換到指定版本的文件
version ——記錄表示一個版本(編號或者其他代碼),某個特定狀態下的資源
tag ——記錄標識一個主要版本(1.0 2.0 3.0)
4.三種版本控制系統細講
(1)本地版本控制系統(LVCS)——本地完整倉庫(少用)
RCS (Revision Control System)
優點:簡單、很多系統中都有配置
適合管理文本文件
缺點:不支持網絡
支持類型單一
只適合管理少量文件、不支持基於項目的管理
(2)集中式版本控制系統(CVCS )——服務器完整的倉庫
CVS (Concurrent Version System)
Subversion
優點:適合多人團隊協作開發
代碼集中話管理
缺點:單點故障
必須連網操作,無法單擊本地工作
(3)分佈式版本控制系統(CVCS)——本地和服務器都有完整的倉庫
Git
Mercurial
優點:適合多人團隊協作開發
代碼集中化管理
可以離線工作
每個計算機都是一個完整倉庫
二、Git——一個分佈式的版本控制系統
1、Git由來
Git最初開發是爲了取代BitKeeper,由linus Torvalds開發,作爲linux內核代碼管理系統使用。
Git 設計時考慮了很多方面,除了分佈式版本控制系統的優點外,還考慮了一下的設計目標,這些目標都成爲git的優點:
速度、簡單的設計、對非線性開發模式的強烈支持(分支功能,允許上千個並行開發的分支)、完全分佈式、有能力管理類似linux內核一樣的強大規模項目。
2、爲什麼取名git
I'm an egotistical bastard,and I name all my projects after myself.First'Linux',now'Git'. ——Linus Torvalds
3、git原理——快照,而非保存區別。
(1)快照,而非保存
每一種版本控制系統都用一種辦法追蹤不同階段的文件的變化。
別的:補丁(保存區別)
Git :快照(鏈接)snapshot
(2)幾乎所有的操作都是在本地執行
(3)通過校驗和算法識別文件的變化
Git 使用SHA-1算法對文件內容或者目錄結構進行hash運算,用得出的校驗值作爲識別變化的指紋。
(4)多數操作據爲添加數據
4、Git 原理——文件狀態及工作區域
Git respository——最終確定的文件保存到倉庫,成爲一個新的版本,並且對他人可見
Staging area(index)——暫存已經修改的文件
Working Directory——編輯、修改文件
三、Git安裝
sudo apt-get updates
sudo apt-get install git
四、Git基礎設置
1、設置用戶名
git config –-global user.name “IterCast”
2、設置用戶郵箱
git config –global user.email “[email protected]”
(用戶名和郵箱是提交代碼時的標識)
3、查看設置
git config –list
4、可以通過以下命令獲取git幫助
git help
可以通過以下的命令獲取特定指令的幫助
git help 特定指令
五、Git操作
(一)初始化一個新的Git倉庫
1、創建一個文件夾(或者使用已有的文件夾)
mkdir git-Demo
2、在文件夾內初始化Git ,創建Git倉庫
cd git-Demo
git init (實際上就是在這個文件夾下面創建一個隱藏的文件夾.git,所有的git文件都保存在此)
(二)Git 倉庫中的文件添加及更新
Git 工作區域: Working Directory——>Staging area(index)------>Git repository
(1)新添加的文件
hellogit.rb、README
(2)添加到Staging area
git add hellogit.rb
git add README
(3)確定後,添加到Git repository
git commit -m “init pro說明信息”
註釋:
(1)git status 查看當前的倉庫狀態;git log查看倉庫日誌。
(2)git commit -a -m “modify hellogit” 直接一起提交暫存文件。(不會自動提交未追蹤的文件)
git commit -a -m “modify README”
(git status)
(三)刪除文件
1、刪除文件(從系統中刪除文件)
rm README
2、從Git中刪除文件(讓Git不去追蹤這個文件)
git rm README
3、提交操作
git commit -m “delete README”
注:只是在當前版本中刪除,而歷史版本中還是存在的
(四)重命名文件
hellogit.rb---------->helloworld.rb
1、git mv hellogit.rb helloworld.rb
2、git commit -m “rename hello.rb to helloworld.rb”
注:重命名文件相當於執行下面三條命令
1、mv hellogit.rb helloworld.rb
2、git rm hellogit.rb
3、git add helloworld.rb
六、Git 遠程倉庫簡介
Working Directory---->Staging area------->Git repository-----.git倉庫文件---->Git倉庫文件
1、Git遠程倉庫——訪問協議
Local、SSH 、Git 、HTTP/HTTPS
2、常用Git 倉庫實現
(1)使用現有的Git網絡倉庫服務
github、bitbucket
(2)搭建自己的Git倉庫服務器件
聲明:本文是在觀看蘇勇老師在51CTO學院上面的Web開發-蘇勇老師Git 版本控制系統精講視頻課程整理而來,大家可以進行視頻觀看。在此謝過蘇勇老師!!