真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

一篇通俗易懂的repo教程-創(chuàng)新互聯(lián)

1. repo簡介

repo是Google開發(fā)的用于管理Android版本庫的一個工具,repo是使用Python對git進行了一定的封裝,并不是用于取代git,它簡化了對多個Git版本庫的管理。用repo管理的版本庫都需要使用git命令來進行操作。

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、網(wǎng)站設(shè)計與策劃設(shè)計,東平網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:東平等地區(qū)。東平做網(wǎng)站價格咨詢:028-86922220
1.1 介紹清單庫文件

清單文件是以xml的格式組織的,一個清單庫可以包含多個清單文件和多個分支,每個清單文件和分支都有對應(yīng)的版本。

  • remote元素

    定義了名為korg的遠程版本庫,庫的基址為git://172.16.1.31

  • project元素

    用于定義一個項目,path屬性表示在工作區(qū)clone的位置,name屬性表示該項目的遠程版本庫的相對路徑。

  • default元素

    設(shè)置各個項目默認遠程版本庫為Korg,默認的分支為gingerbread-exdroid-stable。各個項目還可以定義自己的remote和revision覆蓋默認的配置。

  • project元素下的子元素copyfile

    定義了項目clone后的一個附件動作,從src拷貝文件到dest

1.2 下載repo代碼
  • 新建項目存放的文件夾

    mkdir mstar648

  • 進入到項目文件夾

    cd mstar648

  • 執(zhí)行代碼拉取的命令

    repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml
1.3 探究repo文件夾
  • 通過如下命令查看mstar648目錄下

    ls -a

一篇通俗易懂的repo教程

可以看到目錄下有個.repo文件夾,說明mstar648項目是一個用repo管理的版本庫。

  • 進入到.repo,并查看目錄內(nèi)容

一篇通俗易懂的repo教程

可以看到.repo目錄下有manifest、project、repo文件夾等信息。

如果想查看Python封裝的腳本,可到.repo/repo下看到:
一篇通俗易懂的repo教程

如果想查看某個模塊當前是在哪個分支,可以進入到manifests中去:

一篇通俗易懂的repo教程

因為我們剛拉取代碼的時候是ppos4.5.0_cultraview.xml,所以通過vim打開ppos4.5.0_cultraview.xml,然后可以通過

/模塊名

查看到模塊的分支信息。例如我們要看到PposTv的分支信息,就可以搜索/PposTv

2. repo常用命令
2.1 解析拉取代碼的命令

例如我們拉取代碼的時候的命令如下:

repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml

其中:

  • -u:指定一個URL,其連接到一個manifest倉庫

  • -b:選擇manifest倉庫中的一個特殊分支

  • -m:在manifest倉庫中選擇一個xml文件

repo init要完成如下操作:

  • 完成repo工具的完整下載,執(zhí)行的repo腳本只是引導程序

  • clone清單庫manifest.git (地址是-u后面的參數(shù))

  • clone的清單庫位于manifest.git中,clone到本地.repo/manifest中,.repo/manifest.xml只是符號鏈接,它指向的是.repo/manifests/default.xml

  • 如果manifest中有多個xml文件,repo init可以任意選擇其中一個,默認選擇的是default.xml。

上面的拉取代碼示例選擇的是ppos4.5.0_cultraview.xml里面的配置,那么.repo/manifest.xml指向的是.repo/manifests/ppos4.5.0_cultraview.xml

2.2 同步代碼(repo sync)

執(zhí)行了repo init 命令后,我們需要執(zhí)行如下命令同步代碼:

repo sync

參照清單文件.repo/manifest.xml克隆并同步版本庫。如果項目版本庫不存在,則執(zhí)行repo sync命令相當于執(zhí)行g(shù)it clone;如果項目版本庫存在,則相當于執(zhí)行下面兩條指令:

  • git remote update

    相當于對每一個remote源執(zhí)行了fetch操作

  • git rebase origin/branch

    對當前分支的跟蹤分支執(zhí)行rebase操作

2.3 創(chuàng)建并切換分支(repo start)

剛clone下來的代碼是沒有分支的,例如:

一篇通俗易懂的repo教程

repo start 的實質(zhì)就是對git checkout -b 的封裝,可以為單個項目或所有項目以清單文件中已設(shè)定的分支為基礎(chǔ),在本地創(chuàng)建新的分支。

repo start 與 git checkout -b 的區(qū)別:

  • repo start 是在清單文件設(shè)定的分支基礎(chǔ)上創(chuàng)建新的分支

  • git checkout -b 是在當前所在分支的基礎(chǔ)上創(chuàng)建新的分支

如果清單文件中設(shè)定的分支是remoteBranchName,創(chuàng)建新的分支localBranchName。

  • 為單個項目創(chuàng)建localBranchName分支的命令如下:

    repo start localBranchName 項目絕對路徑
  • 為所有項目創(chuàng)建localBranchName分支的命令如下:

    repo start localBranchName --all
