在Github Pages

时间:2016-04-22 00:03:49

标签: git github server webserver github-pages

我正在使用Github Pages来托管&提供静态网站。

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

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

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

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

注意:

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

5 个答案:

答案 0 :(得分:33)

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

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

来自要点

  

将子文件夹部署到GitHub页面

     

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

     

为了这个例子,让我们假装包含您网站的子文件夹名为dist

     

第1步

     

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

     

第2步

     

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

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

第3步

     

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

git subtree push --prefix dist origin gh-pages
     

动臂。如果您的文件夹未被调用dist,那么您需要在上面的每个命令中更改它。

  

如果您定期执行此操作,您还可以create a script在路径中的某处包含以下内容:

#!/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

答案 1 :(得分:17)

Since August 2016您可以使用/docs分支的master子文件夹作为您的来源。

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

注意:正如@thislooksfun在评论中所指出的,这仅适用于项目页面(如<username>.github.io/<projectname>),但不适用于用户或组织页面(如{{1 }})。

答案 2 :(得分: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

答案 3 :(得分:0)

为了使其适用于使用 public/ 文件夹的 Hugo 网站的 gh-pages 分支,以下是我所做的工作,它非常笨拙但可以完成工作:

注意:hugolanding 是 config.toml 所在的文件夹根目录,此脚本从脚本文件夹运行,您可以将其完全移动到其他地方并更改该行。

#!/bin/bash
# move to root
cd ../hugolanding
# generate public content
hugo -D
# prep copy folder
rm -rf /tmp/public && mkdir -p /tmp/public
# copy out of git shit
cp -R public/* /tmp/public
# git yolo everything
git add -A 
git commit -m 'updates to public'
git push --recurse-submodules=on-demand
git checkout gh-pages
cd ..
cp -R /tmp/public/* .
git add -A 
git commit -m 'updated gh-pages'
git push --recurse-submodules=on-demand
echo "done"
git checkout main

答案 4 :(得分:-2)

push-dir会这样做:

npm install push-direxample
push-dir --dir=build --branch=gh-pages