我正在重新安装我的操作系统。我的计算机上有数千个存储库。我有一种感觉,我在一些未提交和/或推送的代码库中进行了一些更改。
从我的 Debian PC 上的 bash shell 中,找到尚未提交/推送到其遥控器的更改列表并决定是否要保留更改的最佳方法是什么?
我正在重新安装我的操作系统。我的计算机上有数千个存储库。我有一种感觉,我在一些未提交和/或推送的代码库中进行了一些更改。
从我的 Debian PC 上的 bash shell 中,找到尚未提交/推送到其遥控器的更改列表并决定是否要保留更改的最佳方法是什么?
你可能喜欢 Ferry Boender 的项目 multi-git-status。
https://github.com/fboender/multi-git-status。
“在多个 Git 存储库中显示未提交、未跟踪和未推送的更改。”
我假设找到每个 repo 并git status
在每个 repo 中运行足以满足您的需求。在这种情况下,以下可能是您的起点:
find / -name "*.git" -type d -print0 | xargs -0 -L 1 -i% bash -c "cd %/..; pwd; git status -s -uno"
find
遍历您的文件系统,从/
(您可能希望将其限制为可能~
)开始,搜索 .git 目录。输出(以 null 分隔以处理有趣的文件名)通过管道传输到 xargs,xargscd
发送到每个 repo,打印pwd
git-status 和短格式,而不列出未跟踪的文件。
上一个答案发现未提交,但未发现未推送的提交。
这将找到:
find / -name "*.git" -type d -print0 | xargs -0 -L 1 -i% bash -c "cd %/..; pwd; git status -s -uno; git cherry -v 2>/dev/null"
git cherry
显示未推送更改的 SHA1;-v
添加提交评论;并且错误重定向抑制了缺少上游的 repos 的嘈杂输出。