将子目录设置为Github Pages上的网站根目录


75

我正在使用Github Pages托管和服务静态网站。

静态网站具有应用程序的典型目录结构:

|_ source
|_ build
   |_index.html
 .gitignore
 config.rb
 Gemfile
 ...
 README.MD

index.html在下build/,因此我想将其设置为默认www路径。

因此,当用户点击username.github.io它时,它将在该子目录中呈现内容,但是在URL上却不显示“ / build” /,这是因为将其设置为根文件夹。

笔记:

  • 我没有自定义域,也没有计划为此目的获得一个。如您所见,我正在尝试利用github提供的默认URL命名约定。
  • 不使用Jekyll或自动页面生成器功能。

stackoverflow.com/questions/17797328/…所示,请确保已安装git子树。
sbkm

Answers:


60

有一个详细的要点,其中包含所有必需的步骤。

要点在这里:https
//gist.github.com/cobyism/4730490


从要点

将子文件夹部署到GitHub Pages

有时您希望master分支上有一个子目录,它是存储库gh-pages分支的根目录。这对于使用Yeoman开发的网站或在master分支中包含Jekyll网站以及其余代码的网站时很有用。

就本例而言,我们假设包含您网站的子文件夹名为dist

第1步

dist从项目的.gitignore文件中删除目录(Yeoman默认将其忽略)。

第2步

确保git知道您的子树(站点的子文件夹)。

git add dist && git commit -m "Initial dist subtree commit"

第三步

使用子树推送将其发送到gh-pagesGitHub上的分支。

git subtree push --prefix dist origin gh-pages

繁荣。如果未调用文件夹dist,则需要在以上每个命令中进行更改。


如果您定期执行此操作,则还可以在路径中的某个位置创建一个包含以下内容的脚本

#!/bin/sh
if [ -z "$1" ]
then
  echo "Which folder do you want to deploy to GitHub Pages?"
  exit 1
fi
git subtree push --prefix $1 origin gh-pages

通过它可以键入以下命令:

git gh-deploy path/to/your/site

因此,改用此URL约定:username.github.io/projectname。对?因此,这将需要将存储库重命名为“ projectname”,以便我可以使用Project Pages设置(help.github.com/articles/user-organization-and-project-pages),对吗?
Oriol

是的 或者您也可以改用自定义域
CodeWizard,2016年

1
好的。我想这是唯一的解决方案。谢谢!
Oriol

1
经过进一步的研究,无法完成我最初的要求。如果要将其显示在username.github.io,则需要将build文件夹的内容放入根目录。否则,请使用上述解决方案。
Oriol

1
gh-deploy不再是有效命令。我的子public文件夹是Firebase默认要求您托管的文件夹。
Dhruv Ghulati

29

自2016年8月起,您可以使用分支的/docs子文件夹作为master源。

因此,如果可以告诉您的站点生成器/docs代替/build您使用,就可以完成操作(没有子树)。

注意:正如@thislooksfun在注释中指出的那样,此属性仅对项目页面(如<username>.github.io/<projectname>)有效,而对用户或组织页面(如<name>.github.io)无效。


2
值得注意的是,这仅适用于非用户/组织站点。更具体地说,“要从master分支上的/ docs文件夹发布站点的源文件,您必须具有master分支,并且存储库不得遵循存储库命名方案<username> .github.io或<orgname> .github。 IO”(help.github.com/articles/...
thislooksfun

还要注意,看来如果您<username>.github.io的帐户下已有另一个存储库,则该存储库/docs将不起作用。仅在上直接查找index.html master。请参阅此处的页面顶部:help.github.com/articles/…–
prograhammer

0

对于我来说,被接受的答案只会在第一次运行。重新做会引发错误。

我通过运行以下命令解决了它:

git checkout --orphan gh-pages
git --work-tree build add --all
git --work-tree build commit -m 'gh-pages'
git push origin HEAD:gh-pages --force
git checkout -f master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.