2

有没有办法通过git filter-branch正则表达式从历史记录中永久删除文件/目录?

4

1 回答 1

3

假设你想做一个索引过滤器(它不需要改变你的工作树),你可以在所有提交上编写脚本,并且只通过 sed、egrep 或 grep 在git ls-files.

git ls-files --cached | \
sed 's/weirdprefix\(pattern\)/git reset HEAD weirdprefix\1/g' | \ 
xargs -i{} sh -c '{}'

(这是您将在 filter-branch 命令中提供的脚本)

这是文档中的一个示例(http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html):

git filter-branch --index-filter \
        'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
                GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
         mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
于 2012-09-26T18:57:37.757 回答