2012年11月23日

gitで既にコミットしてしまったファイルを無視する様に変更したい場合は

今日、ASP.NET MVC4の Code Firstを試していてgitでつまづいたので将来の自分用にメモ。

Code FirstでDbContextクラスを作ってモデルクラスを作って、Package Managerコンソールから「Update-Database」を実行すると、無事App_Dataフォルダにデータベースファイルが作成された。

モデルクラスに対応したテーブルも自動的に作成されていて、素晴らしい!

と感動したものの、考えてみるとこのデータベースファイルは出来ればgitの管理下には置きたくない。

ところが気付いた時点では既にGitHubにデータベースファイルもろともpushした後だった。

あわてて .gitignoreファイルに
*.mdf
*.ldf
の2行を追加した。

それから git rm -f *.mdfしてみたり試行錯誤してみたけれども、どうも上手く行かない。

まだまだ git の事を理解していない証拠だな~、とちょっと落ち込む。

とりあえず検索して何とか答えが見つかった。
pushした後に.gitignoreに追加したのが良くなかったみたいだ。

git - Visual Studio gitignore and mdf, ldf files - Stack Overflow


  1.  一旦.gitignoreから*.mdf, *.ldfの設定をコメントアウトする。
  2. git rm --cached -- *.mdf を実行。
  3. git rm --cached -- *.ldf を実行。
  4. git commit -m "コミットメッセージ" を実行。
  5. 1でコメントアウトした.gitignoreの設定を戻す。

この操作で無事データベースファイルが除外された。