如何从本地Git仓库移除已提交的文件
Git已提交.class文件的相关问题解答
1. 该.class文件是否会被Git追踪?
会。只要文件已经被提交到Git仓库,不管仓库是否关联远程,Git都会开始追踪它的变更记录。
2. 直接从仓库文件夹删除它能否将其移除?
不能。手动删除本地文件只是移除了工作区的文件,但Git的版本库(包括暂存区和历史提交记录)里依然保留这个文件的信息,后续若推送到远程仓库,其他人克隆时仍能看到该文件的历史痕迹。
3. 彻底移除的解决方法
方法一:移除当前版本及后续记录中的文件
- 若本地文件未删除,执行命令删除并让Git记录操作:
git rm filename.class - 若已手动删除本地文件,执行命令标记删除:
git add filename.class - 提交删除操作:
git commit -m "移除误提交的.class文件"
方法二:彻底清除所有历史提交中的该文件(谨慎使用)
如果需要让该文件从所有历史记录中彻底消失,可执行以下命令:
- 遍历所有提交,移除该文件:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch filename.class' --prune-empty --tag-name-filter cat -- --all - 清理Git生成的冗余引用和对象:
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdingit reflog expire --expire=now --allgit gc --prune=now --aggressive
注意:此方法会重写仓库的所有历史提交,若后续推送到远程仓库需强制推送(
git push --force),会影响其他协作人员的本地仓库,仅在本地仓库未共享时使用更安全。
内容的提问来源于stack exchange,提问作者Prickriti
相关产品推荐
相关产品推荐

