1. 程式人生 > >Git和Repo管理使用簡要介紹

Git和Repo管理使用簡要介紹

 原創http://blog.csdn.net/stevenhu_223/article/details/8828130

在Linux平臺下進行Android系統專案開發時,需要git或repo管理。

一. Git和Repo的區別:

       1. Git:Git是一個開源的分散式版本控制系統,用以有效、高速的處理從很小到非常大的專案版本管理。

       2. Repo: Repo是谷歌用Python指令碼寫的呼叫git的一個指令碼。主要是用來下載、管理Android專案的軟體倉庫(也就是說Repo是用來管理給Git管理的一個個倉庫的)

  二. Git庫管理專案:

      1. 一般在企業的Android開發中,公司會給程式設計師分配一個遠端伺服器,企業本身也有一個程式碼庫(該程式碼庫集合了公司各種不同手機專案的Android系統程式碼)。

程式設計師可以在自己的遠端伺服器上,從公司的程式碼庫下拉相應的手機專案程式碼,然後進行基於Android原始碼的開發、維護、模組單編譯(mm)、全編譯(make -j4)等各種企業需求的開發工作。

      2. 程式設計師開發完成需求時,需要將開發成果儲存在公司的程式碼庫,而這個儲存的過程是需要一系列的安全性工作的。首先,程式設計師開發和維護的成果,需要經過專案負責人(主管、經理、總監之類)的評審、驗證才能最終提交到公司的程式碼庫。

      3. 這個程式碼評審、核查的過程,由Gerrit(程式碼評審工具)實現:

            Gerrit簡介:

            1). 基於 Web 的程式碼評審和專案管理的工具,面向基於 Git 版本控制系統;

            2). 為 Git 引入強制性的程式碼稽核機制,非特別的授權設定,向 Git 版本庫的推送(Push)必須要經過 Gerrit伺服器,經過稽核流程後,才能正式納入程式碼庫;

            3). 每一次提交將對應一個評審任務;

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

            5). Gerrit 提供的 Git 服務的埠並非標準的 22 埠,預設是 29418 埠;

            6). Gerrit預設的Http埠是8080。

4. Git常用指令操作:

           1). 檢視當前程式碼修改狀態:git status。如下圖: 注:

