版本控制軟件個人認(rèn)為sourceTree還是比較好用的git客戶端,支持windows和mac os。SourceTree 是 Windows 和Mac OS X 下免費的 Git 和 Hg 客戶端,擁有可視化界面,容易上手操作。同時它也是Mercurial和Subversion版本控制系統(tǒng)工具。支持創(chuàng)建、提交、clone、push、pull 和merge等操作。
1. SourceTree獲取項目代碼
1. 點擊克隆/新建
2. 在彈出框中輸入項目地址,http或者ssh地址都可以
如果箭頭指向的倉庫類型表明“這不是一個標(biāo)準(zhǔn)的Git倉庫”,可能是有以下原因
1) 項目地址獲取錯誤
2) 沒有項目訪問權(quán)限
3. 點擊“克隆”,等待項目克隆完成,完成后,左側(cè)只有一個分支master
克隆完成后,得到的是發(fā)布后的master源碼,如果想要獲取最新的正在開發(fā)中的源碼,需要對項目流進(jìn)行初始化,點擊“Git工作流”
直接點“確定”,獲取develop分支源碼
開發(fā)任務(wù)都是在develop分支上完成的
4. 分支共有5種類型
1) master,最終發(fā)布版本,整個項目中有且只有一個
2) develop,項目的開發(fā)分支,原則上項目中有且只有一個
3) feature,功能分支,用于開發(fā)一個新的功能
4) release,預(yù)發(fā)布版本,介于develop和master之間的一個版本,主要用于測試
5) hotfix,修復(fù)補(bǔ)丁,用于修復(fù)master上的bug,直接作用于master
5. master和develop上文中已介紹過,當(dāng)開發(fā)中需要增加一個新的功能時,可新建feature分支,用于增加新功能,并且不影響開發(fā)中的develop源碼,當(dāng)新功能增加完成后,完成feature分支,將新功能合并到develop中,更新develop上的代碼
1) 新建feature。首先當(dāng)前開發(fā)分支指向develop,點擊“Git工作流”
選擇“建立新的分支”
在預(yù)覽中可看到,feature分支是從develop分出的,輸入功能名稱,點擊確定,項目結(jié)構(gòu)中增加feature分支,并且當(dāng)前開發(fā)分支指向新建的feature分支
2) 在F_add_feature分支下進(jìn)行開發(fā)任務(wù),并提交
以上操作分別增加了feature_1、feature_2、feature_3文件,共提交3次,現(xiàn)項目文件夾下共三個文件
當(dāng)切換為develop分支后,會發(fā)現(xiàn),在develop下并沒有新增的三個文件,說明在feature下進(jìn)行操作,并不影響develop分支源碼
3) 完成feature開發(fā)后,將feature中的源碼合并到develop分支。將當(dāng)前分支指向F_add_feature分支,點擊“Git工作流”,選擇“完成功能”
預(yù)覽中,表明feature分支將合并到develop,點擊確定,進(jìn)行提交合并,合并成功后
4) 需要再增加新的功能時,重復(fù)以上操作即可
5) 當(dāng)多人協(xié)作開發(fā)時,可能會出現(xiàn),不同人員對同一文件進(jìn)行操作,從而引起合并沖突,對這種情況進(jìn)行模擬,在當(dāng)前新建兩個feature,分別對feature_1文件進(jìn)行修改,然后分別合并
feature_1在feature_1.txt下做如下操作
feature_2在feature_1.txt下做如下操作
先后合并F_feature_1和F_feature_2,會出現(xiàn)沖突
點擊close,查看未提交的更改,提示feature_1.txt出現(xiàn)沖突,
打開feature_1.txt
出現(xiàn)<<<<<<< HEAD、=======、>>>>>>> feature/F_feature_2,HEAD和=號之間表示當(dāng)前分支下的代碼,=號和>>>>>>> feature/F_feature_2之間表示要合并的分支下的代碼,>>>>>>> feature/F_feature_2表示了要合并的分支的分支名稱,
根據(jù)情況區(qū)分要保留的代碼,要刪除的代碼,最后再刪除<<<<<<< HEAD、=======、和>>>>>>> feature/F_feature_2
將修改的代碼再進(jìn)行一次提交
一旦出現(xiàn)feature合并沖突,要合并的feature分支不會被刪除,如F_feature_2,確保合并沒有問題后,可手動刪除F_feature_2
6. 當(dāng)開發(fā)到一定階段,可以發(fā)布測試版本時,可以從develop分支,建立release分支,進(jìn)入預(yù)發(fā)布測試階段。點擊“Git工作流”,選擇“建立新的發(fā)布版本”
預(yù)覽中可以看到,release是從develop分出的,輸入發(fā)布版本名‘R_v1.0’,點擊確定
R_v1.0為階段性發(fā)布版本,主要用于發(fā)布前進(jìn)行測試,后續(xù)的開發(fā)工作仍舊在develop上進(jìn)行,如果在測試過程中發(fā)現(xiàn)問題,直接在release上進(jìn)行修改,修改完成后進(jìn)行提交
7. 對release分支R_v1.0進(jìn)行兩次修改后,測試完成,可以進(jìn)行正式發(fā)布,在當(dāng)前分支指向R_v1.0分支下,點擊“Git工作流”,選擇“完成發(fā)布版本”
在預(yù)覽中可以看到,R_v1.0向develop和master分別合并,點擊確定,完成正式發(fā)布。
完成合并后,默認(rèn)指向develop為當(dāng)前分支,master增加多個版本更新,將master分支推送到origin,完成線上發(fā)布
8. 正式版本發(fā)布后,develop可繼續(xù)進(jìn)行后續(xù)開發(fā),當(dāng)正式版本出現(xiàn)問題時,需要進(jìn)行問題的修改,可以在master分支建立修改補(bǔ)丁hotfix。將當(dāng)前分支切換到master,點擊“Git工作流”,選擇“建立新的修復(fù)補(bǔ)丁”
預(yù)覽中hotfix分支是從master拉去出來的,輸入修復(fù)補(bǔ)丁名,點確定
在該分支下進(jìn)行master的問題修改,修改完成后進(jìn)行提交。當(dāng)所有補(bǔ)丁問題修改完成后,點擊“Git工作流”,選擇“完成修復(fù)補(bǔ)丁”
預(yù)覽中,H_fix_1向master和develop分別合并,點擊確定,完成分支合并。
合并完成后,默認(rèn)當(dāng)前分支為develop,master分支有版本需要更新,當(dāng)前分支切換為master,進(jìn)行推送,完成補(bǔ)丁修復(fù)。
9. 在完成發(fā)布版本和完成修復(fù)補(bǔ)丁時,如果遇到?jīng)_突,可仿照上述5進(jìn)行沖突修改,再進(jìn)行后續(xù)操作