日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git和Repo管理使用简要介绍

發(fā)布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git和Repo管理使用简要介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Linux平臺下進行Android系統(tǒng)項目開發(fā)時,需要git或repo管理。

??一. Git和Repo的區(qū)別:

???????1. Git:Git是一個開源的分布式版本控制系統(tǒng),用以有效、高速的處理從很小到非常大的項目版本管理。

???????2. Repo: Repo是谷歌用Python腳本寫的調(diào)用git的一個腳本。主要是用來下載、管理Android項目的軟件倉庫(也就是說Repo是用來管理給Git管理的一個個倉庫的)

??二. Git庫管理項目:

??????1. 一般在企業(yè)的Android開發(fā)中,公司會給程序員分配一個遠程服務(wù)器,企業(yè)本身也有一個代碼庫(該代碼庫集合了公司各種不同手機項目的Android系統(tǒng)代碼)。程序員可以在自己的遠程服務(wù)器上,從公司的代碼庫下拉相應(yīng)的手機項目代碼,然后進行基于Android源碼的開發(fā)、維護、模塊單編譯(mm)、全編譯(make -j4)等各種企業(yè)需求的開發(fā)工作。

??????2. 程序員開發(fā)完成需求時,需要將開發(fā)成果保存在公司的代碼庫,而這個保存的過程是需要一系列的安全性工作的。首先,程序員開發(fā)和維護的成果,需要經(jīng)過項目負責人(主管、經(jīng)理、總監(jiān)之類)的評審、驗證才能最終提交到公司的代碼庫。

??????3. 這個代碼評審、核查的過程,由Gerrit(代碼評審工具)實現(xiàn):

????????????Gerrit簡介:

????????????1).?基于 Web 的代碼評審和項目管理的工具,面向基于 Git 版本控制系統(tǒng);

????????????2).?為 Git 引入強制性的代碼審核機制,非特別的授權(quán)設(shè)置,向 Git 版本庫的推送(Push)必須要經(jīng)過 Gerrit服務(wù)器,經(jīng)過審核流程后,才能正式納入代碼庫;

????????????3).?每一次提交將對應(yīng)一個評審任務(wù);

????????????4).?通過特殊的分支提交評審任務(wù)(refs/for/….);?

????????????5).?Gerrit 提供的 Git 服務(wù)的端口并非標準的 22 端口,缺省是 29418 端口;

????????????6).?Gerrit缺省的Http端口是8080。

??????4. Git常用指令操作:

???????????1). 查看當前代碼修改狀態(tài):git status。如下圖: 注:MSM7x27A-ICS-AP為整個Android系統(tǒng)源碼所在主目錄

?????

?????上圖輸入git status指令后,顯示的是你之前更改的代碼文件(包括文件所在路徑)

???????????2). 查看當前項目遠程代碼庫的提交記錄:gitk

????????????????輸入gitk指令后,會跳出相應(yīng)的記錄信息的窗口,通過該窗口可以查看其它程序員對本項目的遠程代碼提交記錄。

???????????3). 保存更改的代碼狀態(tài):git stash (或者git stash save "命名");查看保存記錄:git stash list;還原保存的更改:git stash apply (或者git stash stash@{x});清除保存的更改記錄:git stash clear;

?????????????????執(zhí)行g(shù)it stash 指令后,再執(zhí)行g(shù)it status查看代碼更改狀態(tài),之前modified的代碼記錄將不會顯示,代碼回到更改之前的狀態(tài)。

?????????????????執(zhí)行g(shù)it stash指令后,再執(zhí)行g(shù)it stash list,將看到如下的信息:

??????????????????stash@{0}:..............

??????????????????stash@{1}:...............

????????????????????????.

????????????????????????.

????????????????????????.

?????????????????stash@{0}開頭為最近的一次保存記錄。有時候為了方便記憶和還原我們需要還原的修改記錄,這時候git?stash save "xxx" (xxx由自己命名)就派上用場了,執(zhí)行該指令后 ,我們再執(zhí)行g(shù)it stash list,將看到類似如下信息:????????????


??????????????????stash@{0}:..............

??????????????????stash@{1}:...............:xxx

????????????????????????.

????????????????????????.

????????????????????????.

??????????????????這樣,我們就可以根據(jù)xxx的標記來執(zhí)行g(shù)it stash apply stash@{1}?還原我們之前保存的更改記錄了。

??????????????4). 服務(wù)器本地代碼同步更新遠程庫的代碼:git pull --rebase?;

???????????????????在執(zhí)行g(shù)it pull --rebase更新代碼之前,需執(zhí)行g(shù)it status查看當前本地代碼有沒有修改記錄,若有,則執(zhí)行g(shù)it stash 保存修改記錄,更新完后執(zhí)行g(shù)it stash apply恢復更改;如沒有,則直接執(zhí)行g(shù)it pull --rebase;(如果本地有修改記錄,則更新會出錯)。

