べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【GitHub】不要ファイルを管理出来る「.gitignore」解説【パスワード流出などを防げる】

Git Programming Basic

こんにちは、ちくたっく(@tictak_py)です。

今回は、不要なファイルやディレクトリの管理設定が出来る「.gitignore」について紹介します。

どのような場面で使えるかというと、「自動生成されるファイル」や「機密情報を含んだファイル」をGitHubにアップロードしたくないような場合に使える方法になります。

ローカル環境でファイルやディレクトリを作成し、特に意識せずにGitHubにプッシュするとすべてのデータが公開されてしまうため「これはgit管理から外したいな」という時に使ってみてください。

こんな方に読んで欲しい記事です

  • 「.gitignore」ファイルを設定することで不要データをgit管理対象外にしたい方
  • GitHubで使われている基本的なコマンドを学んでいきたい方

今回は、以下のようなディレクトリ&ファイル構成で、指定したファイルがGitHub上で公開されないように「.gitignore」ファイルを設定していくことを目的としていきます。

今回の目的イメージ図

【GitHub】データを管理対象外にする「.gitignore」

今回使うデータの作成(事前準備)

まず最初に、先ほど示したディレクトリやファイルを作成して以下のような状態にしておきます。

ディレクトリ&ファイル構成の確認
ディレクトリ&ファイル構成の確認 (GUI)

今回GitHubにアップロード(公開)したくないファイルは、①機密情報を含んだ「password.txt」と②「project」ディレクトリ内にある3つの「index.html」ファイルを想定していきます。

【再掲】今回GitHub上に公開したくないファイル

この後、「.gitignore」ファイル関連の設定をしなかった場合と設定した場合の挙動を確認していきます。

「.gitignore」ファイルを設定しない場合

まず、「.gitignore」ファイルの設定をせずに、通常通り操作したらどうなるでしょうか?当然と言えば当然ですが、何も設定していないのですべてのファイルがGitHub上に公開されてしまいます。

一応GitHub操作の復習も兼ねて確認してみます。
以下では、現状を「git status」で確認の上、「git add」「git commit」「git push」しています。

「.gitignore」ファイル設定をせずに、GitHubにpushした場合

「GitHub」を確認した結果が以下となります。

「GitHub」に公開したくないファイルが存在(1/2)
「GitHub」に公開したくないファイルが存在(2/2)

すると、公開したくないファイルまでもがGitHubにアップロードされてしまっていますね。このような場合に使える方法が「.gitignore」ファイルの設定となります。

この後、「.gitignore」ファイル関連の設定として以下「3つ」の方法を紹介していきます。

今回紹介する「.gitignore」ファイル関連の設定方法

  • ディレクトリ直下にある「指定ファイル」をgit管理対象外とする方法
  • 特定の「ディレクトリ」をgit管理対象外とする方法
  • 「ワイルドカード」を用いて特定ファイルをgit管理対象外とする方法

「rm」コマンドを用いた戻し作業(参考)

「.gitignore」ファイルの設定を紹介する前に、元の状態に戻す作業をしておきます。
今回の趣旨とは関係ない部分になるので、「早くignoreする方法を知りたい」という方は読み飛ばしちゃってください。

ここでは、ローカルファイルの内容を残しつつ、git上のファイルを削除しています。

「git rm」コマンドを用いた戻し作業
「GitHub」の状態を元に戻したことの確認

これで、GitHubに公開されていたファイルをクリアして元の状態に戻すことが出来ました。ここで使っているコマンドは以下記事でも紹介しているので、良ければ参考にしてみてください。

「.gitignore」ファイルを設定した場合

では実際に「.gitignore」ファイルを設定していきます。
「.(ドット)」が付いていますが、これは「隠れファイル」を意味します。

ファイル設定のプロセスとしては、①「.gitignore」ファイルを作成し、②ファイル内で「除外したいファイルやディレクトリ」を指定するといった2ステップが必要になります。

「.gitignore」ファイルの作成

「.gitignore」ファイル内の基本的な書き方は以下の通りです。

  • ファイルを除外する場合 ・・・ <ファイル名>を指定
  • ディレクトリを除外する場合 ・・・ <ディレクトリ名/>を指定
  • ワイルドカードを使う場合 ・・・ 「*」を使う

今回のケースでは、以下のように記載します。
これは、ディレクトリ直下にある「password.txt」を除外し、ディレクトリ「project」内にある「htmlファイル」を除外する(pythonファイル「main.py」は残す)指定をしています。

「.gitignore」ファイル内の記載

「.gitignore」ファイル関連の設定が完了したので、先ほどと同じくGitHubにpushしてみましょう。

「.gitignore」ファイル設定をして、GitHubにpushした場合

すると、「git commit」した段階で「指定したファイル群」が表示されていないことがわかります。pushした上でGitHubをのぞいてみます。

「GitHub」に公開したくないファイルがないことを確認(1/2)
「GitHub」に公開したくないファイルがないことを確認(2/2)

GitHubを確認してみると、先ほどとは異なり「指定したファイル」が存在しないことがわかりますね。

このように、「.gitignore」ファイルを利用することで、GitHubに公開したくないファイルやディレクトリを管理することが出来ます。

さいごに

今回は、git管理から除外するための方法「.gitignore」について紹介してきました。

チーム開発を行っていたり、扱うプロジェクトファイルが多くなっている場合には、極力不要なデータはGtiHubにアップロードしない方がいいので、セキュリティ対策も兼ねて使えるようにしてみてください。

では今回はこのへんで。