我在 GitHub 上有一个foo
使用以下分支调用的存储库:
- 掌握
- gh页面
我在 GitHub 上有第二个存储库,称为<username>.github.com
(用户存储库),具有以下分支:
- 掌握
- 来源
我想使用 infoo->master
中的代码,<username>.github.com->source
并能够在更改foo->master
发生时合并它们。
实现这一目标的最佳方法是什么?
您可以添加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
远程出现时,您只需要记住设置。
参考规范的一个很好的解释是在git book
也许以下会有所帮助(虽然我不是 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