Help us understand the problem. What is going on with this article?

.gitignore ファイルをブランチごとに別の内容にする

More than 3 years have passed since last update.

.gitignore ファイルに限らないのですが、ブランチごとに特定のファイルの内容を変えたく、その設定をしたメモ。

前提 (困っていたこと)

Web開発で、何人かで git 使ってコード管理しています。
で、ビルド後に生成される css, js, sourcemapファイルなどを git管理に含めていると、いちいちコンフリクトが起きまくって困る!!!!
という状況でした。

(そもそもビルド後のファイルを gitに含めなくていいのでは? って話になるのですが、開発サーバへのコード反映を git でさくっとやりたくてですね……。サーバ側でビルドできればいいんだけど、環境によっては簡単にはいかず。なので、git管理にビルド後の cssファイル等も含めておきたかったのです。)

どうするか

以下の方針でなんとかできないか?

  • 普段の開発用ブランチでは、ビルド後の生成ファイルは .gitignore で無視させる → コンフリクト起きない
  • デプロイ専用のブランチを作り、そこではビルド後のファイルも git管理する → git経由でサーバに転送できる

つまり、ブランチ別に .gitignore の設定を変えられれば、なんとかならないか。

どうやったか

.gitattributes ファイルの merge=ours 設定を使いました。

まず、 .git/config ファイルに以下の設定を記述。

[merge "ours"]
    name = "Keep ours merge"
    driver = true

次に .gitattributes ファイルに以下のように記述。

/.gitignore merge=ours

こう設定することで、マージ時に /.gitignore ファイルはマージ対象外となり、常に自分側のファイル内容をそのまま残すようになります。
つまり、ブランチごとに .gitignore の内容を別にすることができる!

こうなった

結果、作業はこんな流れに。

  • 開発ブランチではビルド後の生成ファイルは .gitignore で無視。(もちろんコンフリクトは起きない)
  • デプロイ時は、デプロイ用ブランチに内容をマージ。
  • デプロイ用ブランチでは .gitignore の内容を変えており、ビルド後のファイルは無視されない。なので add して commit する。
  • その内容を開発サーバにデプロイ。

以上

いまのところ、この方法でなんとかしています。
(もっと上手いやりかたあれば教えてください)

また、この merge=ours を使った方法は、やむを得ず環境設定ファイル等を git管理に含めないといけない & ブランチ毎に設定ファイルの内容を変えないといけない、という場合にも使えると思います。

参考

tambourine
私たちは好奇心を武器に、あたらしいことが大好きな仲間たちと「世界を変えるアイデア」をカタチにするテクノロジスト集団です。
https://www.tam-bourine.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした