プロジェクトをGitHubに公開する時に、開発関係全てのファイルを公開はできないので、厳選したファイルだけ公開したいというもの。
よい方法がないものかと調べたら、ブランチごとに別の内容にする事が出来た。
ブランチごとに別々の.gitignore
を持つという方法で、ブランチをチェックアウトした時に .gitignore
ファイルはマージされないように設定しブランチ別に登録したままが使われる。
設定
.git/config
ファイルに以下の設定を記述。
[merge "ours"]
name = "Keep ours merge"
driver = true
次に、マージから除外したいファイルを .gitattributes
ファイルに記述。
ついでに、README.md ファイルも別々にする。
/.gitignore merge=ours
/README.md merge=ours
公開する方のブランチには、.gitignore
ファイルに公開したくないファイルを列記。
プロジェクト全体(master)は、お家Gitサーバで管理し公開用ブランチをGitHubにpushする。
これは便利、色々応用できそう。Git、ほんと素晴らしい!
補足
[merge "ours"]
の設定は、~/.gitconfig
に記述してもよい。又、マージを実施するすべてのマシンで設定する必要がある。この設定がされていないマシンでマージを行った場合、.gitattributes
の設定に関係なく通常通りのマージが実施されてしまう。.gitignore
が異なるマージ(変更)した時にはリポジトリ内に無視したいファイルがリポジトリ内に残っているので、下記記事の手順で削除する。
.gitignoreが異なるマージ(又は.gitignoreを変更)した時の処理 [新石器Wiki]
コメント