1. repo 倉庫內文件清理
|
解釋:
repo forall -c 'git clean -dfx'
:
repo forall
?是一個用于在所有項目中執行命令的工具。-c
?后面跟的是要執行的命令。git clean -dfx
?的意思是:-d
:移除未跟蹤的目錄。-f
:強制執行清理(需要這個選項才能刪除文件)。-x
:刪除所有未跟蹤的文件,包括被?.gitignore
?忽略的文件。
- 綜上,這個命令會刪除所有未跟蹤的文件和目錄,確保項目干凈。
repo forall -c 'git reset --hard'
:
git reset --hard
?會重置當前分支到最新的提交狀態,并且會丟棄所有未提交的更改。- 這意味著所有本地的更改(包括已暫存和未暫存的)都將被刪除,工作目錄會恢復到與最后一次提交相同的狀態。
總結:
這兩個命令的整體作用是將所有項目恢復到最新的提交狀態,并清理所有未跟蹤的文件和目錄。
2. repo 倉庫外文件清理
|
解釋:
-
repo status -o
:- 這個命令列出當前工作目錄下的未跟蹤對象,顯示未跟蹤的文件和目錄。
-
sed -n '/Objects not within a project/,/^\$/p'
:-n
?選項告訴?sed
?只打印符合條件的行。'/Objects not within a project/,/^\$/'
?指定了一個范圍,從包含 "Objects not within a project" 的行開始,到第一個空行(即?^\$
)為止。p
?命令打印這個范圍內的所有行。
-
sed '1d'
:1d
?表示刪除第一行。由于第一行是 "Objects not within a project (orphans)",這一步將其移除。
-
sed -r 's#[[:space:]]+--[[:space:]]+##'
:-r
?選項啟用擴展正則表達式。s#[[:space:]]+--[[:space:]]+##
?表示替換--和前后多個空格為空,只保留文件和目錄名。
-
xargs rm -rf
:如不刪除可不執行此段xargs
?將上一步的輸出(即要刪除的文件和目錄名)傳遞給?rm -rf
?命令。rm -rf
?是一個危險的命令,會強制刪除指定的文件和目錄,不會提示確認。
總結:
這個命令鏈的整體作用是:
- 從?
repo status -o
?的輸出中提取未跟蹤的對象,并刪除這些對象,確保只刪除對象而不包括標題行。 - 執行過此命令后最好再執行下repo sync,目前測試下來manifest文件中的軟硬鏈接文件會被刪除