Repo 通過簡化跨多個存儲庫的工作來補充 Git。請參閱源代碼控制工具用於回購和Git之間的關係的解釋。有關回購的詳細信息,請參閱回購README 。
回購使用採用以下形式:
repo command options
可選元素顯示在方括號 [ ] 中。例如,許多命令採取project-list作為參數。您可以指定project-list作為名稱的列表或路徑本地源目錄中的項目清單:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
幫助
此頁面僅突出顯示關鍵選項。有關完整詳細信息,請參閱命令行幫助。安裝 Repo 後,您可以通過運行以下命令找到以所有命令摘要開頭的最新文檔:
repo help
您可以通過在 Repo 樹中運行此命令來查看有關任何命令的詳細信息:
repo help command
例如,下面的命令產生的對選項的描述和列表init
回購的參數,該參數初始化回購在當前目錄。 (參見初始化的詳細信息。)
repo help init
或者只查看可用選項的列表,運行:
repo command --help例如:
repo init --help
在裡面
repo init -u url [options]
在當前目錄中安裝 Repo。這將創建一個.repo/
使用Git倉庫的回購源代碼和標準的Android清單文件的目錄。
選項:
-
-u
:指定從中取回清單庫中的URL。常見的表現是在發現https://android.googlesource.com/platform/manifest
。 -
-m
:選擇庫中的清單文件。如果沒有選擇清單名稱,默認是default.xml
。 -
-b
:指定一個版本,也就是一個特定的manifest-branch 。
注:對於所有剩餘回購命令,當前工作目錄必須是的父目錄.repo/
或父目錄的子目錄。
同步
repo sync [project-list]
下載新的變化,並在本地環境更新的工作文件,基本完成git fetch
所有Git倉庫。如果您運行repo sync
不帶任何參數,它同步所有項目的文件。
當您運行repo sync
,這是發生了什麼:
如果項目從未同步,則
repo sync
相當於git clone
。遠程倉庫中的所有分支都複製到本地項目目錄中。如果該項目之前已經同步,則
repo sync
等效於:git remote update git rebase origin/branch
其中
branch
是在本地項目目錄當前簽出的分支。如果本地分支沒有跟踪遠程存儲庫中的分支,則項目不會發生同步。如果在Git的合併衝突變基操作的結果,使用普通的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]
對於指定的項目,Repo 將本地分支與上次 Repo 同步期間更新的遠程分支進行比較。 Repo 會提示您選擇一個或多個尚未上傳審核的分支。
然後,所選分支上的所有提交都通過 HTTPS 連接傳輸到 Gerrit。開啟上傳授權需要配置HTTPS密碼。訪問密碼生成器生成一個新的用戶名/密碼對使用通過HTTPS。
當 Gerrit 通過其服務器接收對像數據時,它會將每個提交轉換為更改,以便審查者可以對特定提交發表評論。為了幾個檢查站提交合併成一個單一的提交,使用git rebase -i
運行上傳前。
如果您運行repo upload
不帶任何參數,它會搜索所有的項目更改上傳。
他們一直在上傳後的編輯修改,使用像一個工具git rebase -i
或git 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
的簡稱)。
差異
repo diff [project-list]
展會之間的提交和使用工作樹未完成的更改git diff
。
下載
repo download target change
從審查系統下載指定的更改,並使其在項目的本地工作目錄中可用。
例如,下載變更23823到你的平台/ build目錄:
repo download platform/build 23823
運行repo sync
刪除所有提交檢索與repo download
。或者,您可以使用檢查出遠程分支git checkout m/master
。
注:有複製延遲於世界各地的服務器上,所以有當一個變化是在網絡上可見之間的輕微滯後鏡像格里特當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
:顯示信息的命令寫至標準錯誤。
修剪
repo prune [project-list]
修剪(刪除)已經合併的主題。
開始
repo start branch-name [project-list]
從清單中指定的修訂開始,開始一個新的開發分支。
該BRANCH_NAME
參數提供你正在努力使該項目改變的簡短說明。如果你不知道,可以考慮使用名稱default
。
該project-list
參數指定哪些項目參與這個話題的分支。
注:(。)的時段是在當前工作目錄中的項目的簡寫。
地位
repo status [project-list]
將工作樹與每個指定項目中的暫存區(索引)和此分支 (HEAD) 上的最新提交進行比較。顯示這三種狀態之間存在差異的每個文件的摘要行。
看到的只是當前分支的狀態,運行repo status .
.狀態信息按項目列出。對於項目中的每個文件,使用兩個字母的代碼。
在第一列中,大寫字母表示暫存區與最後提交的狀態有何不同。
信 | 意義 | 描述 |
---|---|---|
—— | 沒變 | HEAD 和索引相同 |
一種 | 添加 | 不在 HEAD 中,在索引中 |
米 | 修改的 | 在 HEAD 中,在索引中修改 |
D | 已刪除 | 在 HEAD 中,不在索引中 |
電阻 | 重命名 | 不在 HEAD 中,索引中的路徑已更改 |
C | 已復制 | 不在 HEAD 中,從索引中的另一個複製而來 |
噸 | 模式改變 | HEAD 和 index 內容相同,模式改變 |
你 | 未合併 | HEAD 和索引之間的衝突;需要分辨率 |
在第二列中,小寫字母表示工作目錄與索引的不同之處。
信 | 意義 | 描述 |
---|---|---|
—— | 新的/未知的 | 不在索引中,在工作樹中 |
米 | 修改的 | 在索引中,在工作樹中,已修改 |
d | 已刪除 | 在索引中,不在工作樹中 |
處理回購錯誤
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
錯誤repo: error: no branches ready for upload
時,命令出現repo start
在會議開始時沒有運行。要恢復,您可以檢查提交 ID,啟動一個新分支,然後合併它。