我在GitHub上有一个名为foo
的回购,其中包含以下分支:
我在GitHub上有第二个回复,名为<username>.github.com
(一个用户回购),有以下分支:
我想使用foo->master
<username>.github.com->source
中的代码,并且能够在foo->master
发生更改时合并。
实现这一目标的最佳方法是什么?
答案 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
更新所有遥控器,包括origin
和foo
。
如果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