Git 無視ファイル .gitignore の作成
Git のファイル追跡
Git ではファイルの状態を、大きく三つに分けられます。
- Tracked (追跡している状態)
- Untracked (追跡していない状態)
- Ignored (無視している状態)
一度、コミットした (リポジトリに追加) したファイルはバージョン管理下にあると考えます。この状態が Tracked です。
まだ一度もコミットしていないファイルは Untracked の状態です。
基本的に Git は全てのファイルを追跡しようとしますので、プロジェクト内に新しいファイルが作成されると Untracked のファイルとして認識します。
しかし、特にソフトウェアのビルドした時の中間ファイルなど、バージョン管理が全く不要なファイルも存在します。
バージョン管理の不要なファイルは、次に紹介する .gitignore という名前のファイルに記述しておくことで、 Git が全く追跡を行わないようになります。
Git の .gitignore とは?
Git によるファイルのバージョン管理の追跡を全く行わなう必要のないファイルについては、 .gitignore というファイルに記述します。
すると、Git は変更を変更を検出しないようになります。
.gitignore ファイルの作成場所
.gitignore ファイルはプロジェクトのルートディレクトリに作成します。
tree -a -L 1
.
├── .git # ディレクトリ
└── .gitignore
ユーザー毎に毎回使う .gitignore ファイル
設定ファイルに、ユーザー毎に毎回使う .gitignore を設定できます。
例えばホームディレクトリ ~/ に .gitignore_global という名前のファイルを置いておき、 毎回このファイルが取り込まれるようにするには次のコマンドで設定します。
git config --global core.excludesfile ~/.gitignore_global
Git の設定については「Git の初期設定」も参考にしてください。
1行毎にファイル名を記述します。
無視するファイルとしてディレクトリを指定することもできます。ディレクトリを指定すると、そこに含まれるファイル全て無視されます。 ディレクトリを指定する時は名前の最後に / をつけます。
例えば、ファイル .DS_Store やディレクトリ node_modules/ 以下を無視する場合には、次のようにします。
.DS_Store
node_modules/
Git で無視しているファイルの表示
Git で現在のワーキングディレクトリの状態を表示するコマンドは、 git status です。 状態表示の際、無視しているファイルも表示するには --ignored をつけます。
git status --ignored
.NET プロジェクト向けに .gitignore ファイルを作成
Microsoft のアプリケーションフレームワークである .NET プロジェクト向けに .gitignore ファイルを作成するには、 dotnet コマンドを利用できます。
dotnet new gitignore
Git で以前トラックしていたファイルをトラック中のファイルから削除する方法
プログラムの開発をはじめてから、ビルドされる (生成物の) ファイル類などを、git による追跡の対象外にしたい場合があります。この場合、それらのファイルは既にリポジトリに存在するために、.gitignore にエントリを追加するだけでは追跡対象から削除できません。
途中でリポジトリから削除して、.gitignore ファイルの内容にリフレッシュするには次のコマンドを実行します。
# はじめに作業中のファイルをコミット
git rm -rf --cached .
git add .
git commit -m "Yay! Refreshed!"