彻底删除本地 Git 历史记录 - 文件或目录
彻底删除本地 Git 历史记录 - 文件或目录
使用 git filter-branch 命令可以从本地 Git 历史记录中彻底删除特定文件或目录,包括所有包含它们的提交记录。
命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <file/dir>' --prune-empty --tag-name-filter cat -- --all
说明:
<file/dir>: 要删除的文件或目录的路径,可以使用通配符进行匹配。--force: 强制执行命令,即使存在冲突。--index-filter: 用于修改索引文件,git rm命令将从索引中删除指定文件或目录。--ignore-unmatch: 忽略未匹配的文件或目录。--prune-empty: 删除空提交记录。--tag-name-filter cat: 保留标签。--all: 针对所有分支执行命令。
重要注意事项:
- 该命令会修改 Git 历史记录,请确保在执行之前已备份好本地 Git 仓库。
- 执行命令后,会生成新的提交记录,原有提交记录将被删除。
- 如果该命令在公共仓库中执行,可能会影响其他协作者。
示例:
删除 tmp 文件夹和所有相关提交记录:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch tmp' --prune-empty --tag-name-filter cat -- --all
建议:
- 在使用该命令之前,请仔细阅读 Git 文档,确保理解其工作原理和风险。
- 如果需要保留历史记录,可以使用
git filter-branch --prune-empty --tag-name-filter cat -- --all命令仅删除空提交记录。 - 对于大型仓库,使用该命令可能需要较长时间,请耐心等待。
原文地址: https://www.cveoy.top/t/topic/j9K1 著作权归作者所有。请勿转载和采集!