MSM7x27A-ICS-AP為整個Android系統原始碼所在主目錄

     

     上圖輸入git status指令後,顯示的是你之前更改的程式碼檔案(包括檔案所在路徑)

           2). 檢視當前專案遠端程式碼庫的提交記錄:gitk

                輸入gitk指令後,會跳出相應的記錄資訊的視窗,通過該視窗可以檢視其它程式設計師對本專案的遠端程式碼提交記錄。

           3). 儲存更改的程式碼狀態:git stash (或者git stash save "命名");檢視儲存記錄:git stash list;還原儲存的更改:git stash apply (或者git stash [email protected]{x});清除儲存的更改記錄:git stash clear;

                 執行git stash 指令後,再執行git status檢視程式碼更改狀態,之前modified的程式碼記錄將不會顯示,程式碼回到更改之前的狀態。

                 執行git stash指令後,再執行git stash list,將看到如下的資訊:

                  [email protected]{0}:..............

                  [email protected]{1}:...............

                        .

                        .

                        .

                 [email protected]{0}開頭為最近的一次儲存記錄。有時候為了方便記憶和還原我們需要還原的修改記錄,這時候git stash save "xxx" (xxx由自己命名)就派上用場了,執行該指令後 ,我們再執行git stash list,將看到類似如下資訊:

                  [email protected]{0}:..............

                  [email protected]{1}:...............:xxx

                        .

                        .

                        .

                  這樣,我們就可以根據xxx的標記來執行git stash apply [email protected]{1} 還原我們之前儲存的更改記錄了。

              4). 伺服器原生代碼同步更新遠端庫的程式碼:git pull --rebase ;

                   在執行git pull --rebase更新程式碼之前,需執行git status檢視當前原生代碼有沒有修改記錄,若有,則執行git stash 儲存修改記錄,更新完後執行git stash apply恢復更改;如沒有,則直接執行git pull --rebase;(如果本地有修改記錄,則更新會出錯)。

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

               6). 一次性提交修改項(modified)和新增項(add):git add .  (注意有小點); 單獨把修改項或新增項提交:"git add 檔案(包括所在路徑)";

               7). 提交刪除檔案:git rm ;

               8). 檢視遠端程式碼提交記錄節點資訊:git log (按q字母退出);  執行git log後會得到提交記錄資訊和相應的commit id值,如果需要回退到該程式設計師修改提交的記錄資訊時的程式碼,則執行"git reset --soft id值";

               9). 若程式碼提交後(已經執行git push ... 操作),需要回退到提交之前的狀態:登入Gerrit-->找到自己提交的Changes-->選擇Abandon Change-->回到遠端伺服器程式碼終端操作,執行git reset --soft HEAD^

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

               11). 檢視當前程式碼所在的本地分支(帶有*的為當前原生代碼的分支):git branch ;

               12).將把地程式碼切換到遠端對應的分支:"git checkout -b 本地分支名 遠端分支名";

                     如執行git branch後出現如下資訊:

                      * name1

                         name2

                    name1為當前程式碼的本地分支,name2為之前已經切換到自己對應的遠端程式碼分支的本地分支。這時候,如果需要從name1切換到name2,那麼就不需要再執行git checkout -b name2 yyy(yyy為遠端分支名)指令了,直接執行git checkout name2;就可以實現切換到name2分支;

               13). 檢視所有分支(包括本地和遠端):git branch -a;

  三. Repo管理:

 Repo實現管理多個git庫,一般是多個專案共用一個主分支,而針對專案共用主分支的程式碼都可以在overlay目錄裡開發、維護(overlay目錄所在遠端分支為對應專案的分支,而不是當前共用的主分支);然後提交到對應的專案程式碼分支;

       1.Repo 相關指令碼下載操作,相關匹配完成後;下拉Repo管理的專案程式碼:repo init -u gitserver:manifests.git -m xxx.xml (xxx.xml檔案決定初始化的專案)-->repo sync--->建立xxx專案對應的分支:repo start xxx --all 

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

       2. 檢視當前專案程式碼所在的分支:repo branch;

       3.檢視當前專案相應目錄程式碼所在的分支情況(可能共用主分支或者在自己的分支),如檢視framework/base下的程式碼所在分支情況:執行 cd framework/base 進入base目錄-->執行git branch -a檢視;如檢視package/apps/Music系統應用模組所在的分支情況: 執行cd package/apps/Music--->執行git branch -a;

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

       5.自動查詢專案所在的分支(在沒執行repo start xxx --all的情況下),然後進行切換:repo forall -c git checkout -b xxx 專案對應的遠端分支名(最好是本地分支和遠端分支同名,除主分支外)

       6.Repo實現切換分支:執行cd .repo/manifests--->執行ls檢視專案對應的xxx.xml檔案--->執行cd -回到主目錄--->執行repo sync同步更新程式碼--->執行”repo start xxx(本地分支名) --all“建立相應的本地分支(或者執行"repo -c -p git checkout 本地分支  遠端分支"指令);

相關推薦

GitRepo管理使用簡要介紹

 原創http://blog.csdn.net/stevenhu_223/article/details/8828130 在Linux平臺下進行Android系統專案開發時,需要git或repo管理。 一. Git和Repo的區別:        1. Git:Git是一個

使用gitgithub管理項目代碼

你是 -s 同時 查看 現在 後來 為我 一次 官方 以前不知道使用代碼管理工具,最後寫的一些東西都沒有了,由於硬盤壞了或者不小心格式化了之類的,後來使用了Git 和Github來托管自己的代碼和讀書筆記方便了不少,到哪裏只要有網就可以把自己的東西拷貝下來繼續使用。 我這裏

用戶管理命令介紹與詳解

linux 命令用戶管理命令:useradd,userdel,usermod,passwd,chsh.chfn,finger,id,chageUseradd(建立用戶)useradd [options] USERNAME 例:useradd -g mygroup user2建立一個

GitRepo使用命令

git git init:建立一個含有工作區的倉庫 git init --bare:建立一個初始化的倉庫,這個倉庫沒有工作區,通常用於伺服器端 git clone url [destdir] git add file git status git commit -m "message

Windows gitrepo下載Android原始碼

大家好,這篇文章我將教大家如何在Windows環境下下載Android原始碼,Android 自2007年11月5號釋出以來,發展速度如此之快,和它走開源的路是分不開的。我們在開發中有什麼不明白不清楚的,直接把Android 原始碼下下來研究就可以了,看原始碼將會讓你提升

GITrepo命令速查參考

轉載一則: Git命令快速參考Git Command Quick Reference本附錄為Git常見命令快速參考。每節介紹一種操作型別。這裡會列出很多命令,而相應的解釋卻不多。對於還不熟悉Git的讀者,可回頭翻閱第1章“Git的版本控制之道”(第3頁)。A.1安裝和初

