Git 管理対象から除外する.gitignoreの設定

Gitにはバージョン管理の対象から除外するディレクトリやファイルを指定することができます。ってこういうのなかったら逆にとんでもないことになります。まずはGitは元々Linuxの開発を管理するために開発されたものなので、当然~(チルダ)付きのバックアップファイルなど様々なファイルを除外する必要があるからです。
いろんな開発に利用するためには管理下に置いてしまうと面倒なファイルがいっぱいあります。
・設定ファイル類(DBのアクセス情報とか直接書き込んでいるものなんかは除外)
・キャッシュファイル(当然除外)
などなどです。フレームワークなんか使っていると自動的に生成されるファイルが山ほどあるので全部除外です。アクセスの度に更新されちゃうからです。
.gitignoreは通常は.gitがある階層と同じ場所に置かれます。(各ディレクトリ内にも置けます。)設定例ではこんな感じになります。
# gitignore 2015-01-12
*~
app/cache/
app/logs/

.gitignoreの書き方のルール

  • ハッシュ記号で始まる行はコメントとして扱われる
  • 空行は無視される
  • ! マークで始まる行は残りのパターンを否定します
  • スラッシュ/で終わる場合はディレクトリのみを表す
  • スラッシュ/で始まる場合はルートディレクトリからを表す
  • どこにもスラッシュ/が無い場合はシェルのglobパターンとしてファイル名のベース部分にマッチするか検査される
  • 複数マッチするパターンがある場合は最後にマッチするものが優先される

.gitignoreする前にaddした場合は

addしちゃうとすでにバージョン管理下におかれてしまうので、addちゃったものはrmしないとダメです。
$ git rm --cached cashe/example.tmp
これでバーっと消してしまいます。相当大量にある場合は、いろんなコマンドがあるけど私の場合はgit statusから除外ファイルをコピペしてバーっとファイルに書いて頭にgit rm --cachedをつけてコマンドとして実行しちゃいます。
またディレクトリ以下の場合は-rオプションをつけてください。
$ git rm -r --cached .gitignore
ここまでできたら、もう一回addしてcommitしてください。

.gitignoreの雛型

私の場合例外がなければだいたいがユーザーディレクトリ直下に.gitignoreを置きます。gitignoreファイルの雛型を環境に合わせて作成するサービスもあるみたいです。
https://www.gitignore.io

# linux
.bash_history
.bash_logout
.bash_profile
.bashrc
.gitconfig
.gitignore
.mysql_history
.ssh/
.viminfo

# exclusion dir
backup
batch
log
tmp

# mac
.DS_Store
.DS_Store
.AppleDouble
.LSOverride
Icon

http://qiita.com/yuuAn/items/b1d1df2e810fd6b92574
http://www.omakase.org/misc/gitignore.html