未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

【Git&GitHub】バージョン管理しないファイルは無視しよう(.gitignoreファイル)

title


バージョン管理しないファイルは無視しよう

今回はGitでバージョン管理したくないファイルを無視するやり方について見ていきます。


バージョン管理したくないファイルというのには大きく2種類あります。


1つ目がパスワードなどの秘密情報が記載されたファイルです。

パスワードをバージョン管理してしまって、それをGitHubに上げて公開するとパスワードが流出することになります。

時々AWSなどのサーバーのパスワードをバージョン管理してしまって、それが流出して、そのパスワードを悪用され、多額の請求をされるという事故が定期的に起こっています。

そのようなことは、GitHubなどに自分のパスワード情報を載せて公開してしまっているケースが多いです。

ですので、パスワードなどの機密情報を載せたファイルはバージョン管理からは外すようにしましょう。


もう1つがチームの開発で必要ではないファイルです。

例えばWindowsやMacで自動生成されるファイルやキャッシュなどです。

こういったファイルはチーム開発には必要ないので、Gitの管理からは外しておきましょう。


それではバージョン管理しないファイルをGitの管理から外す方法についてみていきましょう。


そのやり方は「.gitignore」ファイルにそのファイル名を指定することです。


「.gitignore」ファイルに先ほど見たような「自動生成されるファイル」や「パスワードが記載されているファイル」といったバージョン管理すべきではない、もしくはする必要がないファイルを記載していきます。


それでは具体的な「.gitignore」ファイルの書き方を見ていきましょう。

# #から始まる行はコメント

# 指定したファイルを除外
index.html
# ルートディレクトリを指定
/root.html
# ディレクトリ以下を除外
dir/
# /以外の文字列にマッチ「*」
/*/*.css


まず「#」から始まる行はコメント行として扱われます。


次にファイル名を直接指定した場合、そのファイルが除外されます。

たとえば「index.html」と指定すると、そのファイルがGitの管理から除外されます。


次にルートディレクトリを指定する場合は、「/」から書き始めます。

ルートディレクトリというのは、そのプロジェクトの一番トップのディレクトリです。


次にディレクトリ以下を除外したい場合、ディレクトリそのものを除外したい場合は、ディレクトリ名の一番後ろに「/」をつけます。


最後に、ワイルドカードです。

「/」以外の文字列にマッチさせたい場合は「*」を使います。

例えば、「/*/*.css」と指定すると、一つディレクトリを潜った階層にある任意のCSSファイル全てをGitのバージョン管理から除外することができます。


実際にやってみよう

ではターミナルで実際にやってみましょう。


「git_tutorial」に移動します。

今のGitの状況を確認します。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean


すると何も変更されていません。


ではここで新規ファイルを作成してみます。

今回新規ファイルを作成するのに、「touch secret.txt」とします。

$ touch secret.txt


「touch」とは空ファイルを作成します。

今回は「.gitignore」の動き方を見たいだけなので、空ファイルを作成するだけで十分です。

「secret.txt」というのは何か秘密情報を保存するためのファイルになります。


では「ls」をして、ファイル状況を確認してみましょう。

$ ls
index.html  secret.txt


確かに「secret.txt」が作成されています。


では「git status」で状況を確認してみます。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    secret.txt

nothing added to commit but untracked files present (use "git add" to track)


すると「Untracked files」と、まだGitに追跡されていないファイル、つまりステージに追加されていないファイルに「secret.txt」というファイルがあると表示されています。


ここで「.gitignore」ファイルを作成してみます。


テキストエディタで新規ファイルを作成し、

「secret.txt」

と入力し保存します。


保存先は「git_tutorial」ディレクトリの下に「.gitignore」という名前でファイルを保存してください。

ターミナルに戻り、「git status」と入力します。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    .gitignore

nothing added to commit but untracked files present (use "git add" to track)


すると「Untracked files」の内容が変わっています。


今「.gitignore」ファイルを作成したので、そのファイルがまだGitに追加されていないと表示されています。

たしかにその通りですが、ここで注目して欲しいのは、先ほどまで存在していた「secret.txt」ファイルがここに表示されてないことです。


このように「.gitignore」にファイル名を指定すると、そのファイルをGitのバージョン管理から外すことができます。


このようにパスワードであったり、自動生成されるファイルというのはGitのバージョン管理から外すようにしましょう。


では、せっかくですので「.gitignore」ファイルをGitにコミットして記録しておきましょう。

コミットメッセージは「.gitignoreファイルを追加」としておきます。

$ git add .

$ git commit -m '.gitignoreファイルを追加'
[main 046df59] .gitignoreファイルを追加
 1 file changed, 1 insertion(+)
 create mode 100644 .gitignore


参考図書



独学で挫折しそうになったら、オンラインプログラミングスクール
未来エンジニア養成所Logo



あわせて学習したい

phoeducation.work