開発しているコードをGitHubで管理・公開する場合,すでに開発が完了して公開する用のブランチと,開発中でまだ公開したくないブランチが存在することがある.研究だと論文化されたところまでは公開して,次の論文のテーマとして開発している機能は非公開にしたい,というようなケースだ.

GitHubではブランチごとに公開・非公開を分けることはできないため,実現するためには公開用のリポジトリと非公開用のリポジトリを用意して使い分けする必要がある.今回はその方法についての備忘録だ.ポイントは,gitのremoteは複数登録できるということで,これによってプッシュする先を選べる,ということ.

管理の方針

今回紹介する方法では、次のような構成とする:

  • 公開リポジトリ(例:myproject-public)

    → 論文で発表済みのコードや安定した機能のみを含む.

  • 非公開リポジトリ(例:myproject-private)

    → 現在開発中の機能や、将来の論文に使う予定のコードを含む.

このように2つのリポジトリを用意し,非公開リポジトリをメインの開発場所とし,必要に応じて公開リポジトリに内容を反映するという方針で運用する.

従って,公開リポジトリには論文が出たタイミングなど非常に限られたタイミングで非公開リポジトリのmasterブランチからプッシュする.

非公開から公開リポジトリへの反映方法

非公開リポジトリの内容を公開リポジトリへ反映するために,git remote で新しいリモートを登録する.既存のものと違う名前であれば幾つでも追加できる.以下では名前をpublic として登録する.

# 非公開リポジトリで実施
git remote add public https://github.com/yourname/myproject-public.git

push先をpublicにすることで公開用ブランチにコードがプッシュされる.

git push public main

まとめ

一つのコードを公開/非公開を織り交ぜて管理する方法を紹介した.今回はただgit remoteの紹介みたいになっているが,おそらくもっと高度なことが色々とできるはずなので調べてどんどんこの記事に追記しておこうと思う.