我正在开发一个在GitHub上托管的jQuery插件。它包含了一个演示,其中我手动复制并推送到分支gh-pages
,我想要做的就是这样,当我将更改推送到master
时,它会自动推送到gh-pages
,或者至少是一个镜像设置。
我已经看过这个question但不确定它是否真的回答了我关于这些要求的问题:
干杯
答案 0 :(得分:106)
将以下两行添加到[remote "origin"]
的{{1}}部分:
.git/config
每当你push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master
时,它也会自动将master推送到gh-pages。
我将其用于jQuery Lifestream project。
答案 1 :(得分:66)
git checkout gh-pages
git merge master
git push origin gh-pages
答案 2 :(得分:27)
不要做上面的建议 !!推送中的+(加号)使其能够安静地接受非快速更新。我发现这很难以通过导致悬空提交而不可逆转地导致工作丢失。简单地删除加号使这更安全。
push = refs/heads/master:refs/heads/gh-pages
push = refs/heads/master:refs/heads/master
现在不会导致强制更新,而是会导致警告&拉建议
To https://github.com/someuser/repo.git
! [rejected] master -> gh-pages (fetch first)
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/someuser/repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
答案 3 :(得分:9)
我正在为@denbuzze和@MCSDWVL答案添加进一步说明。
如果您想在每次运行master
时自动同时推送gh-pages
和git push origin
,则可能需要在回购的git配置中添加Refspec。
因此,根据git-scm book,您可以通过向repo配置文件push
添加两个.git/config
值来添加两个RefSpecs:
[remote "origin"]
url = https://github.com/<github_user>/<repo_name>
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master
push = refs/heads/master:refs/heads/gh-pages
这会导致git push origin
:
master
分支推送到远程master
分支master
分支推送到远程gh-pages
分支默认情况下。
注意:在规范导致强制推送到回购之前使用+
。请谨慎使用:
refspec的格式是可选的
+
,后跟<src>:<dst>
,其中<src>
是远程端引用的模式,<dst>
是这些引用的位置将在当地撰写。+
告诉Git更新参考,即使它不是快进。
答案 4 :(得分:2)
我个人喜欢用别名包装它:
alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"
这会将您的主人镜像到gh-pages
,推送到github,然后切换回您正在处理的上一个分支。
答案 5 :(得分:2)
或者您可以使用下面的cmd,这会将您的本地主分支推送到gh-pages主分支。
ThreadContext
答案 6 :(得分:1)
提交和推送以掌握..
然后:
git checkout gh-pages // -> go to gh-pages branch
git rebase master // bring gh-pages up to date with master
git push origin gh-pages // commit the changes
git checkout master // return to the master branch
答案 7 :(得分:1)
更新:GitHub now allows pages to be published from any branch and directory you want.
使用gh-pages
分支作为主人更容易。 “大师”没什么神奇之处;它只是另一个分支名称。 是关于gh-pages的神奇之处,因为GitHub正在寻找index.html来为你的页面服务。
在my other answer on this topic中阅读更多内容。
使用gh-pages
作为主副本也比子树更容易,后者比镜像更容易。您可以使用here或here所述的git subtree
:如果您有一个包含演示的目录,则可以使用一个命令将该目录推送到gh-branch
。假设您将目录gh-pages
命名为清楚。然后在您提交并将更改推送到master
后,运行此更新以更新gh页面:
git subtree push --prefix gh-pages origin gh-pages
问题是,gh-pages
中的文件是否引用其他目录中的文件。符号链接不起作用,因此您必须在用作gh页面的目录中复制文件。
如果您 use gh-pages
as master ,则不会出现此问题。