2.4 查看分支(repo branches)

本文下面所有的命令都是在單個項目中運行?。?!

例如查看上面拉取的mstar648項目下各模塊的分支信息

在mstar648項目下運行如下命令:

repo branches

一篇通俗易懂的repo教程

2.5 切換分支(repo checkout)

切換分支語法:

repo checkout brancnName

一篇通俗易懂的repo教程

2.6 查看工作區(qū)文件的差異(repo diff)

查看文件差異語法:

repo diff
2.7 查看文件狀態(tài)(repo status)

該命令實際上是對git diff-index 和git diff-filse命令的封裝,同時顯示暫存區(qū)的狀態(tài)和本地文件修改的狀態(tài)

查看文件狀態(tài)語法:

repo status

一篇通俗易懂的repo教程

其中:

  • 每個小節(jié)的第一行顯示的是項目名稱和所在的分支名稱

  • 每個小節(jié)的第二行的第一個字母表示暫存區(qū)文件修改的狀態(tài)

    • -:沒有改變

    • A:添加(不在HEAD中,在暫存區(qū)中)

    • M:修改(在HEAD中,在暫存區(qū)中,內(nèi)容不同)

    • D:刪除(在HEAD中,不在暫存區(qū))

    • R:重命名(不在HEAD中,在暫存區(qū),路徑修改)

    • C:拷貝(不在HEAD中,在暫存區(qū),從其他文件拷貝)

    • T:文件狀態(tài)改變(在HEAD中,在暫存區(qū),內(nèi)容相同)

    • U:未合并,需要沖突解決
  • 每個小節(jié)的第二行的第二個字母表示工作區(qū)文件的更改狀態(tài)

    • -:新/未知(不在暫存區(qū),在工作區(qū))

    • m:修改(在暫存區(qū),在工作區(qū),被修改)

    • d:刪除(在暫存區(qū),不在工作區(qū)
2.8 刪除指定分支(repo abandon)

該命令實質(zhì)是對git branch -D的封裝,語法如下:

repo abandon branchName
2.9 刪除已經(jīng)合并分支(repo prune)

該命令實質(zhì)是對git branch -d的封裝,用于掃描項目的各個分支,并刪除已經(jīng)合并的分支,語法如下:

repo prune
2.10 將文件添加到index表中(repo stage)

該命令實質(zhì)是對git add --interactive命令的封裝,用于將項目工作區(qū)中的改動添加到暫存區(qū),語法如下:

repo stage -i

其中,-i表示 --interactive,給出個界面讓用戶選擇

2.11 設(shè)置遠程倉庫(repo remote)

語法如下:

repo remote addd remoteName url

例如:

repo remote add org ssh://172.16.1.31/git_repo

該命令是根據(jù)xml文件添加的遠程分支,方便于向服務(wù)器提交代碼,執(zhí)行后的build目錄下看到新的遠程分支是org

2.12 遍歷當前項目下的所有g(shù)it倉庫(repo forall)

該命令相當于一個迭代器,會遍歷當前項目下所有的git倉庫,在所有指定的項目中執(zhí)行同一個shell命令。

語法如下:

repo forall -c 命令

其中,參數(shù)有:

  • -c:后面可以帶的任何可以被系統(tǒng)支持的shell命令(ls,cp,pwd等)

  • -p:在shell命令輸出之前列出項目名稱

  • -v:列出執(zhí)行shell指令輸出的錯誤信息

該命令還可以添加環(huán)境變量:

環(huán)境變量的參數(shù)有如下幾種:

  • REPO_PROJECT:指定項目的名稱

  • REPO_PATH:指定項目在工作區(qū)的相對路徑

  • REPO_REMOTE:指定項目遠程倉庫的名稱

  • REPO_LREV:指定項目最后一次提交服務(wù)器倉庫對應(yīng)的哈希值

  • REPO_RREV:指定項目在克隆時的指定分支,manifest里的revision屬性

如果-c后面的shell指令是上述的環(huán)境變量,則需要用單引號把shell指令括起來。

語法如下:

repo forall –c ‘echo $REPO_PROJECT’
2.13 合并多個分支(merge)

例如將所有項目都切換到master分支。

repo forall -p -c git merge local

上面的命令就是將local分支合并到master分支上

2.14 打標簽(tag)

在所有項目下打標簽的命令如下:

repo forall -c git tag 標簽名
2.15 顯示版本號(repo version)

repo安裝后,可以通過repo version命令查看版本號。

一篇通俗易懂的repo教程

2.16 幫助文檔

repo安裝后,可以找到總結(jié)所有命令的文檔,在終端運行如下命令:

repo help

一篇通俗易懂的repo教程

如果想查看具體的某條命令的詳細信息,可以通過如下命令:

repo help 命令名稱

例如想看start指令的具體信息:

一篇通俗易懂的repo教程

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當前文章:一篇通俗易懂的repo教程-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/dhjhco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部