1

我对远程分支感到困惑。

我的本地仓库:

(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

我可以git pull从本地 repo 的 master 运行并获取

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

这是我尝试过的:

  1. git fetch int让我将 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 已创建,但不是远程的。

总而言之,我尝试了一些没有运气的东西。我希望 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从远程获取所有分支。

4

1 回答 1

1

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

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

git fetch int master
git branch --force -- set-upstream master int/master
于 2010-06-08T18:27:08.903 回答