git:从公共仓库设置一个跟踪远程

时间:2010-06-08 15:48:18

标签: git tracking fetch

我对远程分支感到困惑。

我的当地回购:

(local) ---A---B---C-master

我的远程仓库(称为int):

(int) ---A---B---C---D---E-master

我想要做的是设置本地repo的master分支以遵循int的分支。 当地回购:

(local) ---A---B---C---D---E-master-remotes/int/master

因此当int更改为:

(int) ---A---B---C---D---E---F-master

我可以从本地repo的主人那里运行git pull并获得

(local) ---A---B---C---D---E---F-master-remotes/int/master

以下是我的尝试:

  1. git fetch int将我的所有分支转换为远程分支。这可能会变得混乱,因为int可能有数百个分支。

  2. git fetch int master获取提交,但没有参考,只有FETCH_HEAD。也没有远程分支。

  3. git fetch int master:new_master有效,但每次更新时都不需要新名称,也没有设置远程分支。

  4. git pull int master做我想要的,但仍然没有远程分支设置。我觉得这样做是可以的(这是我现在最好的),但我在这里和那里阅读,通过远程设置,只需git pull即可。

  5. git branch --track new_master int/master,根据http://www.gitready.com/beginner/2009/03/09/remote-tracking-branches.html。我得到“不是有效的对象名称:int / master”。 git remote -v确实告诉我int已定义并指向正确的位置(1.工作)。我想念的是int / master分支,这正是我想要的。

  6. git fetch in master:int/master。好吧,int / master已创建,但不是远程。

  7. 总而言之,我尝试了一些没有运气的东西。我希望2能给我远程分支在repo int中掌握。

    我现在使用的解决方案是选项3。

    我在某处读到你可以手动更改一些配置文件,但这有点麻烦吗?


    编辑配置文件的“麻烦”方式确实有效:

    [branch "master"]
        remote = int
        merge = master
    

    可以从命令行完成:

    $ git config branch.master.remote int
    
    $ git config branch.master.merge master
    

    为什么上面的选项2不会自动执行此操作? 即使在这种情况下,git pull也会从遥控器中获取所有分支。

1 个答案:

答案 0 :(得分:1)

确保您的工作树中没有任何当前工作。

然后尝试a(使用Git1.7.0或更高版本):

git fetch int master
git branch --force -- set-upstream master int/master