Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

回購命令參考

Repo通過簡化跨多個存儲庫的工作來補充Git。有關回購和Git之間關係的說明,請參見源代碼管理工具 。有關回購的更多詳細信息,請參見回購自述文件

回購使用採用以下形式:

repo command options

可選元素顯示在方括號[]中。例如,許多命令都將project-list作為參數。您可以將project-list指定為project-list的名稱列表或本地源目錄的路徑列表:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

救命

此頁面僅突出顯示關鍵選項。有關完整的詳細信息,請參見命令行幫助。安裝Repo後,可以通過運行以下命令找到最新文檔,其中包含所有命令的摘要:

repo help

您可以通過在Repo樹中運行以下命令來查看有關任何命令的詳細信息:

repo help command

例如,以下命令為Repo的init參數生成描述和選項列表,該參數在當前目錄中初始化Repo。 (有關詳細信息,請參見init 。)

repo help init

或者僅查看可用選項列表,請運行:

repo command --help
例如:
repo init --help

在裡面

repo init -u url [options]

在當前目錄中安裝Repo。這將創建一個具有.repo/源代碼和標準Android清單文件的Git存儲庫的.repo/目錄。

選項:

  • -u :指定從中檢索清單存儲庫的URL。常見清單可在https://android.googlesource.com/platform/manifest找到。
  • -m :在存儲庫中選擇一個清單文件。如果未選擇清單名稱,則默認值為default.xml
  • -b :指定一個修訂,即特定的manifest-branch

注意:對於所有其餘的Repo命令,當前工作目錄必須是.repo/的父目錄或父目錄的子目錄。

同步

682

下載新的更改並更新您本地環境中的工作文件,實質上完成了所有Git存儲庫中的git fetch 。如果運行不帶參數的repo sync ,它將同步所有項目的文件。

當您運行repo sync ,將發生以下情況:

  • 如果項目從未同步過,則repo sync等同於git clone 。遠程存儲庫中的所有分支都將復製到本地項目目錄。

  • 如果項目之前已經同步過,則repo sync等效於:

    git remote update
    git rebase origin/branch
    

    其中branch是本地項目目錄中當前已簽出的分支。如果本地分支未跟踪遠程存儲庫中的分支,則該項目不會發生同步。

  • 如果Git rebase操作導致合併衝突,請使用常規Git命令(例如git rebase --continue )解決衝突。

成功運行repo sync ,指定項目中的代碼是最新的,並與遠程存儲庫中的代碼同步。

這是關鍵選項。有關更多信息,請參見repo help sync

  • -c :僅從服務器獲取當前清單分支。

  • -d :將指定的項目切換回清單修訂。如果項目當前在主題分支上,但暫時需要清單修訂,這將很有幫助。

  • -f :即使項目失敗,也要繼續同步其他項目。

  • -j threadcount :在線程之間拆分同步,以加快完成速度。確保不要通過為其他任務保留一些CPU來壓倒計算機。要查看可用CPU的數量,請首先運行: nproc --all

  • -q :通過抑制狀態消息來安靜地運行。

  • -s :同步到當前清單中的manifest-server元素指定的已知良好構建。

上載

repo upload [project-list]

對於指定的項目,存儲庫會將本地分支與上次存儲庫同步期間更新的遠程分支進行比較。回購提示您選擇一個或多個尚未上載以供審核的分支。

然後,所選分支上的所有提交都通過HTTPS連接傳輸到Gerrit。您需要配置HTTPS密碼以啟用上傳授權。訪問密碼生成器以生成新的用戶名/密碼對,以通過HTTPS使用。

當Gerrit通過其服務器接收對像數據時,它會將每次提交變為更改,以便審閱者可以評論特定的提交。要將多個檢查點提交合併為一個提交,請在運行上傳之前使用git rebase -i

如果運行不帶參數的repo upload ,它將搜索所有項目以查找要上載的更改。

要在更改上傳後對其進行編輯,請使用git rebase -igit commit --amend類的工具來更新本地提交。編輯完成後:

  • 驗證更新的分支是當前簽出的分支。
  • 對於系列中的每個提交,請在方括號內輸入Gerrit更改ID:
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

上傳完成後,更改將具有其他補丁程序集。

如果只想上傳當前已簽出的Git分支,請使用--current-branch標誌(或--cbr--cbr )。

差異

repo diff [project-list]

使用git diff顯示提交和工作樹之間的顯著變化。

下載

repo download target change

從檢查系統下載指定的更改,並將其顯示在項目的本地工作目錄中。

例如,要將更改23823下載到您的platform / build目錄中:

repo download platform/build 23823

運行repo sync會刪除通過repo download檢索到的所有提交。或者,您可以使用git checkout m/master遠程分支。

注意:全球所有服務器的複制都存在延遲,因此,在Gerrit上的Web上可見更改與repo download可以為所有用戶找到更改之間,會有一點鏡像延遲。

對所有人

repo forall [project-list] -c command

在每個項目中執行給定的shell命令。 repo forall提供了以下附加環境變量:

  • REPO_PROJECT設置為項目的唯一名稱。

  • REPO_PATH是相對於客戶端根目錄的路徑。

  • REPO_REMOTE是清單中遠程系統的名稱。

  • REPO_LREV是清單中修訂的名稱,翻譯為本地跟踪分支。如果您需要將清單修訂傳遞給本地執行的Git命令,請使用此選項。

  • REPO_RREV是清單中修訂的名稱,與清單中的編寫完全相同。

選項:

  • -c :要執行的命令和參數。該命令通過/bin/sh及其後的所有參數作為外殼位置參數傳遞。

  • -p :在輸出指定命令之前顯示項目標題。這是通過將管道綁定到命令的stdin,stdout和sterr流,並將所有輸出管道輸送到在單個尋呼機會話中顯示的連續流中來實現的。

  • -v :顯示命令寫入stderr的消息。

修剪

repo prune [project-list]

修剪(刪除)已經合併的主題。

開始

repo start
branch-name [project-list]

從清單中指定的修訂版開始,開始新的開發分支。

BRANCH_NAME參數提供了您要對項目進行的更改的簡短描述。如果您不知道,請考慮使用名稱default

project-list參數指定哪些項目參與此主題分支。

注意:當前工作目錄中項目的縮寫(。)。

狀態

repo status [project-list]

將工作樹與登台區域(索引)和指定的每個項目中該分支(HEAD)上的最新提交進行比較。顯示每個文件的摘要行,這三個狀態之間存在差異。

要僅查看當前分支的repo status ,請運行repo status 。狀態信息按項目列出。對於項目中的每個文件,使用兩個字母的代碼。

在第一列中,大寫字母表示暫存區與上次提交狀態的不同之處。

含義描述
-- 沒變 HEAD和索引相同
一個添加不在HEAD中,在索引中
中號改性在HEAD中,在索引中修改
d 已刪除在HEAD中,不在索引中
[R 更名不在HEAD中,路徑已在索引中更改
C 複製的不在HEAD中,從另一個索引中復制
Ť 模式變更 HEAD和索引中的內容相同,模式已更改
ü 未合併 HEAD和索引之間的衝突;所需的分辨率

在第二列中,小寫字母表示工作目錄與索引的區別。

含義描述
-- 新/未知不在索引中,在工作樹中
改性在索引中,在工作樹中,已修改
d 已刪除在索引中,不在工作樹中