???????????????5). 一次性提交修改項(modified):git commit -a;接著執(zhí)行"git push origin HEAD:refs/for/遠程分支名",把代碼提交到臨時代碼庫(為通過評審),然后登錄Gerrit,添加評審人員(Add Reviewer),通過評審,提交到公司遠程代碼庫;

???????????????6). 一次性提交修改項(modified)和添加項(add):git add . ?(注意有小點); 單獨把修改項或添加項提交:"git add 文件(包括所在路徑)";

???????????????7). 提交刪除文件:git rm ;

???????????????8). 查看遠程代碼提交記錄節(jié)點信息:git log (按q字母退出); ?執(zhí)行g(shù)it log后會得到提交記錄信息和相應(yīng)的commit id值,如果需要回退到該程序員修改提交的記錄信息時的代碼,則執(zhí)行"git reset --soft id值";

???????????????9). 若代碼提交后(已經(jīng)執(zhí)行g(shù)it push ... 操作),需要回退到提交之前的狀態(tài):登錄Gerrit-->找到自己提交的Changes-->選擇Abandon Change-->回到遠程服務(wù)器代碼終端操作,執(zhí)行g(shù)it reset --soft HEAD^

???????????????10). 把修改或刪除的文件回退到原狀態(tài):"git checkout 文件名(包括路徑)";回退全部:git checkout . (注意有小點)?

???????????????11). 查看當前代碼所在的本地分支(帶有*的為當前本地代碼的分支):git branch ;

???????????????12).將把地代碼切換到遠程對應(yīng)的分支:"git checkout -b 本地分支名 遠程分支名";

?????????????????????如執(zhí)行g(shù)it branch后出現(xiàn)如下信息:

??????????????????????* name1

?????????????????????????name2

????????????????????name1為當前代碼的本地分支,name2為之前已經(jīng)切換到自己對應(yīng)的遠程代碼分支的本地分支。這時候,如果需要從name1切換到name2,那么就不需要再執(zhí)行g(shù)it checkout -b name2 yyy(yyy為遠程分支名)指令了,直接執(zhí)行g(shù)it checkout name2;就可以實現(xiàn)切換到name2分支;

???????????????13). 查看所有分支(包括本地和遠程):git branch -a;

??三. Repo管理:

??????Repo實現(xiàn)管理多個git庫,一般是多個項目共用一個主分支,而針對項目共用主分支的代碼都可以在overlay目錄里開發(fā)、維護(overlay目錄所在遠程分支為對應(yīng)項目的分支,而不是當前共用的主分支);然后提交到對應(yīng)的項目代碼分支;

???????1.Repo 相關(guān)腳本下載操作,相關(guān)匹配完成后;下拉Repo管理的項目代碼:repo init -u gitserver:manifests.git -m xxx.xml (xxx.xml文件決定初始化的項目)-->repo sync--->創(chuàng)建xxx項目對應(yīng)的分支:repo start xxx --all?

?????????(--all意為將所有模塊都歸為當前xxx分支下)

???????2. 查看當前項目代碼所在的分支:repo branch;

???????3.查看當前項目相應(yīng)目錄代碼所在的分支情況(可能共用主分支或者在自己的分支),如查看framework/base下的代碼所在分支情況:執(zhí)行 cd?framework/base 進入base目錄-->執(zhí)行g(shù)it branch -a查看;如查看package/apps/Music系統(tǒng)應(yīng)用模塊所在的分支情況: 執(zhí)行cd?package/apps/Music--->執(zhí)行g(shù)it branch -a;

???????4.刪除不用的本地分支:“repo abandon 分支名” (同“git branch -d 分支名”)

???????5.自動查找項目所在的分支(在沒執(zhí)行repo start xxx --all的情況下),然后進行切換:repo forall -c git checkout -b xxx 項目對應(yīng)的遠程分支名(最好是本地分支和遠程分支同名,除主分支外)

???????6.Repo實現(xiàn)切換分支:執(zhí)行cd .repo/manifests--->執(zhí)行l(wèi)s查看項目對應(yīng)的xxx.xml文件--->執(zhí)行cd -回到主目錄--->執(zhí)行repo sync同步更新代碼--->執(zhí)行”repo start xxx(本地分支名) --all“創(chuàng)建相應(yīng)的本地分支(或者執(zhí)行"repo -c -p git checkout 本地分支 ?遠程分支"指令);
————————————————
版權(quán)聲明:本文為CSDN博主「stevenhu_223」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/stevenhu_223/article/details/8828130

總結(jié)

以上是生活随笔為你收集整理的Git和Repo管理使用简要介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。