我理解git push --mirror
会从源代码中删除目标中缺少的任何引用和分支(以及强制所有其他引用更新/创建)。
我想要一个类似的行为,但在目的地有一个子“命名空间”..它用于将旧的仓库托管迁移到一个新仓库(涉及两个仓库可能都更新的迁移期):让我说我希望镜像发生在refs / old /*.
下我注意到--mirror
不允许refspecs,但这似乎完成了大部分工作:
git --git-dir oldrepo push newrepo +refs/*:refs/old/*
因此,如果在oldrepo中创建了分支B,则上面会将其推送为“refs / old / heads / B”,并强制执行非FF更新。
但是,在从oldrepo删除X之后,它不会删除“refs / old / head / X” - 我想这是--mirror
等价的缺失部分。
那么有什么技巧可以实现吗? --mirror
没有采取refspec的原因是什么?