我一直在尝试使用git filter-branch修改脚本,将一个git存储库按指定子文件夹分成多个新目录。新目录应仅包含修改其对应子文件夹的提交记录,因此使用了filter-branch。我的目标是为了提高性能而将filter-branch更改为filter-repo。
它以前会创建一个新分支$ branch,然后使用以下命令:
除了一个(重要)问题之外,它运行得很好:当将所有内容推送到新存储库时,标记与主原始存储库相同,这意味着它们有太多的内容(和提交),而不是它们应该具有的内容。就像标记根本没有被重写一样。 我尝试了一些不同的方法,比如--tag-rename,但都没有成功。 如果您能提供任何帮助,指示我应该做什么或关于我可能做错的事情的指示,我将不胜感激。谢谢 :)
它以前会创建一个新分支$ branch,然后使用以下命令:
git filter-branch -f --prune-empty --tag-name-filter cat --subdirectory-filter $subdir $branch --tags
接着执行此命令,将分支推送到相应的存储库(名称相同),以及重写的标签:
git checkout $branch
ssh-agent bash -c "ssh-add ../$privateKeyName; git push $branch $branch:$branchToExtract --tags -f"
($branchToExtract不重要,您可以将其视为“主”)
因此,如前所述,我一直在尝试使用filter-repo而不是filter-branch。这是我一直在使用的命令:
git filter-repo -f --prune-empty always --subdirectory-filter $subdir --refs $branch
除了一个(重要)问题之外,它运行得很好:当将所有内容推送到新存储库时,标记与主原始存储库相同,这意味着它们有太多的内容(和提交),而不是它们应该具有的内容。就像标记根本没有被重写一样。 我尝试了一些不同的方法,比如--tag-rename,但都没有成功。 如果您能提供任何帮助,指示我应该做什么或关于我可能做错的事情的指示,我将不胜感激。谢谢 :)
--refs $branch
,你试过在这里列出所有的标签吗?还是总是在一个新的克隆上工作并重写整个仓库? - undefined