2011-10-11 117 views
5

所以我创建了一个Git仓库,成立了我的工作拷贝一些标签和遥控器,然后推到库我的服务器与如何克隆git存储库并保留远程控制?

git push --mirror my.remote.repository 

据称,使用git推--mirror也将推动我设置的遥控器。

但是,如果我这样做

git clone my.remote.repository 

我没有看到,我最初创建的遥控器。我是否需要特殊的语法来克隆遥控器?镜子没有实际发送遥控器吗?我哪里做错了?

编辑:也许我的工作流程很奇怪:这是我正在努力完成的。 回购最初是另一个项目(A)的克隆,我不控制,我已将远程更名为“上游”。我创建了一个新的'主'分支,并打算对我的工作副本进行更改并部署它们。我偶尔会从原始存储库(A)中提取更新(切换到原始未修改的分支并从上游提取)。但是,我正在与其他人一起工作,他们都应该能够做到这一点。目标是通过初始仓库(A)中的错误修复来更新主分支,并将更改提交到“主”分支。因此,当开发人员克隆存储库时,他们应该继承上游分支,以便他们实际执行此操作。总之,我试图使用“上游”分支来从不同项目中获取更新。我没有使用子模块来做到这一点,因为“上游”分支实际上负责存储库中95%的文件,如果没有来自上游的文件,整个项目就没有意义。

+0

也许我错过了一些东西,但是如果听起来好像你在本地有一个分支(称为'foo',比如说),那么你从'upstream/master'更新。你为什么不把这个分支(以及你的'master')推到一个其他人可以克隆的裸仓库?或者让他们直接克隆你的仓库?在任何情况下,他们都会在任何阶段将这些分支作为远程跟踪分支而不使用“--mirror”。 –

+0

@ mark-longair对,但那些远程分支正在跟踪我们自己的服务器,而不是他们最初来自的上游服务器。这虽然有点用处,但确实意味着其他人不会(很容易)从上游获取更新(只读),然后将它们提交到我们自己的服务器(原始)。 – Zxaos

+0

他们可以做到这一点 - 他们只需要添加一个额外的远程引用其他存储库。 –

回答

2

(这不是典型的工作流程,但我会尽量尝试回答直接的问题...)

git push --mirror将确实推动远程跟踪分支同名遥控器上。但是,在克隆时,默认情况下只会获得refs/heads下的参考号,它们映射到refs/remotes/origin/下的远程跟踪分支。您也可以使用git clone --mirror进行克隆以从远程获得远程跟踪分支,但该选项意味着--bare

如果你想要一个工作树的存储库,其分支是从远程镜像的,你总是可以改变配置选项remote.origin.fetch中的refspec来获取每个ref到同一个名字,但我怀疑真正的问题是您正在使用非常不寻常的工作流程。

顺便说一句,即使你使用这些技术之一来改变被取出裁判的映射,这不会克隆遥控器自己,这是在仓库中的混帐配置定义 - git clone并不克隆任何从.git/config,这被认为是包含私人信息。

+0

我添加了一些关于我的工作流程的信息,以防止这个问题变得更有意义。 – Zxaos

+0

所以这看起来像这样做的方式。不过,我应该注意到,我最终只是抛弃了这个工作流程,而是使用了子模块。 – Zxaos