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