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