我使用Travis CI建立我的Jekyll网站并推送给Github。很多文档都是为了将Jekyll代码保留在master
分支中,并构建网站并将_site
推送到gh-pages
分支。我想避免这样做并在Github上使用username.github.io
repo。
这是我目前的构建脚本:
#!/bin/bash
# skip if build is triggered by pull request
if [ $TRAVIS_PULL_REQUEST == "true" ]; then
echo "this is PR, exiting"
exit 0
fi
# enable error reporting to the console
set -e
# cleanup "_site"
rm -rf _site
mkdir _site
# build with Jekyll into "_site"
bundle exec jekyll build
# push
cd _site
git config user.email "john.doe@gmail.com"
git config user.name "John Doe"
git add --all
git commit -a -m "Travis #$TRAVIS_BUILD_NUMBER"
git push origin master
当然,git push origin master
现在用生成的网站替换整个分支本身。如何生成网站并将其保留在_site
?
答案 0 :(得分:0)
我假设您在某个文件夹中运行此脚本。我们称之为my_project
。
在my_folder
内,当您运行此脚本时,它会创建一个_site
文件夹。
接下来你正在做cd _site
。不要这样做。
相反,请保留在my_project
文件夹并执行git config步骤以及此级别的其他步骤。
因此,这将推送此my_project
文件夹中的所有内容,该网站将位于_site
文件夹中。
答案 1 :(得分:0)
<强> TL,DR:强>
更改这些行:
git add --all
git commit -a -m "Travis #$TRAVIS_BUILD_NUMBER"
要:
git add ./ #I assume you've cd'd into the directory you want to commit.
git commit -m "Travis #$TRAVIS_BUILD_NUMBER"
<强>解释强>:
这个问题闻起来像是来自svn的人会遇到的问题。(如果你不是来自svn,请跳过下一段)
svn和git handle提交的方式有很大不同。
使用svn时,提交始终相对于当前目录。因此,行cd _site
将所谓的当前工作目录更改为_site
。在那里,svn只关心当前目录及其子目录。
另一方面,git命令将爬上目录路径,直到它们到达根目录。因此,当您在_site
并使用--all
或-a
命令时,它将提交整个分支中的所有更改。
因此,在add命令中替换--all with ./
,这只是当前目录的linux简写。并删除commit命令中的-a
。所以&#34;更改添加&#34;仅来自目前的目录,即_site
。这将分段提交更改。您从commit命令中删除-a
,以便它只提交暂存的更改。
另外,git add --all
后跟git commit -a
是多余的。提交中的-a
忽略了添加到舞台的内容,只提交所有更改。