我需要分析整个历史记录中给定目录中某些文件的确切情况,并使用像git log the_directory
这样的东西还不够好。所以我虽然创建了一个只包含相关文件的分支。
我写了一个perl脚本remove-all-but-stuff
并验证它是否正常工作。最初,我认为只是删除文件就行,但后来我修复了它以使用
system qw(git rm -r --ignore-unmatch --quiet), @files
其中@files
包含在工作树中找到的不需要的目录和文件 - 这可能是个问题吗?
我创建了一个新分支并通过
过滤了它git filter-branch --tree-filter remove-all-but-stuff my-branch
并且最后文件消失了,但这发生在最后一次提交中。历史记录包含对不应存在的文件的更改。
我正在使用git版本2.3.5。知道我做错了吗?
现在我甚至在没有查看是否存在的情况下添加了@files
的一些路径。有些东西发生了变化(Ref'refs / heads / my-branch'被重写了),但不需要的文件(甚至在添加的路径下面)仍在历史中。
答案 0 :(得分:0)
这是相当愚蠢的,但这是我的错误。 1 我忽略了一个(隐藏的)错误消息。问题是
error: the following files have changes staged in the index:
(隐藏在一行的末尾,后跟可能有数百个文件)。我想,我忘记了-f
修饰符(也忘记了在出错时挽救)。
实际上,似乎没有理由将git rm
代替/bin/rm
与--tree-filter
一起使用。
1我考虑过删除我的问题,但是,这可能会节省一些时间。