akahori_s
@akahori_s

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Gitの管理下には置きたいファイルだけど変更してもコミットに含みたくない場合の設定方法

Q&A

Closed

解決したいこと

とある外部ライブラリにて設定ファイルが必要で、その設定を読み込みためにある特定のファイル名でないと読み込みができないようになっています。
また、その設定もローカル環境、ステージング環境、本番環境でそれぞれ設定内容が異なるため現在の運用では特定のファイル名とは別で各環境用の設定ファイルを用意しローカルでデバッグするときは、手動で特定のファイル名にそれぞれの環境用のファイルの内容をコピペして更新するといったことをしています。
ただこの場合、編集しているのでコミットの際に意識して除外するかそのファイルだけrevertしないといけない煩わしさがあります。
何回か間違ってコミットされてしまったという過去もあり、現在はレビューでカバーしていますが仕組みとしてそうならないようにしたいです。
そのため掲題の通り、Gitの管理下には置きたいけど変更してもコミットには含まれないような対処方法を知りたいです。

対象のプロジェクトではjava/SpringBootを採用しておりmavenを使って依存関係の解決やビルドを行っています。
そちらの方面で解決できそうであればそちらもご教示いただきたいです。

1

3Answer

git update-index --assume-unchanged または git update-index --skip-worktree で実現できます。両者の意味や使い分けは以下の記事が詳しいです。

4Like

Comments

  1. @akahori_s

    Questioner

    ありがとうございます。連携いただいた記事を参考にしたらやりたいことができました。
    他の方もご回答ありがとうございました。

変更してもコミットには含まれないようにしたいということは、すなわちGitの管理下に置きたくないということなので、管理下には置きたいという要求と矛盾しています。

そのファイルを「別の場所」からコピーして使うようにすれば良いのでは。

そして、そのファイルは、その「別の場所」で管理されるようにすれば良いのでは。

0Like

java/SpringBoot/mavenについては詳しくないのですが、こういったケースではその設定ファイル自体は管理しません。

例えばsetting.jsonのような設定ファイルがあったとして、それは自体は管理せずに、setting.json.prodsetting.json.stgなどの環境毎の設定ファイルを管理します。

フレームワークによっては環境に応じた設定ファイルを読み込んでくれるものもありますし、そうでなければビルドやデプロイのプロセスでリネームしたりします(setting.json.prod -> setting.json)。

0Like

Your answer might help someone💌