Android視窗管理服務WindowManagerService的簡要介紹學習計劃

        在前一個系列文章中,我們從個體的角度來分析了Android應用程式視窗的實現框架。事實上,如果我們從整體的角度來看,Android應用程式視窗的實現要更復雜,因為它們的型別和作用不同,且會相互影響。在Android系統中,對系統中的所有視窗進行管理是視窗管理服

轉Android進程間通信(IPC)機制Binder簡要介紹學習計劃

trac named 組成 get tle 能力 計劃 英文 其中 轉自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系統中,每一個應用程序都是由一些Activity和Ser

遞歸的簡要介紹理解

oct char html col charset filo type ctype doctype 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta cha

(一)關於spring security的簡要介紹以及相關配置jar包認識

重要 force cnblogs control 自定義攔截器 compute 編寫 -- 靈活 Spring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring

Nginx 之 Nginx安裝配置文件簡要介紹

安裝 配置文件 1 概述本文主要介紹了nginx的兩種安裝方法,通過yum和編譯安裝,同時對安裝後的配置文件的語法和格式進行了簡要的介紹2 nginx的安裝2.1 yum安裝nginx在光盤自帶的base源裏沒有,需要通過官方路徑或者是epel源中安裝.官方:http://nginx.org/pack

linux中關於文件系統的簡要介紹一般操作

e2fs 並且 查詢 特殊權限 防止 nodes point 改變 標準 創建文件系統——分區格式化 格式化: 低級格式化: 劃分磁道 高級格式化: 創建文件系統,按照某種特定的標準,將整個分區劃

版本管理(一)之GitGitHub的區別(優點缺點)

機制 最大 客戶 內核 文件 敏捷 star 一定的 sch Git 簡介 https://www.yiibai.com/git/getting-started-git-basics.html Git 是一個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的

版本管理(二)之GitGitHub的連接使用

ext 郵箱地址 github 遠程倉庫 編輯器 version it 管理 png 記錄 首先需要註冊登錄GitHub:https://github.com 然後 ①:下載Git 先從Git官網,由於我的系統是64位的所以選擇64-bit Git for Wi

Linux進程管理 (篇外)內核線程簡要介紹

lin rpc 終端 prop arrow 基於 nested 封裝 進入 關鍵詞:kthread、irq、ksoftirqd、kworker、workqueues 在使用ps查看線程的時候,會有不少[...]名稱的線程,這些有別於其它線程,都是內核線程。 其中多數內核

ELK6.2.3日誌分析工具elasticsearch x-pack6.2.3許可權管理Security模組內建角色介紹

啟動elasticsearch 1.自定義設定密碼,三個內建賬號根據提示設定密碼 ./bin/x-pack/setup-passwords interactive 2.自動生成密碼 ./bin/x-pack/setup-passwords auto 3.在kibana通過DSL語句設定密碼

OSI七層模型TCP/IP五層模型、iproute家族命令、管理工具介紹

1、簡述osi七層模型和TCP/IP五層模型網路協議通常分不同層次進行開發,每一層分別負責不同的通行功能。 1.1 OSI七層模型OSI:Open System Internetconnection(開放系統互聯),由ISO國際標準化組織定義;目的是規範網路環境,實現軟硬體相容;自上而下共分為七層,分別為:應

AD9854原理圖、PCB設計原始檔,AD9854的簡要介紹及使用心得一些建議——【電路模組使用心得1】

原理圖: 鄙人習慣在原理圖上將各種細節標註清楚~ PCB : 3D封裝看著舒服~ 晶片主要特點: 1. 高達300MHz的系統時鐘; 2. 能輸出一般調製訊號,FSK,BPSK,PSK,CHIRP,AM等; 3. 100MHz時具有80dB的信噪比; 4.

EasyTrack項目管理軟件的四大版本相關組件介紹

項目 客戶 對象 領域 綜合 采購 對象的比較 項目組 需求管理 藍雲EasyTrack項目管理軟件,遵循PMBOK和PRINCE2等國際通用項目管理理論,產品特性涵蓋個人空間、管理駕駛艙、項目管理、項目組合管理、知識管理等,提供全面的項目管理解決方案。 藍雲EasyTra

Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹學習計劃

                        在Android系統中,提供了獨特的匿名共享記憶體子系統Ashmem(Anonymous Shared Memory),它以驅動程式的形式實現在核心空間中。它有兩個特點,一是能夠輔助記憶體管理系統來有效地管理不再使用的記憶體塊,二是它通過Binder程序間通訊機