我对远程分支感到困惑。
我的当地回购:
(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
以下是我的尝试:
git fetch int
将我的所有分支转换为远程分支。这可能会变得混乱,因为int可能有数百个分支。
git fetch int master
获取提交,但没有参考,只有FETCH_HEAD
。也没有远程分支。
git fetch int master:new_master
有效,但每次更新时都不需要新名称,也没有设置远程分支。
git pull int master
做我想要的,但仍然没有远程分支设置。我觉得这样做是可以的(这是我现在最好的),但我在这里和那里阅读,通过远程设置,只需git pull
即可。
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分支,这正是我想要的。
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
也会从遥控器中获取所有分支。
答案 0 :(得分:1)
确保您的工作树中没有任何当前工作。
然后尝试a(使用Git1.7.0或更高版本):
git fetch int master
git branch --force -- set-upstream master int/master