有没有办法传递git filter-branch
正则表达式来从历史记录中永久删除文件/目录?
最佳答案
假设您想要执行索引过滤器(不需要更改您的工作树),您可以在所有提交上编写脚本,并且仅在 的输出上通过 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
关于git - 如何使用正则表达式 git filter-branch 来从历史记录中永久删除文件/目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607643/