質問: とある組み込み系のコンパイラを使って開発しているのですがソースコードとそのコンパイラのプロジェクトファイルをgitで管理しようと思っています。 プロジェクトファイル(バイナリファイル)ですが基本的にコンパイラの設定に変更がなければ初回コミットしたものを使いまわすことができます。 ただこのプロジェクトファイルはコンパイルする毎に一部が書き換わっているようで、追跡対象にしていると毎回変更したものとして扱われます。 かといってignoreリストにそのファイルを追加してしまうと、リポジトリからそのファイルが消えてしまうため、次回誰かがpullするとそのプロジェクトファイルがない・・という状況になってしまいます。 やりたい事は ・pullした時は初回コミットしたプロジェクトファイルが常にpullされる (既に変更されたプロジェクトファイルがあった場合は上書き) ・コミットする際はもしプロジェクトファイルに変更があったとしても無視する という設定にしたいのですが、何か方法ございますか? もしくは、もっと良い運用の方法などご提案いただけると助かります。
回答: `git update-index --assume-unchanged [ファイル・ディレクトリパス]` というコマンドがあり、これを指定したファイルは更新チェックの対象外になるようです。しかし、リモートの該当ファイルが更新されたときは`pull`時にローカルファイルを更新してくれるので目的にかなうのではないでしょうか? 再度更新確認をして欲しくなった時は `git update-index --no-assume-unchanged [ファイル・ディレクトリパス]` と、すれば管理下に戻ります。 参考:Qiita : Gitで既に管理されているファイルをローカルで無視する方法