スポンサーリンク

.gitignoreを書いても反映されない?!.gitignoreの使い方や注意点を一覧でまとめたよ!

Gitを使う上でほぼ必須とも言える.gitignoreファイル。皆さん使っていますか?

今回は.gitignoreの基本的な使い方、及び.gitignoreを使う上で発生しがちな問題の解決方法についてご紹介します。

スポンサーリンク

.gitignoreって何?何ができるの?

.gitignoreはGit用の設定ファイルです。
.gitignoreを使うことで任意のファイルをGit対象外として指定することができ、より効率的にプロジェクトを運用することができます。

.gitignoreを使わないとどうなるの?

.gitignoreを使わないとプロジェクト内に存在する全てのファイルが強制的にGit管理されます

そうするとコミット毎に実際に変更したファイルがわからなくなり、レビューする時にも差分ファイルが1000を超えたりと、非常にカオスな状態になります。

私の経験上自動生成されたファイルが差分として大量に紛れ込んでいると、レビューが一切機能しなくなり大惨事になります。
(差分ファイルが1000ファイルを超えると一部ファイルは差分一覧に表示されなくなります)

.gitignoreの使い方

.gitignore.git.gitconfigと同じくただのテキストファイルです。そのためvimechoなどで簡単に編集することができます。

.gitignoreの配置場所

.gitignore.gitと同じくプロジェクトのルートフォルダに配置します。

.gitignoreの書き方

.gitignoreの書き方は非常にシンプルで、1行につき1つの除外ファイル/除外フォルダの指定を書くだけでOKです。

例えば以下の例ですと、sample-folder/setting/autogen-setting.jsonというファイルが除外対象として指定されています。

特定のファイルを除外したい

先頭に/を書き、拡張子込みのファイル名を書きます。

sample.txt

特定のフォルダを除外したい

先頭と末尾に/を書き、フォルダ名を間に書きます。

/Sample/

ワイルドカードの活用方法

.gitignoreは正規表現に対応しています。
そもためワイルドカードを使用し、以下のような指定ができます。

特定の拡張子を除外したい
*.txt

正規表現の活用方法

.gitignore*以外にも様々な正規表現に対応しています。

*

/以外の0文字以上の文字列にマッチ

?

/以外の1文字にマッチ

[0-9]や[Aa]

[]で囲まれた範囲の一文字、もしくは[]で羅列された一文字にマッチ

**

0個以上のファイルやディレクトリにマッチ

コメントの記述方法

#で始まる行はコメントとして扱われます。

除外の例外ファイルの記述方法

!で始まる行は除外しないファイルの指定として扱われます。

以下の例ですとSample/keep.txtはコミット対象として残ります。

# Sampleフォルダ内の全てのファイルを除外
/Sample/

# Sampleファイル内のkeep.txtだけやっぱりGit管理させる
!/Sample/keep.txt

.gitignoreが反映されない場合の対応方法

.gitignoreを書いても「あれ?うまく除外されない?」となることが経験上結構あります。

その際気をつけるべきこと、及びそうならないようにすべき対応をご紹介します。

パスが間違えている

typoなどでパスの指定ミスが有る場合ですね。

ワイルドカードの使い方が間違えており、パスが想定通りに認識されていない可能性もあります。

ファイルが既にGitで管理されている

.gitignoreを作成する前に、1件でもコミット履歴があればこの問題が発生する可能性があります。

.gitignoreは非常に便利で強力ですが、この設定は今までGit管理されていないファイルにのみ有効です。

例えばプロジェクトで自動生成されたファイルを一度全てコミットした後、.gitignoreをどう更新しても一度コミットされたファイルは除外対象外となります。

既にコミットされたファイルを.gitignoreで除外する方法

コミット済みのファイルをGit管理対象から除外する場合、一度そのファイルのキャッシュをGitから削除する必要があります。

特定のファイルのキャッシュを削除
$ git rm --cached <file-path>
特定のフォルダのキャッシュを削除
$ git rm -r --cached <folder-path>

おわりに

いかがでしたでしょうか?

.gitignoreはほぼ全てのプロジェクトで書きますが、1プロジェクトに付き基本1回しか書かないので、中々ノウハウが溜まっていかないんですよね…。

みなさんが.gitignoreを作る時にこの情報がすこしでもお役に立てたなら嬉しいです!

それではまたお会いしましょう。

コメント

タイトルとURLをコピーしました