背景
由于常年混迹Github
,所以在我电脑上有很多 clone 下的Git Repo
,而这些 repo 使用中生成的临时文件占用了大量空间。粗略看了下空间占用,居然有23G
。所以决定通过git clean
命令把每一个仓库清理一下。但是先进入每一个仓库,然后执行上面的命令就太 low 了,于是决定写个脚本处理一下。最近 nodejs 用的多一些,因此决定用 nodejs 来处理这件事。
工作环境
我的电脑是 mac 系统,理论上这个解决方案也可以在 linux 和 win10 中的 linux 子系统中运行。
方案
解决思路
鉴于每个Git Repo
的根目录中,都有一个名字叫做.git
的文件夹。因此可以通过查找.git
文件夹的位置,间接知道Git Repo
的位置,类似下面这种:
1 | /a/b/repo1/.git |
之后进入每个Git Repo
,执行 git clean
命令。
工具
NodeJs
中的child_process
。用于在 js 中执行unix
系统的命令行程序NodeJs
中的path
。用于处理路径find
命令。用于查找文件位置cd
命令。用于切换执行unix
命令的目录位置git
命令。 用于执行git clean
命令
步骤
1.找出所有.git
文件夹的位置
通过child_process
, 执行find . -type d -name .git
命令,。
1 | const process = require("child_process"); |
最后得到的dirs
是一个字符串数组,包含所有找到的.git
文件夹的位置,类似['/a/b/repo1/.git', '/b/c/repo2/.git']
2.获得仓库位置
通过path
获得.git
目录所在Git Repo
的路径
1 | for (const i of dirs) { |
现在得到的repo
变量中存储的就是Git Repo
的路径
3.清理仓库
切换到repo
目录,执行git clean -xdf
命令
1 | const cleanRes = process.exec( |
结语
思路和解决方案都比较简单,本文仅作为记录。完整代码被我放到这里了。想要使用的同学可以把这个文件放到你要清理的文件夹下,然后用node
执行即可。