FEATURED · 精选文章

first-contributions 新手实战:用 `git rm --cached` 将文件从 Git 跟踪中移除并保留本地副本

发布时间 / 2026/9/19 21:44:28
来源 / 创域科博编辑部
栏目 / 资讯中心
first-contributions 新手实战:用 `git rm --cached` 将文件从 Git 跟踪中移除并保留本地副本 first-contributions 新手实战用git rm --cached将文件从 Git 跟踪中移除并保留本地副本【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本篇技术指南以 first-contributions 仓库中的多语言 Git 进阶教程 removing-a-file.ua.md及其英文原版 removing-a-file.md为蓝本面向参与开源贡献的新手系统讲解「从 Git 中移除文件但保留本地副本」这一高频操作你将掌握git rm --cached的完整用法、底层原理、批量与通配符技巧以及它和.gitignore、git reset等相邻命令的配合方式避免在真实仓库中误删文件。为什么需要「只取消跟踪、不删除文件」在 first-contributions 的 Git 工作流进阶索引 中removing-a-file.md被定位为「提交前如何从本地仓库移除文件」的入门指南。日常开发中你会遇到这些典型场景误把本地配置文件如包含密钥的.env提交进了仓库希望 Git 不再跟踪它但文件还要留在磁盘上继续使用某些构建产物、日志文件被提交后希望它们只存在于本地、不进入版本库后续准备把文件加入.gitignore忽略规则但该文件此前已被跟踪需要先解除跟踪。核心思路是解除 Git 对文件的跟踪untrack而不是从文件系统中删除文件。这与「彻底删除文件」是两种截然不同的操作后果差异极大务必区分。核心命令git rm file --cached乌克兰语文档给出的核心命令为git rm file --cached中文版教程 removing-a-file.zh-cn.md 给出了完全一致的命令。命令各组成部分的含义如下组成含义git rmGit 内置的移除命令用于从索引暂存区和/或工作区移除文件file要解除跟踪的文件路径如file1.js--cached关键标志只从暂存区/索引移除不触碰工作区中的实体文件执行后 Git 会返回类似rm file1.js的输出此时文件已经从暂存区中移除但你的工作目录中依然能看到并正常使用它。为什么--cached是关键乌克兰语文档特别强调--cached标志决定了文件是「仅脱离版本控制」还是「连同磁盘文件一起删除」。# 只解除跟踪保留本地文件推荐符合本文场景 git rm file1.js --cached # 不带 --cached文件会同时从仓库和本地文件系统被删除危险 git rm file1.js不带--cached时git rm会同时删除暂存区中的索引条目与工作区中的实体文件且该删除会进入暂存区等待你提交后生效。因此如果你的目标是「文件还在只是 Git 不管它」--cached是绝对不可省略的。命令执行后发生了什么从文档的「So what happened?」一节可以看出git rm file --cached产生的效果包含两个层面版本库层面Git 不再跟踪该文件的后续变更。对 Git 而言这个文件如同被删除了一样——它从索引中被移除在下一次提交的快照中将不复存在git status也会把这次移除显示为待提交的变更。文件系统层面文件依然静静地躺在原来的目录中。你可以去定位它会发现内容完好无损。这种「Git 视角已删除、磁盘视角仍存在」的双重状态正是--cached的独特性所在也是它与git rm不带标志最本质的区别。提交并推送到远程仓库完成全链路移除解除跟踪只是本地暂存区状态的改变要让远端仓库也「遗忘」这个文件还需要完成提交与推送两步。乌克兰语文档给出的示例为git commit -m Remove file1.js git push origin master英文原版 removing-a-file.md 则写作git commit -m Remove file1.js git push origin main需要注意推送的目标分支名取决于你仓库的默认分支与当前工作分支main与master只是不同仓库的命名习惯英文原版明确提示「或你正在工作的任意分支」。实际使用时请用git branch或git status确认当前分支名再执行对应推送git commit -m Remove file1.js git push origin 当前分支名推送成功后远程仓库中的该文件会被移除但由于我们使用了--cached所有协作者的本地工作目录中该文件都不会被 Git 强制删除这与普通删除文件的行为不同。批量移除一条命令处理多个文件需要一次性解除多个文件的跟踪时无需逐条执行命令把它们全部列在同一行即可git rm file1.js file2.js file3.js --cached这条命令会把file1.js、file2.js、file3.js一并从 Git 跟踪中移除而三个文件都保留在本地。逐个文件分别执行git rm --cached也能达到同样效果但合并成一条命令更高效、更易读也便于在提交信息中统一说明。通配符按文件名模式批量解除跟踪当需要处理的文件具有相近的命名模式时可以使用通配符*进行模式匹配。乌克兰语文档给出的示例是清除本地仓库中所有.txt文件git rm *.txt --cached执行后仓库中所有以.txt结尾的被跟踪文件都会被解除跟踪本地文件保留。通配符同样适用于其他模式例如# 清除所有临时文件 git rm *.tmp --cached # 清除指定子目录下的所有日志 git rm logs/*.log --cached提示使用通配符前建议先执行git status确认匹配范围避免误伤命名相近但需要保留跟踪的文件。与.gitignore的配合让文件从此不再被跟踪只执行一次git rm --cached并不能阻止 Git 在未来再次跟踪该文件——只要文件仍处于工作区且被git add它依然会回到版本库。仓库中的 creating-a-gitignore-file.md 明确指出「如果文件在加入.gitignore之前已经被提交你需要先把它从跟踪中移除」并给出了与本文完全一致的命令git rm --cached filename推荐的完整套路是「先解除跟踪、再纳入忽略规则、最后提交」在项目根目录创建或编辑.gitignore写入要忽略的规则如.env、node_modules/、*.log执行git rm --cached 文件解除已跟踪文件的跟踪提交并推送使仓库与远端同步生效。creating-a-gitignore-file.md还提供了另一种批量场景如果希望一次性把所有「已被忽略但仍在跟踪中」的文件全部解除跟踪可以使用git rm -r --cached . git add . git commit -m Updated .gitignore其中-r表示递归处理目录.表示当前目录下全部内容。如何撤销误操作后的补救执行git rm --cached之后、提交之前如果反悔了可以随时把文件重新加回暂存区。仓库的 creating-a-gitignore-file.md 给出了这一撤销手法git add filename如果误操作发生得更早例如已经git rm不带--cached删除了本地文件或对某次提交不满意可以参考仓库中的 undoing-a-commit.mdgit reset file可以把指定文件从暂存区移回工作区并保留改动而git reset --hard会连工作区改动一并丢弃——后者务必谨慎使用尤其不要在已推送到共享仓库的提交上执行。三个必须记住的注意事项结合乌克兰语文档的警告与上述相邻教程整理出以下易错点--cached不能漏漏掉它文件将从你的磁盘上被真正删除而不是仅解除跟踪推送分支要确认main与master因仓库而异推送前用git status/git branch确认当前分支配合.gitignore才长久仅git rm --cached是「一次性」操作配合忽略规则才能让文件永久远离版本库。本文档在 first-contributions 仓库中的位置本教程源于 first-contributions 开源新手引导项目项目介绍见 README.md的进阶材料体系英文原版docs/additional-material/git_workflow_scenarios/removing-a-file.md乌克兰语翻译docs/additional-material/translations/Ukrainian/removing-a-file.ua.md简体中文翻译docs/additional-material/translations/Chinese/removing-a-file.zh-cn.md进阶材料索引docs/additional-material/git_workflow_scenarios/additional-material.md关联教程.gitignore 详解、撤销本地提交该系列文档面向「第一次为开源项目提交贡献」的初学者设计removing-a-file是其中与日常协作最密切相关的一课——无论是清理误提交的敏感文件、整理仓库内容还是为.gitignore生效扫清障碍git rm --cached都是你应该掌握的第一把钥匙。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