[Git+GitHub] ソースコード管理除外(gitignore)

HOME->講習会->プログラミングセミナー->Git+GitHub


コンパイル後の実行ファイルなどについては,Gitで管理しないほうが便利なときがあります.管理対象外にする方法として,gitignoreがあります.ここでは,gitignoreについて解説します.

目次

gitignore
ソースコードの管理除外
ソースコードの管理除外の例外

gitignore

gitignoreを用いることで,前述したようにGitで管理するファイルの設定することができます.「リポジトリの作成とclone」で,「リポジトリを作成する際には自身の使う言語のものを選ぶようにしてください」と説明しましたが,GitHubには各言語ごとのgitignoreのテンプレートを自動生成する機能があり,それを選択してもらって自動生成していました.実際にローカルリポジトリを確認すると「.gitignore」ファイルがあると思います.これが,gitignoreの設定ファイルになります.例えば,C++のgitignoreテンプレートは以下のようになっています.「#」を付けるとその行はコメントになります.

# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

テンプレートのみで十分であればよいですが,1つのリポジトリで複数のプログラミング言語が含まれていたり,そもそもテンプレートがない場合もあります.そのような場合には,gitignoreの設定を自身で行う必要があります.

ソースコードの管理除外

基本的には,.gitignoreファイルに管理対象外としたいファイルのパスを入力すれば管理対象外となります.たとえば,buildフォルダ内のa.outというファイルを管理対象外にしたい場合には,以下のように記述します.

build/a.out

.gitignoreファイルに上記を記述するとgit addコマンドやgit commitコマンドを実行する際に上記のファイルが含まれなくなります.また,ファイルだけではなく,ディレクトリを設定することもできます.例えば,buildフォルダを管理対象外とする場合には以下のように記述します.

build/

.gitignoreファイルに上記を記述するとgit addやgit commitを行ってもbuildフォルダ内に含まれるすべてのファイルが管理対象外となります.「/」をつけ忘れると「build」とマッチするファイルを対象外とするという設定になるので,ディレクトリを場外するときは語尾に「/」をつけ忘れないようにしましょう.

このgitignoreの設定ではワイルドカード「*」を使用することができるので,例えば,示したC++のgitignoreテンプレートのように拡張子が「.out」のものをすべて除外とするには以下のように記述します.

*.out

ソースコードの管理対象外の例外

gitignoreでは,フォルダやワイルドカードを用いて一括でコードの管理対象外にすることができますが,場合によっては管理対象外にしたいフォルダの中に管理したいファイルが1つだけあるというようなことがあります.そのようなときには例外的な設定をすることができます.例外にする場合には,「!」を付けて,管理対象にしたいファイル名やディレクトリを入力します.例えば,buildフォルダを管理対象外としたけど,buildフォルダ内のMakefileというファイルは管理対象にしたいという場合には以下のように記述します.

build/
!build/Makefile

.gitignoreファイルに上記のように記述するとgit addやgit commitを行ってもbuildフォルダ内のMakefile以外はすべて管理に含まれなくなります.