版本控制— SVN & git

版本控制—— SVN & GITgit

 

提問windows

什麼是版本控制?安全

是可以一直監視代碼文件的變動,並存儲這些文件以便未來引用的一種機制(軟件)服務器

 

爲何要使用版本控制?網絡

(1)記錄哪一個開發人員作了變動
(2)變動發生的具體時間
(3)實際修訂的內容
(4)若是須要,能夠恢復特定文件或者整個項目到之前的版本
(5)……

 

不使用版本控制還會出現什麼問題?框架

不使用版本控制可能出現的問題ssh

1.備份多個版本,費空間,費時間
2.難於恢復至之前正確版本
3.容易引起BUG
4.解決代碼衝突困難
5.代碼管理混亂
6.難於追溯問題代碼的修改人和修改時間
7.項目版本發佈困難
8.……

版本控制(Revision Control)分佈式

是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內容變化,以便未來查閱特定版本修訂狀況的系統svn

如今就開始使用版本控制工具

若是是開發團隊中的一員,使用版本控制是強制性的!

若是是單人開發,也強烈建議如今就開始使用版本控制

 

使用版本控制能夠:

(1)不會對現有工做形成任何損害
(2)不會增長工做量
(3)添加新的功能拓展時,會變得更加容易

 

版本控制工具

1.CVS  開啓版本控制之門
2.SVN  集中式版本控制之王者
3.GIT  分佈式版本控制之偉大做品

 

SVN

1.SVN簡介
2.SVN服務器端安裝
3.SVN客戶端軟件
4.SVN與Xcode的集成

SVN基本交互流程圖

 

 

 

SVN服務器安裝

VisualSVN-Server

 

 

到公司,管理員創建用戶名&密碼,而後告知svn的地址

 

http: 80

https: 443

Subversion目錄規範

1./trunk   存放開發的「主線」
2./branches   存放支線副本
3./tags   存放標籤副本(版本標記1.0, 2.0)

 

SVN客戶端軟件

1.Cornerstone
2.Versions (注意:添加了Bookmark以後,須要從新啓動一下Versions!)

 

有了Xcode,爲何還要使用客戶端軟件?

²由於Xcode對SVN的集成作的不夠好,尤爲在目錄管理方面必需要當心謹慎!

SVN複習

服務器:代碼倉庫

協議頭:

http: 80   不勾選

https: 443   勾選安全

服務器上選中服務器,點擊右鍵,選擇」properties(屬性)」network(網絡)

客戶端:Versions

1. Repository Bookmark書籤,代碼倉庫的標籤

2. SVN的一個代碼倉庫中能夠放多個項目

3. 用客戶端最大的目的就是輔助檢查是否有遺漏的狀況

 

大部分工做在Xcode中均可以完成

Xcode工做:先更新,再提交!

Xcode中,最好不要多人同時修改一個Storyboard!

注意!!!

.svn這個隱藏目錄記錄着兩項關鍵的信息

(1)工做文件的基準版本
(2)一個本地副本最後更新的時間戳

 

注意:千萬不要手工修改或刪除這個 .svn隱藏目錄和裏面的文件! 不然將會致使本地的工做副本被破壞,沒法再進行操做

 

SVN與Xcode集成演練

1.利用多個客戶端模擬多人協同工做
2.解決代碼衝突
3.多人編譯同一個Storyboard(謹慎)
4.新建分支併合並回主線

關於分支的細節:

(1)分支中開發的代碼,要儘量與主杆Trunk上的代碼耦合度低!

使用SVN咱們應該

1.常常更新:下降衝突的可能性
2.提交前需在本機測試經過:下降將問題代碼傳到版本庫
3.提交時必定寫備註:方便其餘員工查看和本身之後回顧
4.對於不須要提交的文件不要提交到版本庫

 

提示

1.每次提交以前先更新
2.天天下班前提交當天編譯經過的代碼
3.天天上班第一件事情更新前一天的代碼

GIT

1.GIT簡介
2.GIT工做模型及基本概念
3.GIT經常使用命令及演練
4.在Xcode中使用GIT
5.GIT經典協同模型/分支分類
6.GIT服務器的安裝與配置

GIT簡介

GIT是一款自由和開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目

是Linus(李納斯)的第二個偉大做品,2005年因爲BitKeeper軟件公司對Linux社區中止了無償使用權。Linus迫不得己本身開發了一個分佈式版本控制工具,從而Git誕生了

幾乎全部優秀的iOS第三方框架都使用GIT

目前移動開發領域,愈來愈多的公司開始轉向GIT

Xcode中已經集成了最經常使用的GIT功能

 

 

SVN vs GIT

SVN

集中式

效率略差

國內使用的較爲普遍

由較好的圖形化客戶端和服務器支持,學習和使用相對簡單

項目分支管理簡單

GIT

分佈式

效率高

國際上已經廣泛使用,移動互聯網項目開始愈來愈多地轉向GIT

