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文件中的软硬链接文件会被删除