git从二度遥控器中取出

时间:2010-12-08 04:08:34

标签: git fetch

我有一个非常慢的网络链接到我的远程存储库(称之为repoSlow),我偶尔会将其提取到我的主开发仓库(称之为repo1)。

有时我将repo1克隆到另一个目录中的repo2进行测试,例如在其他分支上没有丢失repo1的状态(也涉及对象文件和库,因此一个简单的存储不会这样做。)

为了将repoSlow的状态变为repo2,我通常会将repo1,checkout和每个分支(我感兴趣)从repoSlow存储到repo1,然后将它们提取到repo2。

除了这是一个繁琐的程序和其他一些事实,我有时不想在repo1中合并。签出不同的本地分支名称将导致命名混乱。

实际上是否可以轻松直接地获取遥控器的遥控器?

我想更好的工作流程可能是将repoSlow克隆到裸(甚至镜像?)本地仓库并多次克隆那个,但为了更好地理解git,我保留了原来的问题。

2 个答案:

答案 0 :(得分:0)

你是对的,最好在本地克隆一个裸仓库作为你的集成点,然后从那里克隆你的repo1和repo2。

但是要回答你原来的问题,我不相信有办法直接取遥控器的遥控器;但是你可以在repo1克隆后将repoSlow添加为repo2中的远程。如果你这样做,它只需要从repoSlow中获取它没有从repo1克隆的东西,这应该比填充完整的历史快得多。

要执行此操作,只需在repo2中运行以下命令:

git remote add upstream git://example.com/path/to/repo/slow.git
git remote update

现在你应该在repo2中有两个遥控器; origin引用repo1,upstream(或任何你想称之为)指向你的repoSlow。

答案 1 :(得分:0)

您可以在repo2中进行如下配置:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        fetch = +refs/remotes/origin/*:refs/remotes/ancestor/*

这告诉repo2不仅要获取repo1的分支(并将它们镜像为origin/*),还要获取repo1的原始跟踪分支(并将它们镜像为ancestor/*

所以现在你只需要在repo1中执行“git fetch”来从repoSlow获取更改,而根本不更改任何本地分支,然后你也可以将这些更改提取到repo2中。