Xcode集成的功能已經可以知足大部分平常需求,但還有少許命令須要在終端輸入,學習曲線相對陡峭

項目分支能夠無限細分,更適合大型項目的版本規劃

選擇GIT的理由

1.分佈式,離線操做
2.每日工做備份
3.異地協同工做
4.現場版本控制
5.避免引入輔助目錄
6.能夠吃後悔藥
7.工做進度隨時保存
8.快

GIT工做模型

1.集中式協同模型
2.社交網絡式協同模型

集中式協同模型

社交網絡式協同模型

GIT基本交互流程圖

GIT倉庫初始化

倉庫初始化

git init --bare shared.git

 

倉庫文件目錄

HEAD:  指向當前分支的一個提交

description:  項目的描述信息

config:  項目的配置信息

info/:  裏面有一個exclude文件,指定本項目要忽略的文件

objects/:  Git對象庫(commit/tree/blob/tag)

refs/:  標識每一個分支指向哪一個提交

hooks/:  默認的hook腳本

 

 

GIT設置配置信息

命令

git config -l   查看配置信息

git config -e   編輯配置信息

默認修改.git/config文件

我的信省息初始化(不要隨意修改)

git config user.name "user01"

git config user.email "user01@163.com"

提示:若是沒有配置全局信息,每次克隆以後都必須配置用戶名和郵件!

使用--global參數能夠配置全局我的信息

 

忽略無需版本控制的文檔

echo 「*.txt」 > .gitignore

 

GIT基本命令

工做區、暫存區和代碼區

GIT命令行演練

1.建立代碼倉庫
2.多人協同工做
3.解決衝突
4.刪除無需版本控制的文檔

Xcode演練

1.建立代碼倉庫
2.多人協同工做
3.解決衝突
4.多人同時修改Storyboard
5.刪除無需版本控制的文檔

.gitignore中的內容

.DS_Store

*.xcworkspace

 

 

 

GIT經典協同模型

中心倉庫:包含master和develop兩個分支

分支分類

(1)主要分支:master和develop分支
(2)支持性分支:特性分支,發佈分支,熱補丁分支

提示:

(1)對於商業級項目,真正開發過程當中都是基於develop分支進行的,develop分支是開發主線!
(2)master分支中,只存放相對穩定的分支,例如:0.1版本, 0.2版本
(3)在實際產品開發中,須要「規劃版本」,例如:將100個功能規劃到5個不一樣的版本上
(4)發現bug,要基於「上一個最穩定的版本」進行修復,這是熱補丁分支存在的意義!
(5)理解清楚版本管理分支的特性,是迭代式開發的重要基礎!

 

給分支打標籤

git tag -a v1.0 -m 'Version 1.0'

打一個1.0的標籤

git push origin v1.0

將標籤推送到遠程服務器

git tag

查看當前標籤

git checkout v1.0

簽出v1.0標籤

git checkout -b v1.0hotfix

簽出並建立v1.0hotfix分支

git branch

查看當前所在分支

安裝GIT服務器

GIT代碼倉庫本質上是經過命令行來操做的

若是在局域網中配置GIT服務器,只要可以經過終端訪問到服務器便可

在Windows上要安裝GIT服務器,安裝以下三個軟件便可

(1)CopSSH  容許windows使用ssh訪問unix服務器目錄

注意:CopSSH的用戶必定不能是windows的管理員!!!

(2)GIT-Windows  在Windows中運行的GIT,其本質就是命令行
(3)Tortoisegit  Windows中GIT的圖形化操做客戶端

在Mac上要安裝GIT服務器,無需安裝任何軟件,只須要設置訪問用戶便可,遠程用於經過受權的帳戶名和密碼登陸,便可使用GIT

 

提示:GIT服務器能夠是互聯網中的某臺主機,也能夠是局域網中的某臺計算機的共享目錄,還能夠是U盤。總之:分佈無所不在!

 

CopSSH

將Git\libexec\git-core下的git.exe , git-receive-pack.exe, git-upload-archive.exe, git-upload-pack.exe拷貝到\ICW\bin下

將\Git\bin\libiconv-2.dll拷貝到ICW\bin下

 

CopSSH本質上就是容許其餘計算機以SSH的方式訪問計算機資源

 

SSH是目前較可靠的,專爲遠程登陸會話和其餘網絡服務提供安全性的協議

 

使用GIT咱們應該

1.常常更新:下降衝突的可能性
2.提交前需在本機測試經過:下降將問題代碼傳到版本庫
3.提交時必定寫備註:方便其餘員工查看和本身之後回顧
4.對於不須要提交的文件不要提交到版本庫

 

提示

1.每次提交以前先更新
2.天天下班前提交當天編譯經過的代碼
3.天天上班第一件事情更新前一天的代碼

Q & A

若是你如今是開發團隊中的一員,仍是單人開發,都強烈建議如今就開始使用版本控制!

相關文章
相關標籤/搜索