TL;DR
GitHub Pagesのユーザータイプ用リポジトリで公開しているpathとプロジェクトタイプのリポジトリ名に由来するpathが同名で競合している場合、プロジェクトタイプが優先される。例えば<username>/<username>.github.io
配下に/example
で公開されるコンテンツがあり、同時に<username>/example
というリポジトリがあってGitHub Pagesを有効にしている場合、https://<username>.github.io/example
では後者が表示される。
本文
GitHub Pagesについて調べたメモ。GitHub Pages について - GitHub Docs(や英語版)の内容と実際にリポジトリを作って挙動を調べた結果をまとめる。
GitHub Pagesにはタイプが3種類ある。
- プロジェクト (project)
- ユーザー (user)
- 組織 (organization)
今回はOrganizationでは実験しておらず、この記事はプロジェクトタイプとユーザータイプに限った内容になる(ユーザータイプと組織タイプはどちらも特定のアカウントに紐づくものと説明されているので、似た挙動が多そうではある)。
ユーザータイプはhttp(s)://<username>.github.io/
というURL以下でコンテンツを公開でき、サブディレクトリを作ることもできる。プロジェクトタイプはhttp(s)://<username>.github.io/<repository>/
というURL以下になる。ということは、ユーザータイプ用リポジトリのサブディレクトリ名と、それとは別の(GitHub Pagesを有効にしている)リポジトリ名が重複している場合、URLが競合してしまう。このときどちらが優先されるのか知りたかった。
実際にcu39/project-type
というリポジトリにindex.html
というファイルをコミット・プッシュし、同時にcu39/cu39.github.io
にも(中身を変えた)project-type/index.html
を作り、両方ともGitHub Pagesを有効にしてみたところ、https://cu39.github.io/project-type/
で表示されたのはcu39/project-type
のほうのコンテンツだった。
なお、ユーザータイプ配下にプロジェクトタイプ(リポジトリ名)と競合しないディレクトリを作った場合には、ユーザータイプ側のコンテンツがきちんと表示される。