gitignore メカニズムが検索する設定ファイル
特定のファイルを Git のバージョン管理の対象から外すための仕組みとして、gitignore メカニズムが用意されています。 そのための設定ファイルは、下記のようなパスから検索され、最初に見つかったものが優先的に使用されます。
- ワークツリー中のディレクトリに置かれた
.gitignore
ファイル - リポジトリの
.git/info/exclude
ファイル - 構成変数
core.exludesfile
でパスを指定したファイル
ワークツリー内に置く .gitignore
ファイルは、どの階層のディレクトリにも置くことができ、より下位のディレクトリにある .gitignore
ファイルによる設定が優先されます。
プロジェクト全体で設定を共有したい場合は、.gitignore
に設定を記述し、これをコミットしてチームメンバと共有します。
特定のリポジトリで、自分用に設定を行いたい場合は .git/info/exclude
に設定を記述します。
どのリポジトリにも共通した、自分専用の設定を用いたい場合は、例えば $HOME/myconf/git-excludes
といったファイルに設定を記述しておき、git config
で以下のように参照設定しておけばよいでしょう。
$ git config --global core.excludesfile "$HOME"/myconf/git-excludes
上記の例では、グローバルな設定値にしていますが、--global
オプションを外せば、特定のリポジトリ用に設定することも可能です。
.gitignore ファイルの構文
# コメント行
aaa # aaa というファイル、あるいはディレクトリを無視。
bbb/ # bbb というディレクトリを無視。
/ccc # .gitignore ファイルのあるディレクトリからの相対パスで
# ccc というファイル、あるいはディレクトリを無視。
# つまり、この場合は .gitignore ファイルと同じディレクトリ内にある
# ccc というファイル、あるいはディレクトリを示す。
*.class # 名前が .class で終わるファイルを無視
*.[ao] # 名前が .a あるいは .o で終わるファイルを無視
!ddd.o # ただし、ddd.o というファイルは無視「しない」
!/eee.a # .gitignore ファイルと同じディレクトリの eee.a というファイルは無視「しない」
設定例
デフォルトでは、以下のような一時ファイルまで git status
コマンドなどで認識されてしまうので、これらのファイルを版管理の対象からはずしておくとよいです。
- ファイル名がチルダで終わるバックアップファイル
hello.txt~
- C/C++ プログラムビルドで作成される
*.a
や*.o
ファイル - Java プログラムビルドで作成される
*.class
ファイル - Vim でファイル編集中に作成される
.hello.txt.swp
のようなファイル - quilt の管理ディレクトリ
.pc
例えば、次のように設定します。
プロジェクトによっては、コンパイル済みの *.a
ファイルなどもコミットするかもしれないので、*.[ao]
より *.o
の方がよいかもしれません。
ignore 設定したファイルを git add する
gitignore によってバージョン管理の対象外にされているファイルを、強制的に git add
するには、次のように -f
オプションをつけて git add
します。