Repo 命令記錄

Repo 可以用來(lái)整合 Git 代碼庫(kù),代碼上傳到 Gerrit 修訂版本控制系統(tǒng)。Repo 只是為了在 Android 環(huán)境中更輕松地使用 Git。

repo 安裝和配置

# Debian/Ubuntu.
$ sudo apt-get install repo

$ mkdir -p ~/.bin
$ PATH="${HOME}/.bin:${PATH}"
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
$ chmod a+rx ~/.bin/repo

1、repo命令的使用方法

$ repo [command] [options]

$ repo help //幫助

$ repo help <COMMAND>

2、repo init

該命令創(chuàng)建一個(gè) .repo/ 目錄,其中包含用于 Repo 源代碼和標(biāo)準(zhǔn) Android 清單文件的 Git 代碼庫(kù)。

$ repo init -u <URL> [<OPTIONS>] //在當(dāng)前目錄中安裝 Repo

參數(shù):
-u:指定要從中檢索清單代碼庫(kù)的地址。
-m:在代碼庫(kù)中選擇清單文件。如果未選擇任何清單名稱(chēng),則會(huì)默認(rèn)選擇 default.xml。
-b:指定分支。

#注意:對(duì)于其余的所有 Repo 命令,當(dāng)前工作目錄必須是 .repo/ 的父目錄或相應(yīng)父目錄的子目錄

3、repo sync

$ repo sync [<PROJECT_LIST>] //同步代碼

選項(xiàng):
-d:將指定項(xiàng)目切換回指定分支。
-f:即使某個(gè)項(xiàng)目同步失敗,系統(tǒng)也會(huì)繼續(xù)同步其他項(xiàng)目。

repo sync 運(yùn)行成功后,指定項(xiàng)目中的代碼會(huì)與遠(yuǎn)程代碼庫(kù)中的代碼保持同步。

* 如果目標(biāo)項(xiàng)目從未同步過(guò),則 repo sync 相當(dāng)于 git clone。
* 如果目標(biāo)項(xiàng)目已同步過(guò),則 repo sync 相當(dāng)于以下命令:

git remote update
git rebase origin/<BRANCH>

如果 git rebase 操作導(dǎo)致合并沖突,那么您需要使用普通 Git 命令(例如 git rebase --continue)來(lái)解決沖突。

4、repo upload

repo upload [<PROJECT_LIST>] //上傳代碼

您選擇一個(gè)或多個(gè)分支后,所選分支上的所有提交都會(huì)通過(guò) HTTPS 連接傳輸?shù)?Gerrit.

如果您在未使用任何參數(shù)的情況下運(yùn)行 repo upload,則該操作會(huì)搜索所有項(xiàng)目中的更改以進(jìn)行上傳。

要在更改上傳之后對(duì)其進(jìn)行修改,應(yīng)使用 git rebase -i 或 git commit --amend

5、repo diff

repo diff [<PROJECT_LIST>]

顯示提交的代碼和當(dāng)前工作目錄代碼之間的差異。

6、repo download

下載特定的修改版本到本地

repo download <TARGET> <CHANGE>

例如:$ repo download platform/build 23823

repo sync 應(yīng)該可以有效移除通過(guò) repo download 檢索到的任何提交
7、repo forall

這個(gè)命令會(huì)遍歷所有的git倉(cāng)庫(kù),并在每個(gè)倉(cāng)庫(kù)執(zhí)行-c所指定的命令

repo forall [<PROJECT_LIST>] -c <COMMAND>

選項(xiàng):
-c:要運(yùn)行的命令和參數(shù)。
-p:可以在遍歷到每個(gè)倉(cāng)庫(kù)的時(shí)候先打印出當(dāng)前的pwd 
-v:顯示該命令向 stderr 寫(xiě)入的消息。

在每個(gè)項(xiàng)目中運(yùn)行指定的 shell 命令。通過(guò) repo forall 可使用下列額外的環(huán)境變量:

