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
参考文献
- “Recording Changes to the Repository” Git https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
- “gitignore Documentation” Git https://git-scm.com/docs/gitignore
- 「.gitignore の書き方。ファイル/ディレクトリの除外」WWWクリエイターズ https://www-creators.com/archives/1662
- 「Gitの除外ファイルを設定するgitignoreの設定方法」CodeAid-Lab https://codeaid.jp/blog/gitignore/