Gitでコード管理をしているときに、このファイルやこのディレクトリはGitでコード管理したくないといったものがでてきます。
「.gitignore」を使うと、指定したファイルやディレクトリをとても簡単にGitの管理対象から外すことができます。
ここでは「.gitignore」の作成方法を実例でまとめています。
.gitignoreとは何か?
.gitignoreとは、Gitでコード管理したくないファイルやディレクトリを指定するためのファイルです。
冒頭の「.」は隠しファイルであることを意味しています。
ignoreとは無視するという意味なので、git + ignoreでGitで無視するリストといった意味になります。
.gitignoreをいつ使うか?
.gitignoreを使うのは、個人のPC環境(OS)に依存するファイルやパスワード関連の重要なファイルなどです。
git pushでGithubのリモートレポジトリにプッシュしないようにするために使います。
例えば、nodeのモジュールが入る「node_modules」のディレクトリ、アプリケーション起動のための重要な環境変数を記述する「env」がついたファイルなどがあります。
.gitignoreの注意点
.gitignoreでGitのコード管理から無視できるのは、まだ一度もGitで管理されていないファイルやディレクトリのみです。
既にGitで管理しているものは、.gitignoreに記述しても無視することはできません。
.gitignoreの作り方
.gitignoreはデフォルトでは存在していないので、必要に応じて自分で作成する必要があります。
生成方法はとても簡単で、普通のファイルを作成するのと同じ要領です。作成場所は「.git」ファイルがあるディレクトリ(git initしたディレクトリ)です。
実例
touchコマンドでgitignoreを作成します。
$ touch .gitignore
ファイルが生成できたか確認します。
$ ls -a | grep git
.git/
.gitignore
「.git」と同じ場所に、「.gitignore」があることがわかります。
.gitignoreの書き方
.gitignoreの記述では、ファイルパスやディレクトリパスを指定するだけでなく、パターンマッチングで該当するもの一式を指定することもできます。
.gitignoreで使用できる主な記号は以下のなります。
記号 | 意味 | 例 |
---|---|---|
# | コメントアウト | # この行はコメントアウトです |
* | 0回以上の繰り返し | *env* |
** | 全てのディレクトリ | **/dir, a/**/b |
/** | 全てのファイル | dir/** |
? | 任意の1文字( /以外) | a??b |
[] | カッコの中のどれか1文字 | [Dd]velopment, test-[a-zA-Z][1-9].txt |
! | 除外しない(※親ディレクトリが除外されている場合は無効) | !model/user* |
エディタで.gitignoreを起動して、除外したいファイルを記述し保存すれば完了です。
.gitignoreを起動するには、VSCodeを使っている場合は以下とします。
code .gitignore
vimエディタを使う場合は以下のようにします。
vi .gitignore
実例
例えば、現在git statusの状況が以下のようになっているとします。
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .htaccess
modified: wp-config.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.dev-env
.env
.gitignore
test/
no changes added to commit (use "git add" and/or "git commit -a")
新規ファイルとディレクトリとして「.dev-env」「.env」「test/」が認識されています。(※「test/」はディレクトリです)
また、変更済みのファイル(modified)として「.htaccess」「wp-config.php」が認識されています。
これらをGitのコード管理から無視するには.gitignoreに以下のように記述します。
なお、既にGitで管理されているファイルやディレクトリは無視できないことを確認するために、「.htaccess」「wp-config.php」も記載しておきます。
#既にGit管理されているものは無視される
.htaccess
wp-config.php
#ワイルドカードで指定
*env*
#ディレクトリを指定
**/test
再度git statusを実行すると、Gitがまだ管理していなかった新規のファイルやディレクトリが「Untracked files」から外れていることがわかります。
$ git st
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .htaccess
modified: wp-config.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
no changes added to commit (use "git add" and/or "git commit -a")