Repo常用命令

2021-09-12 03:35:36 字數 3957 閱讀 9597

repo介紹

android 使用 git 作為**管理工具, 開發了 gerrit 進行**審核以便更好的對**進行集中式管理, 

還開發了 repo 命令列工具,對 git 部分命令封裝,將百多個 git 庫有效的進行組織.

源**標記和細分版本
使用國內源
export repo_url=''

export repo_url=''

建立本地映象
repo init -u git: --mirror

repo sync

/usr/bin/git daemon --verbose --export-all --base-path=/mnt /mnt/mirror-aosp

初始化repo
repo init -u git:

repo init -u git: -b android-8.0.0_r1

repo sync
檢視全部版本
cd .repo/manifests

git branch --all

檢視分支
repo branch
建立並切換分支
repo start android-8.0.0_r23 --all
切換分支
對 git checkout 的封裝,但不能帶-b引數,所以不能用此命令來建立特性分支

repo checkout android-8.0.0_r23

檢視工作區檔案差異
git diff 的封裝,用於分別顯示各個專案工作區下的檔案差異

repo diff ---檢視所有專案

repo diff platform/build platform/bionic ---只檢視其中兩個專案

把檔案新增到index表中
對 git add --interactive 的封裝, 用於挑選各個專案工作區中的改動以加入暫存區

repo stage -i […]

-i 代表 git add --interactive 命令中的 --interactive, 給出個介面供使用者選擇

刪除已經合併分支
對 git branch –d 的封裝,該命令用於掃面專案的各個分支,並刪除已經合併的分支

repo prune […]

刪除指定分支
對git branch –d 的封裝

repo abandon

[…]

檢視檔案狀態
repo status

對 git diff-index, git diff-filse 的封裝, 同時顯示暫存區的狀態和本地檔案修改的狀態

每個小節的首行顯示羨慕名稱,以及所在分支的名稱,

第乙個字母表示暫存區的檔案修改狀態

-:沒有改變

a:新增(不在head中,在暫存區中)

m:修改(在head中,在暫存區中,內容不同)

d:刪除(在head中,不在暫存區)

r:重新命名(不在head中,在暫存區,路徑修改)

c:拷貝(不在head中,在暫存區,從其他檔案拷貝)

t:檔案狀態改變(在head中,在暫存區,內容相同)

u:未合併,需要衝突解決

第二個字母表示工作區檔案的更改狀態

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

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

d:刪除(在暫存區,不在工作區)

兩個表示狀態的字母後面,顯示檔名資訊。如果有檔案重名還會顯示改變前後的檔名及檔案的相似度

設定遠端倉庫
這個指令是根據xml檔案新增的遠端分支, 方便於向伺服器提交**, 執行之後的build目錄下看到新的遠端分支org

repo remote add […]

repo remote rm […]

向伺服器提交**
repo push [--all |…]

repo會自己查詢需要向伺服器提交的專案並提示使用者.

repo forall
repo forall […] –c 迭代器,可以在所有指定的專案中執行同乙個shell指令

options:

-c:後面所帶的引數著是shell指令

-p:在shell指令輸出之前列出專案名稱

-v:列出執行shell指令輸出的錯誤資訊

additional environment variables:

repo_project:指定專案的名稱

repo_path:指定專案在工作區的相對路徑

repo_remote:指定專案遠端倉庫的名稱

repo_lrev:指定專案最後一次提交伺服器倉庫對應的雜湊值

repo_rrev:指定專案在轉殖時的指定分支,manifest裡的revision屬性

如果-c後面所帶的shell指令中有上述環境變數,則需要用單引號把shell指令括起來.

repo forall –c 'echo $repo_project'

清除所有修改及更新命令
repo forall -c "pwd;git clean -f;git checkout -f";repo sync -c --no-tags;repo sync -l;
merge(合併多個分支)
把所有專案多切換到master分支,執行以下指令將topic分支合併到master分支

repo forall –p –c git merge topic

tag(打標籤)
在所有專案下打標籤

repo forall –c git tag crane-stable-1.6

remote (設定遠端倉庫)
引用環境變數repo_project新增遠端倉庫:

repo forall –c 『git remote add korg ssh:

刪除遠端倉庫:
repo forall –c git remote add korg
branch(建立特性分支)
repo forall –c git branch crane-dev

repo forall –c git checkout –b crane-dev

repo grep
對 git grep 的封裝,用於在專案檔案中進行內容查詢
顯示manifest檔案內容
repo manifest –o android.xml
顯示repo的版本號
repo version
repo upload
repo upload相當於git push,但是又有很大的不同,它不是將版本庫改動推送到轉殖時的遠端伺服器,

而是推送到**審核伺服器(gerrit軟體架設)的特殊引用上,使用ssh協議.

**審核伺服器會對推送的提交進行特殊處理,將新的提交顯示為乙個待審核的修改集,並進入**審查流程,

只有當審核通過後,才會合併到官方正式的版本庫中.

repo upload [--re --cc]

options:

-h, --help:顯示幫助資訊

-t:傳送本地分支名稱到gerrit**審核伺服器

--replace:傳送此分支的更新補丁集

--re=reviewers:要求指定的人員進行審核

--cc=cc:同時傳送通知到如下郵件位址

repo download

repo download …

repo selfupdate

用於repo自身的更新
參考:

repo常用命令整理

repo作為管理多個git倉庫的一種工具,廣泛應用於多專案多倉庫的 管理。repo init u url b branch 安裝repo倉庫及mainfest倉庫,可以增加 b引數來指定mainfest中的分支 repo sync 更新專案中所有倉庫檔案 repo upload 上傳 到遠端倉庫,相...

git 和repo常用命令

新增 ssh private key cp git shandroid01.dat ssh chmod 600 ssh git shandroid01.dat ssh add ssh git shandroid01.dat 使用repo指令碼同步android git庫 curl bin repo ...

repo和git的常用命令

關於repo的一些命令 1 怎樣在 資料夾下所有git庫都建立分支?repo start all 分支名 2 怎樣刪除 資料夾下所有git庫的分支?repo abandon 分支名 1和2其實就是相反的動作 3 怎樣知道 資料夾下都改動了那些?repo diff 4 怎樣把我的提交上傳的gerrit...