我想镜像我的GitHub页面分支以匹配主分支,因此每当我推送到origin master
时,gh-pages
分支都会自动同步并推送。
我遵循了如何执行此操作的教程,现在看来,每当我从主分支执行推送时,只有gh-pages分支正在更新。
我删除了本地和远程gh-pages分支,
git branch -D gh-pages # delete local
git push -u origin :gh-pages # delete remote
然后尝试从我的主分支拉,但得到以下错误:
> git checkout master
> git pull
> Your configuration specifies to merge with the ref 'refs/heads/gh-pages'
from the remote, but no such ref was fetched.
如果我推送我的主分支,它会重新创建gh-pages远程分支,但不会更新主分支......
在我的git配置文件中:
> git config -l
credential.helper=osxkeychain
user.name=Kyle
user.email=kyle@email.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=https://github.com/kylesb/range.js.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.push=+refs/heads/master:refs/heads/gh-pages
remote.origin.push=+refs/heads/master:refs/heads/gh-pages
branch.master.remote=origin
branch.master.merge=refs/heads/gh-pages
我该如何解决这个问题?
更新
我只需编辑.git / config文件并将其重置为以下原始内容即可解决此问题:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/<username>/<repository_name>.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "gh-pages"]
remote = origin
merge = refs/heads/gh-pages
现在我只需要手动推送gh-pages
分支,一切都很好:
> git checkout gh-pages
> git merge master
> git push -u origin gh-pages
答案 0 :(得分:0)
gh-pages被设置为尝试与master合并的默认分支,但它不再存在。
使用git config --unset branch.master.merge
取消主控合并分支。
答案 1 :(得分:0)
首先,如果你使用的是git less版本2升级它,如果你可以从最高版本2到每个pull.push用于将全部更改的分支推送到远程,甚至是你不想推。
这是git v2.0发行说明,它解释了git处理推送方式的变化(简单与匹配)。
Git v2.0发行说明
向后兼容性说明
当
git push [$there]
没有说要推送什么时,我们已经使用了 到目前为止传统的matching
语义(所有分支都已发送 只要已经存在同名分支,就可以到远程控制台 在那边)。在Git 2.0中,默认值现在是simple
语义, 推动:
只有当前分支到同名的分支,并且只有 当前分支设置为与该远程集成时 分支,如果你正在推送到同一个遥控器;或
只有当前分支到具有相同名称的分支,如果您 正在推送到一个不是你常去的地方的遥控器。
您可以使用配置变量
push.default
进行更改 这个。如果你是一个想要继续使用的老人matching
语义,您可以将变量设置为matching
例。阅读文档以了解其他可能性。
回答你的问题。
默认情况下,您可以将当前所在的分支推送到远程
由于您尝试推送不同的分支名称,因此当您在master
分支时,不应该这样做
签出新的gh页面,然后推送到远程
# start from current master
git checkout master
# Checkout teh new gh-pages branch
git checkout -b gh-pages
# do a force push instead of deleting the branch
# the force will override and prevoius commits
git push -f gh-pages