涉及Android源代碼的工作需要用到的Git和Repo工具。多數(shù)情況下我們可以用Git工具代替Repo,或者兩者混用組合成更復(fù)雜的命令。而Repo工具可以使Android的網(wǎng)絡(luò)操作更加簡潔。
Git是一個(gè)開源版本管理系統(tǒng),旨在處理各種知識庫發(fā)布的大型項(xiàng)目。一般來說,我們可以使用Git進(jìn)行本地操作,比如本地分支化、提交、對比和編輯。Android項(xiàng)目中一個(gè)挑戰(zhàn)是如何支持外部的群體(愛好者社區(qū)以及大型OEM廠商)。如果想讓組件可替代、延長生命周期,我們必須選擇一個(gè)發(fā)布式版本管理系統(tǒng),所有我們選擇Git工具。
Repo是基于Git工具的知識庫管理系統(tǒng)工具,該工具可以統(tǒng)一管理Git知識庫并提交源碼到版本管理系統(tǒng),使得Android項(xiàng)目的開發(fā)流程自動化。Repo并不意味著替代Git工具,它僅使得工作更加簡單。Repo命令是Python腳本,可以放到任何路徑下。涉及到網(wǎng)絡(luò)操作時(shí)可以使用該工具,比如使用單個(gè)Repo命令可以下載多個(gè)知識庫到本地。
Gerrit是給予web的代碼review系統(tǒng),集中支持了Git眾多的應(yīng)用。該系統(tǒng)允許授權(quán)用戶提交代碼更改,通過review后自動merge到版本管理系統(tǒng)。Gerrit支持差異展現(xiàn)和在線評論,使review比較簡單。
一、版本管理基本流程
與知識庫交互的基本流程如下:
1、建立新的分支——repo start
2、編輯代碼文件
3、stage文件更改——git add
4、提交更改——git commit
5、提交更改到review服務(wù)器——repo upload
二、任務(wù)處理 下面詳細(xì)介紹了如何使用Repo和Git命令。
1、同步本地客戶端
同步所有的工程文件——repo sync
同步特定的工程文件——repo sync PROJECT0 PROJECT1 PROJECT2 ...
2、創(chuàng)建分支
每當(dāng)開始編輯文件比如開始修改bug和添加新的功能,需要在本地創(chuàng)建特定的分支。分支并不是原始文件的拷貝,它作為特定提交的標(biāo)示,該標(biāo)示創(chuàng)建本地分支并在分支間進(jìn)行輕量級切換,分支可以隔絕一個(gè)方面的更改。
創(chuàng)建分支——repo start BRANCH_NAME
驗(yàn)證新分支的有效性——repo status
3、分支使用
分配分支到特定工程——repo start BRANCH_NAME PROJECT
本地環(huán)境中切換分支——git checkout BRANCH_NAME
列出所有分支——git branch or repo branches
4、staging文件
默認(rèn)情況下,git工具提示但并不跟蹤工程的更改,為了通知git保存代碼的變化,我們必須commit代碼,即“staging”。
stage文件更改——git add
該命令可以接受任何文件和工程目錄,git添加文件到git知識庫,并且stage文件更改、刪除的記錄。
5、瀏覽客戶端狀態(tài)
展示文件狀態(tài)——repo status
展示未提交的文件編輯——repo diff
6、提交更改
git中commit是版本管理的基本單元,包含了工程的目錄結(jié)構(gòu)和文件內(nèi)容。
創(chuàng)建commit——git commit
執(zhí)行該命令后editor中彈出commit提示信息,最好能夠提供有益的幫助信息。如果沒有添加log信息,該次commit提交會被遺棄。
7、提交更改到Gerrit
upload之前更新最新的版本——repo sync
接著提交代碼——repo upload
之后呈現(xiàn)我們提交的更改,并提示我們選擇分支。
8、處理代碼沖突
提交代碼時(shí)如果遇到?jīng)_突,需要執(zhí)行以下操作:進(jìn)入相關(guān)的工程目錄,針對沖突的文件運(yùn)行g(shù)it add和git commit命令,恢復(fù)更改。如下:
git add .
git commit
git rebase --continue
恢復(fù)更改后再次重復(fù)整個(gè)更新:
repo sync PROJECT0 PROJECT1 ... PROJECTN
如果本地又對剛剛提交的代碼進(jìn)行了修改,提交時(shí)可以直接覆蓋上次的提交,執(zhí)行如下命令:
git add files
git commit --amend
repo upload
9、清除客戶端文件
merge代碼到Gerrit之后,更新本地的工作目錄:
repo sync
安全清除陳舊的分支執(zhí)行以下命令:
repo prune
想恢復(fù)代碼到以前的分支,可以執(zhí)行以下命令:
git log
git reset hard
10、刪除客戶端代碼
由于代碼所有的代碼信息存儲在本地,我們僅需要刪除目錄即可完成:
rm -rf WORKING_DIRECTORY
刪除本地代碼后將會永久的刪除所有提交的更改。
三、Git和Repo流程表原文參考:http://source.android.com/source/version-control.html