.gitignore(テキストファイル)を利用すると、Gitで管理するリポジトリ内のファイルやディレクトリを、その管理対象から外すことができます。
リポジトリ内にsample.txtが存在したとして、このファイルをGit管理から外してみます。
リポジトリ内に「.gitignore」ファイルを作成し、sample.txtと記述し保存します。
1 |
vi .gitignore |
1 |
sample.txt |
作業ツリーからsample.txtが消え、Gitの管理対象から外れたことが確認できます。代わりに.gitignoreファイルが表示されるのでコミットまで完了させます。
Sourcetreeの「設定>高度な設定>編集」ボタンで起動するテキストエディタでも.gitignoreファイルを直接編集することができます。(下記画像はMac版)
管理対象から外すファイルを直接選択することも可能です。下記画像のように「無視」を選択します。
すると下記のような画面が表示されるので「このリポジトリのみ」を選択し「OK」をクリックします。直接編集と同様に、.gitignoreファイルに書き込まれます。もし「グローバル無視リスト」を選択した場合には、現在作業しているリポジトリ以外の他のリポジトリ内のsample.txtファイルもGit管理対象外に指定されるので注意して下さい。
「グローバル無視リスト」を選択した場合は、.gitignoreファイルではなく、例えばMacの場合は下記の場所にある.gitignore_global ファイルが編集されます。
1 2 |
cd ~/ cat .gitignore_global |
Github上でも「Create new file」ボタンをクリックして表示される画面から、.gitignoreファイルを作成することができます。
.gitignoreファイルの記述例
1 |
#はコメントです。 |
1 2 3 4 5 |
#txtという拡張子のファイルをすべて管理対象から外す *.txt #ただし!は例外として管理対象に含める !sample.txt |
1 2 |
#aiueoディレクトリ以下は管理対象から外す aiueo/ |
1 2 |
#.gitignoreファイルのあるルートディレクトリ以下のaiueoディレクトリ /aiueo |
/の位置には注意が必要です。/の位置がはじめにある場合には、.gitignoreファイルのあるルート以下のaiueoディレクトリのみを表します。
仮に.gitignoreファイルに「/aiueo」と指定している場合、下記のようなディレクトリ構造ではpublic/aiueoディレクトリ以下の方はGitの管理対象に含まれます。
1 2 3 4 5 6 |
├── .gitignore ├── aiueo │ └── sample.txt └── public └── aiueo └── sample.txt |
すでにコミットしたファイルを再度管理外にする
すでにコミットしてしまったファイル、つまりGit管理されたファイルを再びの管理外にするには、「追跡を停止する(やめる)」必要があります。
仮にsample.txtが過去すでにコミットしたことのあるファイルだとします。これをSourcetreeで管理対象外にするには、まず目的のファイル上で右クリックから「追跡を停止する」を選択します(下記はMac版)。
Gitコマンドでの場合は、下記のようにします。「–cached」オプションを指定することに注意して下さい。
1 |
git rm --cached sample.txt |
以上をおこなった後に、.gitignoreファイルにsample.txtを追記し再度管理対象外とします。