Gitで管理されているファイルの変更を無視する方法

チーム開発をしている場合、設定ファイルに書かれているデータベースの接続情報など、全員が同じ設定を利用できるのであれば問題はありません。 しかし、ローカルDBを使ったり、しばらく別のDBに接続して開発するなんてことも間々あると思います。

短期間であれば作業してコミット前に変更を取り消せばよいだけで(ひと手間ありますが)特に困りません。ただ、途中で最新のソースが欲しくなってマージを実行したりすると、その度にコンフリクトが発生してイラッ☆とします。

そんな時は、対象の設定ファイルをGitの管理対象から一時的に外してしまうとよいです。方法は以下のようにGitのコマンドを実行します。

git update-index --assume-unchanged src/WebApplication1/Web.config

これで、ローカルの変更は無視されるようになります。

もし、(設定が増えるなどで)対象のファイルが更新された場合、今度は除外を解除してから取り込み、その後また管理対象から外してしまいます。

git update-index --no-assume-unchanged src/WebApplication1/Web.config

余談

VS2013で開発していると、除外していても(時々ですが)ブランチを切り替えようとした時になぜか変更を検知して切り替えれないといった現象を確認しています。 ※例えば、トピックブランチで作業が終わったから、リリースブランチに切り替えて別の検証をしようとしたときなど

色々試してみたものの、うまく回避できる方法がなかったので、リリースブランチ、デベロップブランチは別々にチェックアウトするようにしています。