我需要分析整个历史中给定目录中的某些文件到底发生了什么,并且使用像git log the_directory
这样的东西不够好。所以我尽管我会创建一个只包含相关文件的分支。git filter-branch困惑
我写了一个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'被重写),但不想要的文件(甚至低于添加的路径)仍然在历史中。
我只是在这里离开这里:git gui blame somefile.txt提供了一个GUI呈现文件和所有修改的来源。您可以通过单击与每行相关的提交的散列来浏览文件的历史记录。这是深入了解文件历史的最佳方法(imo)。 –
@FélixCantournet我的问题是一堆文件和其中的许多变化(只有两个重命名)。在命令行中指定它们是一件很痛苦的事情,因为名称和类似犯罪中有空白的文件。过滤之后我得到的好多了。 – maaartinus