[英]Github: Mirroring gh-pages to master
将以下 2 行添加到.git/config
的[remote "origin"]
部分:
push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master
每次push
时,它也会自动将 master 推送到 gh-pages。 我将它用于jQuery Lifestream 项目。
git checkout gh-pages
git merge master
git push origin gh-pages
不要做上面 denbuzze 建议的事情。推送中的 +(加号)使它安静地接受非快进更新。 我发现这很难通过导致悬空提交而不可避免地导致工作丢失。 简单地删除加号使这是一种更安全的方法。
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.
我正在为@denbuzze和@MCSDWVL 的答案添加进一步的解释。
如果您想在每次运行git push origin
时自动推送到master
和gh-pages
,您可能需要将 Refspec 添加到您的 repo 的 git 配置中。
因此,根据git-scm book ,您可以通过将两个push
值添加到 repo 配置文件.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
分支默认。
注意:在规范之前使用+
会导致强制推送到 repo。 谨慎使用:
refspec 的格式是可选的
+
,后跟<src>:<dst>
,其中<src>
是远程端引用的模式,<dst>
是这些引用将在本地写入的位置。+
告诉 Git 更新参考,即使它不是快进。
我个人喜欢将其包装在别名中:
alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"
这会将您的 master 镜像到gh-pages
,推送到 github,然后切换回您正在处理的上一个分支。
或者您可以只使用下面的 cmd,这会将您的本地 master 分支推送到 gh-pages master 分支。 git push -f origin master:gh-pages
提交并推送到master..
然后:
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
更新: GitHub 现在允许从您想要的任何分支和目录发布页面。
将gh-pages
分支用作 master 对我来说要容易得多。 “大师”没有什么神奇之处; 这只是另一个分支名称。 gh-pages有一些神奇之处,因为这是 GitHub 正在寻找 index.html 为您的页面提供服务的地方。
在我关于此主题的其他答案中阅读更多内容。
使用gh-pages
作为 master 也比子树更容易,子树比镜像更容易。 您可以使用此处或 此处所述的git subtree
:如果您有一个包含演示的目录,您可以使用一个命令将该目录推送到gh-branch
。 假设您将目录命名为gh-pages
以使事情清楚。 然后,在您提交更改并将更改推送到master
之后,运行此命令以更新 gh-pages:
git subtree push --prefix gh-pages origin gh-pages
问题是如果您在gh-pages
中的文件引用了它之外其他目录中的文件。 符号链接不起作用,因此您必须将文件复制到用作 gh-pages 的目录中。
如果您使用gh-pages
作为 master ,则不会出现此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.