【发布时间】:2020-07-27 08:06:55
【问题描述】:
我一直在尝试使用 git filter-branch 修改脚本,该脚本采用 git 存储库并通过指定此目录的子文件夹将其分隔到多个新目录中。新目录应该只包含修改其相应子文件夹的提交,因此使用过滤器分支。 我的目标是通过 filter-repo 更改 filter-branch 以获得更好的性能。
它曾经创建一个新的分支 $branch 然后使用这个命令:
git filter-branch -f --prune-empty --tag-name-filter cat --subdirectory-filter $subdir $branch --tags
然后将分支推送到其对应的repo(具有相同名称)以及重写的标签:
git checkout $branch
ssh-agent bash -c "ssh-add ../$privateKeyName; git push $branch $branch:$branchToExtract --tags -f"
($branchToExtract 不重要,你可以认为它是“master”)
所以,如前所述,我一直在尝试使用 filter-repo 而不是 filter-branch。这是我一直在使用的命令:
git filter-repo -f --prune-empty always --subdirectory-filter $subdir --refs $branch
而且效果很好......除了一件(重要的)事情:当将所有内容推送到新的仓库时,标签与主要的原始仓库相同,这意味着它们有太多的内容(和提交)而不是他们应该拥有的。就像标签根本没有被重写一样。 我一直在尝试一些不同的东西,比如 --tag-rename 但无济于事。
任何关于我应该做什么的帮助或关于我可能做错了什么的指示将不胜感激。谢谢:)
【问题讨论】:
-
您使用
--refs $branch,您是否尝试在此处列出所有标签?或者总是在一个新的克隆上工作并重写所有的 repo