Jekyllのドキュメントには、Jekyllサイトの_site-directoryに、実行後に作成したサイトのコンパイル済みバージョンが含まれていると記載されています
Jekyll build
「コンパイルされたバージョンのサイトのみが含まれている」ため、.gitignore-fileに_site-directoryを含めることをいくつかの記事で推奨しています。 (それがいくつかの記事が推奨するものです。したがって、私がJekyllのいくつかの概念またはGitのいくつかの概念を理解していないかどうかはわかりません。
_site-directoryにコンパイルされたバージョンのサイトが含まれている場合、それはサーバー上にあるものであり、最終的なWebサイトを提供するものではないのですか?私はあなたがgithubにソースコードを置く理由とそれをどうするかを理解していますが、githubページの場合、Githubはバージョン管理システムではなく、ファイルホスティングシステムであり、ファイルホスティングシステムは提供する私の作業のコンパイル済みバージョンをホストする必要がありますMyUsername.github.ioを介してユーザーに送信しますか?
私の質問は、Githubにデプロイするのは、Jekyll Webサイトの_site-directoryだけではないのですか?それは、githubがユーザーに提供するコンパイル済みソースコードであるべきだからです。それで、_site-ディレクトリ以外の.gitignore-fileに何かを入れるべきではありませんか?
私がこれをすべて間違っていた場合:私のウェブサイトを経由してコンパイルすることのポイントは何ですか
Jekyll build
コンパイルされたソースコードを何にも使用しない場合
2つのソリューション:
ローカルでテストする必要がある場合にのみ、サイトを構築します(jekyll build
またはjekyll serve
)。生成されたコード(_site
)は、githubページがソースからページを生成するため、バージョン管理されません。
この場合、Githubページはプラグインでジョブを実行できないため、ローカルでビルドする必要があります。
詳細については、この投稿を参照してください。
あなたが混乱している点は、ほとんどのチュートリアルが少なくともtwo異なるリポジトリについて話しているということです。
source code
、これはJekyll build
を呼び出す場所ですresult
、これは_site
ディレクトリのcontentsを配置した場所です次に、ケース1の場合は_site
を無視するのが理にかなっています。通常はコンパイル結果を無視するのと同じ理由から、ソースを変更せずにすべてのコンパイル間で変化する可能性があるため、追跡することを意図していません。何も(目に見える)変更されていなくても、ビルドごとにコミットします。
リポジトリ2の場合は、ビルド後にリポジトリ1の_site
の内容で更新する必要があります。
もちろん、_site
のコンテンツにmaster
を使用して、1。と2.を組み合わせて1つのリポジトリにまとめることもできます。 source
ビルドファイルがJekyll
のプロジェクトの場合、ここでは_site
を無視し、変更後の内容でmaster
ブランチを更新します。
_siteフォルダーがクリアされ、内部のすべてのファイルが「jekyllビルド」ごとに再生成されます。削除されるファイルの追跡は、役に立たないようです。
jekyllサイトをプロジェクトページ(gh-pages)としてgithubレポにgit pushする場合、_siteフォルダーは、ファイルのアップロード時に自動的に_siteを生成するため、githubにjekyllをインストールすると、自動的に_siteが生成されます(git押す)。
_siteフォルダーは、jekyllサイトのローカルプレビューにのみ役立ちます(通常、デフォルトではlocalhost:4000にあります)。
私はあなたが物事を間違った方法で見ているかもしれないと信じています、あなたは毎回jekyll build
_siteが爆発し、そこにあるすべてのものが消去されて再び書き込まれます。
ですから、私自身の意見では、githubにプッシュしたいのは作業ディレクトリです。これは、作業場所にあり、すべての変更がバージョン管理されているためです... githubのプラスがサイトのコンパイルと自動構築を行います。
そうは言っても、別のホスティングサービスにデプロイし、デプロイメントフレームワークがgithubリポジトリを取得して、_siteが必要な特定のブランチからデプロイするため、通常は_siteをgitignoreから除外しています。