REPO_PROJECT 可設(shè)為項(xiàng)目的具有唯一性的名稱(chēng)。
REPO_PATH 是客戶(hù)端根目錄的相對(duì)路徑。
REPO_REMOTE 是清單中遠(yuǎn)程系統(tǒng)的名稱(chēng)。
REPO_LREV 是清單中修訂版本的名稱(chēng),已轉(zhuǎn)換為本地跟蹤分支。如果您需要將清單修訂版本傳遞到某個(gè)本地運(yùn)行的 Git 命令,則可使用此變量。
REPO_RREV 是清單中修訂版本的名稱(chēng),與清單中顯示的名稱(chēng)完全一致。
8、repo prune

刪除已經(jīng)merge的分支

repo prune [<PROJECT_LIST>]

9、repo start

創(chuàng)建分支

repo start <BRANCH_NAME> [<PROJECT_LIST>]

<BRANCH_NAME> 參數(shù)應(yīng)簡(jiǎn)要說(shuō)明您嘗試對(duì)項(xiàng)目進(jìn)行的更改。如果您不知道,則不妨考慮使用默認(rèn)名稱(chēng)。

<PROJECT_LIST> 指定了將參與此分支的項(xiàng)目。

#注意:“.”是一個(gè)非常實(shí)用的簡(jiǎn)寫(xiě)形式,用來(lái)代表當(dāng)前工作目錄中的項(xiàng)目。

10、repo status

repo status [<PROJECT_LIST>]

顯示 project 中每個(gè)倉(cāng)庫(kù)的狀態(tài),并打印倉(cāng)庫(kù)名稱(chēng)

要僅查看當(dāng)前分支的狀態(tài),請(qǐng)運(yùn)行 repo status。系統(tǒng)會(huì)按項(xiàng)目列出狀態(tài)信息。

在第一列中,大寫(xiě)字母表示暫存區(qū)與上次提交狀態(tài)之間的不同之處。

字母  含義  說(shuō)明
-   無(wú)更改 HEAD 與索引中相同
A   已添加 不存在于 HEAD 中,但存在于索引中
M   已修改 存在于 HEAD 中,但索引中的文件已修改
D   已刪除 存在于 HEAD 中,但不存在于索引中
R   已重命名    不存在于 HEAD 中,但索引中的文件的路徑已更改
C   已復(fù)制 不存在于 HEAD 中,已從索引中的另一個(gè)文件復(fù)制
T   模式已更改   HEAD 與索引中的內(nèi)容相同,但模式已更改
U   未合并 HEAD 與索引之間存在沖突;需要解決方案

在第二列中,小寫(xiě)字母表示工作區(qū)與索引之間的不同之處。

字母  含義  說(shuō)明
-   新/未知    不存在于索引中,但存在于工作區(qū)中
m   已修改 存在于索引中,也存在于工作區(qū)中(但已修改)
d   已刪除 存在于索引中,不存在于工作區(qū)中
11、repo foreach [ project-lists] -c command

對(duì)每一個(gè) project 運(yùn)行 command 命令

===============================================================

資料:

  • Homepage: https://gerrit.googlesource.com/git-repo/
  • Mailing list: repo-discuss on Google Groups
  • Bug reports: https://bugs.chromium.org/p/gerrit/issues/list?q=component:repo
  • Source: https://gerrit.googlesource.com/git-repo/
  • Overview: https://source.android.com/source/developing.html
  • Docs: https://source.android.com/source/using-repo.html
  • repo Manifest Format: https://gerrit.googlesource.com/git-repo/+/refs/heads/master/docs/manifest-format.md
  • repo Hooks: https://gerrit.googlesource.com/git-repo/+/refs/heads/master/docs/repo-hooks.md
  • Submitting patches: https://gerrit.googlesource.com/git-repo/+/refs/heads/master/SUBMITTING_PATCHES.md
  • Running Repo in Microsoft Windows: https://gerrit.googlesource.com/git-repo/+/refs/heads/master/docs/windows.md
  • GitHub mirror: https://github.com/GerritCodeReview/git-repo
  • Postsubmit tests: https://github.com/GerritCodeReview/git-repo/actions
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容