从裸仓库进行GIT拉取

4
我有一个使用“git svn”从子版本库设置的GIT存储库A。我克隆了一个名为B的A副本,其中B是一个裸仓库(git clone --bare)。我从B克隆了C,对C进行操作,并定期将更改推送到B(我制作B时的原因是裸仓库)。现在,当我想要从子版本库中获取最新更新时,我在repo A上运行“git svn rebase”。如何将这些更新从A拉到B?移动到B并执行“git pull”会导致错误-“fatal: /usr/local/git-1.7.0/libexec/git-core/git-pull cannot be used without a working tree.”。正确的方式是如何将更新从A移动到B?
1个回答

3

由于B是裸仓库,您可能想要将A中的更改推送到B。

您所描述的似乎是大量地进行推送和拉取而没有明显的好处。通常情况下,您会通过直接在使用git svn clone创建的存储库中工作来使用git-svn。是否有特定原因导致您创建了所有这些额外的存储库?


仓库A必须驻留在一个定期备份的系统上。我的开发机与这个备份系统不同。因此,至少需要两个仓库副本。我保留了中间的裸仓库B,因为我想要定期测试Subversion代码和我的新更改的代码。因此,在那个时候,我选择了拥有两个单独的仓库A和B。也许可以通过分支来实现这一点,但这是我做出的选择。 - Aleph
1
@Aleph:Subversion仓库是否仍然存在,或者你停止使用它并将仓库转换为Git(在repo A中)?如果Subversion仓库仍然存在,我不明白为什么A必须存在,你可以在开发机器上只需执行git svn clone。如果Subversion仓库不再存在,而A现在是主仓库,则应将repo A转换为裸仓库,以便您可以将代码推送到其中。 - Greg Hewgill
拥有这些存储库是有好处的。如果您有多个git用户必须与SVN一起工作,能够从B克隆和拉取最新更改极大地加快了工作速度。A是所谓的“获取”存储库。该策略在此处描述:https://dev59.com/VXI-5IYBdhLWcg3wZ3UR 答案是正确的。您应该从A推送到B。 - Thomas Ferris Nicolaisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接