git本地缓存需按类型区分清除:暂存区用git reset head,未跟踪文件用git clean -n/-f/-fd/-fdx,凭据用git credential-manager reject/uninstall,索引重置用git rm -r --cached .,无万能命令。

Git 本地缓存不是单一体,得先分清你到底想清什么:是暂存区(staging)里的文件、未跟踪的垃圾文件、凭据密码、还是整个索引(index)状态?用错命令可能丢修改、删代码、甚至推错历史。
清除暂存区文件但保留工作目录修改
这是最常被误操作的场景:你 git add 了几个文件,发现加错了,又不想丢掉这些改动——此时不能用 git reset --hard,它会直接抹掉修改。
-
git reset HEAD <file></file>:只把指定文件从暂存区撤下,工作目录内容不变 -
git reset HEAD:清空整个暂存区,所有已add的文件都退回“已修改未暂存”状态 - 如果文件已被
git rm --cached过,再git reset就无效了——因为文件已不在暂存区,也不在版本控制中
彻底清理未跟踪文件(比如 build/、node_modules/、.log)
git clean 是唯一专干这事的命令,但它默认是“哑巴模式”,不加参数根本不动手,也绝不删 .gitignore 里写的文件。
抓取指定 GitHub用户的 Stars 项目,生成标准化中文 Markdown 报告。用户提及「分析 GitHub stars」「导出收藏项目」「汇总 GitHub 星标」「生成 stars 报告」或粘贴含 ?tab=stars 的链接时触发。执行通过 bash...
-
git clean -n:先预览——列出所有将被删除的未跟踪文件和目录 -
git clean -f:真正删除未跟踪文件(注意:-f是强制,没它啥都不干) -
git clean -fd:加-d才删未跟踪的目录(比如dist/) -
git clean -fdx:加-x连.gitignore里声明的文件也删(慎用!比如你.gitignore里写了*.tmp,这个命令真会删)
重置整个暂存区 + 工作目录到上一次提交
这相当于“一键回滚所有未提交变更”,适合你改乱了、想从头来过。但注意:它不碰未跟踪文件,git clean 才管那些。
-
git reset --hard HEAD:丢弃所有已暂存 + 未暂存的修改,工作目录完全回到HEAD状态 -
git reset --hard origin/main:强制对齐远程分支(本地有未推送提交时会丢掉它们) - 执行前务必确认:运行
git status和git log --oneline -5看一眼当前状态,别在没 stash 的情况下硬重置
删掉 Git 缓存的用户名密码(认证失败反复弹窗时)
Windows 上常见问题:输错一次密码,Git 就把它记进 Windows 凭据管理器,之后一直用错的凭据重试,死循环。
- 命令行执行
git credential-manager reject https://github.com(把域名换成你实际用的,如https://gitlab.example.com) - 或者直接运行
git credential-manager uninstall,卸载后下次操作会重新触发登录弹窗 - macOS/Linux 用户注意:
git config --global credential.helper cache或store的配置也要对应清理,比如删掉~/.git-credentials
最容易被忽略的一点:没有“一个命令清空所有缓存”的银弹。暂存区、未跟踪文件、凭据、索引文件(.git/index)、远程引用缓存……它们物理上分散、逻辑上独立。动手前,先 git status 看清楚你现在卡在哪一层。










