有没有办法通过git filter-branch
正则表达式从历史记录中永久删除文件/目录?
问问题
1456 次
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 回答