我上传了一个字体文件,我没有权利分发到git hub几个更新前。我有一个相对不活跃的存储库,如果有必要,我有能力通知我的所有成员。我试过几种解决办法。我需要删除目录中一个名为Resources\Video\%font%.ttf的文件,其中%font%是该字体的普通、斜体和粗体版本的名称。我使用什么命令?
Resources\Video\%font%.ttf
%font%
vfh0ocws1#
在这种情况下,您可以使用Git Filter Branch命令和--tree-filter选项。语法为git filter-branch --tree-filter <command> ...
--tree-filter
git filter-branch --tree-filter <command> ...
git filter-branch --tree-filter 'rm -f Resources\Video\%font%.ttf' -- --all
编辑更新
请注意,git filter-branch--index-filter比--tree-filter快得多
git filter-branch
--index-filter
git filter-branch --index-filter 'rm -f Resources\Video\%font%.ttf' -- --all
在Windows中必须使用/而不是\。
/
\
< command >指定任何shell命令。--tree-filter: Git会将每个提交都检查到工作目录,运行你的命令,然后重新提交。--index-filter: Git更新git历史记录,而不是工作目录。--all:过滤所有分支中的所有提交。
< command >
--tree-filter:
--index-filter:
--all:
**注意:**请检查您的文件路径,因为我不确定文件路径
希望这对你有帮助。
yacmzcpb2#
根据官方的git文档,强烈建议不要使用git filter-branch,建议使用git-filter-repo命令。Install it(通过包,或使用包python3-pip,执行pip install:pip install git-filter-repo)。清除filename的命令是:
pip install git-filter-repo
filename
git filter-repo --invert-paths --path filename
--invert-paths选项表示排除,不包括以下路径。
--invert-paths
8tntrjer3#
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Resources\Video\%font%.ttf' HEAD可以比--tree-filter快很多(最多100倍),因为它只更新git历史,而不是工作目录。参考:What is the difference between "--tree-filter" and "--index-filter" in the "git filter-branch"?参考:https://git-scm.com/docs/git-filter-branch
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Resources\Video\%font%.ttf' HEAD
3条答案
按热度按时间vfh0ocws1#
在这种情况下,您可以使用Git Filter Branch命令和
--tree-filter
选项。语法为
git filter-branch --tree-filter <command> ...
编辑更新
请注意,
git filter-branch
--index-filter
比--tree-filter
快得多在Windows中必须使用
/
而不是\
。< command >
指定任何shell命令。--tree-filter:
Git会将每个提交都检查到工作目录,运行你的命令,然后重新提交。--index-filter:
Git更新git历史记录,而不是工作目录。--all:
过滤所有分支中的所有提交。**注意:**请检查您的文件路径,因为我不确定文件路径
希望这对你有帮助。
yacmzcpb2#
根据官方的git文档,强烈建议不要使用
git filter-branch
,建议使用git-filter-repo命令。Install it(通过包,或使用包python3-pip,执行pip install:
pip install git-filter-repo
)。清除
filename
的命令是:--invert-paths
选项表示排除,不包括以下路径。8tntrjer3#
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Resources\Video\%font%.ttf' HEAD
可以比--tree-filter
快很多(最多100倍),因为它只更新git历史,而不是工作目录。参考:What is the difference between "--tree-filter" and "--index-filter" in the "git filter-branch"?
参考:https://git-scm.com/docs/git-filter-branch