将 git repo 镜像到新分支

问题描述

我想将我的一个存储库镜像到一个私有存储库中以进行一些非公开更改,但仍然从公共存储库获取更新。 普通镜像的问题是,每次我更新私有仓库时,我的更改都会被删除。 有没有办法解决这个问题?

我的想法是让它像这样:

回购 A 是公开的,回购 B 是私有的。 我的私有仓库有分支 main、repoA、我的修复。 现在我想将 repo A 镜像到 repo B 分支 repoA。

但这也破坏了我每次尝试更新时修复的分支。

解决方法

您不想使用 --mirror。使用该选项就是您遇到问题的原因。 --mirror 选项会强制执行您所看到和不想要的行为。当您从原始存储库更新时,它会导致您的更改被炸毁。仅当您希望副本与原始副本(更新后)完全不同时才使用 --mirror

在您的情况下,您想使用 --bare 代替,因为它将提供您想要的 --mirror 行为的一部分,即只创建底层存储库的副本而没有工作目录。但与 --mirror 不同的是,当从原始副本更新副本时,--bare 不会导致对副本的未来更改丢失。如果您了解没有行为改变标志的直接“克隆”的作用,那么您就知道 --bare 的作用。 --bare 标志仅影响 repo 在磁盘上采用的形式。它不会改变有关如何在存储库之间应用更新的任何内容。