Git の除外ファイルについて

Git リポジトリ内の任意の場所にファイル .gitignore を配置することで,そのディレクトリ内のファイル・ディレクトリをGitの管理から除外することができる.

.gitignore の記法

以下の入力規則に従って,Git の管理から除外したいファイルを各行に記述する.

基本

空行は無視される.

ファイル名を記述すると,.gitignore のあるディレクトリとその配下にある全てのディレクトリにある該当ファイル名のファイルが除外される.
foo.txt と記述すれば,.gitignore のあるディレクトリ内にある foo.txt に加え,サブディレクトリaaa にあった,aaa/foo.txt も除外される.

foo.txt

末尾に「/」を記述すると,.gitignore のあるディレクトリとその配下にある全てのディレクトリにある該当ディレクトリ名のディレクトリが除外される.
foo/ と記述すれば,.gitignore のあるディレクトリ内にあるディレクトリfoo や,サブディレクトリaaa にあった aaa/foo/ も除外される.

foo/

行頭に「/」を記述すると,.gitignore のあるディレクトリにあるファイル・ディレクトリが除外される.
/foo.txt と記述すると,.gitignore のあるディレクトリ内にある foo.txt は除外されるが,サブディレクトリaaa にあった,aaa/foo.txt は除外されない.

/foo.txt
/foo/
/doc/aaa/foo.txt

コメントアウト

# から始まる行は無視される.

# "#" から始まる行はコメントアウト

エスケープ

!」やスペース,「#」を入力したい時は,「\」(バックスラッシュ) を用いて,\!\ \# のようにする.

ワイルドカード

*」はスラッシュ以外の0文字以上の文字に対応するワイルドカード

# ファイル名が foo. で始まる全てのファイルを除外する
foo.*

# 全ての pdfファイルを除外する
*.pdf

?」はスラッシュ以外の1文字に対応するワイルドカード

foo_?.txt

正規表現の文字クラス([0-9][a-zA-Z]など)を使用することも可能

foo_[0-9].txt

「**」は,特別な意味を持つ場合がある.

**/」を行頭に置くと,任意のディレクトリを意味する.

# あらゆるディレクトリa 下の foo を除外
**/a/foo

/**」を行末に置くと,その中の全てを意味する.

# ディレクトリaaa 下の全てのファイルを除外
aaa/** 

/**/」で,0個以上のディレクトリに対応
例えば,a/**/b は,a/b, a/c/b, a/c/d/b などに対応

追跡ファイル・ディレクトリの設定

一度パターンによって除外されたファイルを再度追跡対象に含めるようにする.

例えば,foo.pdf 以外のpdfファイルを除外したい場合,

*.pdf
!foo.pdf

ファイル foo.txt のみを追跡したい場合,

*
!foo.txt

ただし,そのファイルの親ディレクトリが除外されている場合は、そのファイルを再び含めることはできない.

サンプル

TeX のプロジェクトの場合

*.aux
*.bbl
*.blg
*.log
*.gz
*.xcf
*.fls
*.tmp

参考文献