我使用敏感信息向git存储库old-project
做了一些错误的提交,其中包含大量未跟踪的数据和输出文件。此repo是从上游存储库project
克隆的,该存储库不包含数据文件。我使用BFG Repo Cleaner
清除了project
repo历史记录中的错误提交。
现在,我想制作一个已清理的new-project
回购的新克隆project
,即
git clone git://example.com/project new-project
然后将数据文件从old-project
移动到new-project
并保留其目录结构。
我最初的想法是
cd old-project
git ls-files --others --exclude-standard
然后mv
生成xargs
的文件,但我想知道是否有适当的'这样做的方式。
感谢。
答案 0 :(得分:0)
您可以使用git filter-branch
对每次提交执行操作并删除不再需要的文件。如果您有一个结构为oldstuff/
和newstuff/
的存储库,则可以运行:
git filter-branch --subdirectory-filter newstuff -- --all
您将留下一个存储库,其中重写标记和分支,以便只存在newstuff/
中出现的文件。
如果要删除某些文件类型(例如*.log
),则可以执行类似的命令:
git filter-branch --tree-filter 'rm -f *.log' -- --all
如果您在后续级别中有日志文件,则需要适当调整命令,例如:与xargs
。