一,何為版本控制
版本控制是一種軟體工程籍,它能使不同人編輯的同一項目都得到更新,避免了代碼不同步的情況,它能記錄每次編輯的改動,并附上序号,如果編輯錯誤它還能還原到上一個版本避免代碼備援或者錯亂的情況發生。
二,我們可以選擇的版本控制系統
1、VCS
2、VSS、CVS
3、ClearCase、SVN(常用,下有詳細講解)、Perforce、TFS
4、Mercurial(水銀/水星)、Git(常用,下有詳細講解)
三,版本控制系統的分類
1、本地版本控制
2、集中版本控制
3、分布式版本控制
四、SVN
1、SVN的曆史:2000年2月,CVS作者之一Karl Fogel,CollabNet公司
2、SVN的架構
1.SVN網絡示意圖
2.SVN的部署結構
(1)單機結構
(2)本地檔案系統
(3)網絡結構
(4)C/S結構
(5)B/S結構
3.SVN的存儲結構
(1)SVN倉庫(Repository):儲存各個版本的軟體資源、記錄版本更新曆史、維護版本分支……
(2)本地的工作目錄(Working Directory):開發者進行工作的地方
4.C/S結構下的存儲示意圖
3、軟體
1.Apache官網位址:http://subversion.apache.org
2.TortoiseSVN官網位址:http://tortoisesvn.tigris.org
4、SVN圖示的含義
5、SVN常用實操
1.Checkout檢出
2.Add添加檔案或檔案夾
3.Commit送出
4.Update to revision曆史版本回溯
5.Update更新
6.沖突
7.鎖定
8.建立分支
9.忽略:
(1)設定SVN忽略檔案和目錄(檔案夾):http://blog.csdn.net/hemingwang0902/article/details/6904205
(2)SVN 管理Android項目中忽略的設定和注意事項
1)以下不應該納入SVN版本控制範圍:
# bin目錄。編譯後生成的目标檔案
# gen目錄。自動生成的R.java
尤其是bin和gen目錄,一定要列入SVN忽略清單中!!切記。
2)如果是在Eclipse中,要設定build path讓其忽略.svn檔案夾
菜單 - Project - Properties - Java Build Path - Source - xxx/src - Excluded,輕按兩下或點右邊的編輯,在Exclusion patterns中加入"**/.svn/**",讓Eclipse忽略.svn目錄即可。
(3)Ignored Resource
.settings
.class
target
*.iml
.idea
10.把一個項目檔案夾釋出到SVN伺服器上
11.Export導出
12.備份
6、标準的SVN目錄結構
1.trunk主幹:主版本的代碼
2.tags裡程碑版本:儲存相對穩定的版本
3.branches分支:開發有一定風險的功能
7、SVN的使用規範
1.先更新,再送出
2.多送出
3.不要送出不能通過編譯的代碼
4.每次送出必須書寫明晰的标注
5.送出時注意不要送出本地自動生成的檔案
6.不要送出自己不明白的代碼
7.慎用鎖定功能
8、SVN工作的一天
五、Git
1、Git簡介
2、Windows下Git的安裝
1.Windows版的Git官網:https://git-for-windows.github.io/
2.TortoiseGIT:https://tortoisegit.org
3、Git的優勢
1.分布式,強調個體
2.公共伺服器壓力和資料量都不會太大
3.速度快、靈活
4.任意兩個開發者之間可以很容易的解決沖突
5.離線工作
4、論述SVN與Git的差別
1.SVN是C/S結構,集中式;Git分布式,也可以有服務端
2.SVN用戶端隻有工作區域;Git用戶端有工作區域和本地倉庫
3.SVN不能離線操作;Git可離線操作,可日志和進行本地送出
4.SVN速度慢;Git速度快
5.SVN是按檔案方式存儲;而GIT把内容按中繼資料方式存儲
6.SVN的分支就是版本庫中的另外的一個目錄;而Git同一個工作目錄下
7.SVN有一個全局版本号;而Git沒有
8.GIT的内容存儲使用的是SHA-1雜湊演算法,是以内容的完整性要優于SVN
9.SVN的checkout對應Git的clone、pull、fetch
10.SVN的update對應Git的checkout
11.SVN的delete對應Git的rm
12.SVN的commit對應Git的push