我正在使用Github Pages来托管&提供静态网站。
静态网站具有应用程序的典型目录结构:
|_ source
|_ build
|_index.html
.gitignore
config.rb
Gemfile
...
README.MD
index.html
位于build/
下,因此我想将其设为默认的www
路径。
因此,当用户点击username.github.io
时,它会在该子目录中呈现内容,但在URL上不显示“/ build”/,因此将其设置为根文件夹。
注意:
答案 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