GitHubのブランチ指定にmasterを使うと(基本的に)デフォルトブランチにリダイレクトされる
現在、GitHub上でリポジトリを新規作成した場合、デフォルトブランチはmain
となっています。
従来はmaster
でした。
また、GitHubのファイル閲覧ページは、そのパスにブランチ名が含まれています。
https://github.com/[owner]/[repo]/(blob|tree)/[branch]/[file/to/path]
こうなると、「デフォルトブランチのファイルへリンクしたいけどブランチ名がmaster
かmain
かわからない」という場合に困ってしまいそうです。
ところが、実はどんな名前の場合もmaster
にしておけば良い仕様になっています。
デフォルトがmasterの場合
こちらはkawarimidollのプロフィールリポジトリです。デフォルトブランチはmaster
です。
このようにmaster
を入れると、そのままリンクします。
https://github.com/kawarimidoll/kawarimidoll/blob/master/README.md
これは当然ですね。
デフォルトがmainの場合
ではデフォルトがmain
のリポジトリではどうでしょうか。
以下のリポジトリで試してみます。
https://github.com/kawarimidoll/typograssy/blob/master/README.md
Branch not found, redirected to default branch.
という表示が出て、main
ブランチへリダイレクトされます。
Branch not found
とは言っていますが、適当なブランチ名(hoge
とか)ではリダイレクトされないので、master
のみ特別な処理を挟んでいるようです。
また、ファイル自体を直接参照するパス(raw.githubusercontent.com
)の場合もちゃんとリンクします。
https://raw.githubusercontent.com/kawarimidoll/typograssy/master/README.md
デフォルトがmasterでもmainでもない場合
デフォルトブランチはユーザーが任意で設定できるので、master
でもmain
でもない場合もありえます。その場合はどうなるでしょうか。
こちらのリポジトリで試してみます。
https://github.com/unkontributors/super_unko/blob/master/README.md
これでも同様にデフォルトブランチへ運ばれます。
なお、main
を指定すると404になります。
https://github.com/unkontributors/super_unko/blob/main/README.md
やはりmaster
だけはデフォルトへのリンクとして確保してあるようですね。
非デフォルトのmasterがある場合
実験的に、デフォルトがmain
だけど別にmaster
というブランチがある場合も作ってみました。
https://github.com/kawarimidoll/deno-dev-playground/blob/master/README.md
https://github.com/kawarimidoll/deno-dev-playground/blob/main/README.md
これは、master
およびmain
が各々のブランチにリンクしています。まあ当然ですかね。
main
とmaster
が共存する場合は少ないと思いますが、「master
はあるけどdevelop
がデフォルト」みたいなことはあると思います。
したがって、常に「master
ならデフォルトブランチ」とは言えない点には注意が必要です。
本記事のタイトルに「基本的に」と入れているのは、この例外があるためです。
おわりに
本仕様に関しての説明が見つからなかったのでまとめておきました。
「ブランチ指定にmaster
を指定した場合、master
が存在すればそこへリンクし、存
在しなければデフォルトブランチへリダイレクトされる」 ということです。
おそらく、多くのツールがmaster
を参照する前提で作られているため、master
で404を出すわけにいかなかったのだと思われます。
なお、以下の記事で紹介したプロジェクトではこの仕様を利用しています。
というか開発の中でこの仕様に気づきました。
Discussion