在git中将单个分支克隆到不同名称的分支

时间:2012-12-17 22:51:33

标签: git github

我在GitHub上有一个名为foo的回购,其中包含以下分支:

  • GH-页

我在GitHub上有第二个回复,名为<username>.github.com(一个用户回购),有以下分支:

我想使用foo->master <username>.github.com->source中的代码,并且能够在foo->master发生更改时合并。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以添加foo/master作为遥控器,不时将其合并(在<username>.github.com repo中执行此操作):

# add foo as remote (once)
git remote add foo https://github.com/<username>/foo.git
# fetch from remote (often)
git fetch foo
# merge changes to source (when you want)
git checkout source
git merge foo/master

您可以将origin/source设置为source的远程设置,将origin/master设置为远程设置为正常设备。

您还可以使用git fetch --all更新所有遥控器,包括originfoo

如果source中的变化不大,那么合并几乎总是快进。


您可能希望为foo设置只读的远程URL。 这样你就不能意外地从<username>.github.com推出,如果它是一个公共回购,你就不需要为获取提供身份验证(或你的ssh密码的密码)。


您可以让git无法使用

获取gh-pages分支
git config remote.foo.fetch "+/refs/heads/master:/refs/remotes/foo/master"
git branch -rD foo/gh-pages

您只需要记住,当您期望master以外的任何其他分支从foo远程显示时,请设置该

refspec的一个很好的解释是git book

答案 1 :(得分:0)

也许以下会有所帮助(虽然我不是100%肯定):

# Add a remote foo
git remote add foo <foor-url>

# create a foo-master branch
git checkout -b foo-master

# Set upstream branch for foo-master
git branch --set-upstream foo-master foo/master

# fetch code from foo master 
git fetch foo master

# reset the current branch to foo master
git reset --hard foo/master

# merge in source
git checkout source
git merge foo-master

更新foo-master:

git checkout foo-master
git pull