最終更新日:2022年11月07日
gitignoreの書き方チートシート【テンプレあり】
.gitignoreのチートシートです。
毎度忘れてググっているので頻繁に使う用法をまとめました。
gitignoreとは
Gitシステムの管理対象から除外したいファイルを指定するためのファイル
.gitignoreファイルの作成
除外ファイルを指定したいフォルダに.gitignoreというファイル名のファイルを作成
しかし拡張子のみのファイルは標準のテキストエディタ(Windowsのメモ帳など)では作成できないので、以下の方法が用いられる
- プログラミングする際に使っているテキストエディタで作成(SublimeText、VSCode)
- 元からあるファイルを複製
なかなか面倒なので、一旦作成したら別のプロジェクトでもその.gitignoreファイルをコピーしてきて再利用するのが現実的
作成できたら、Git管理から除外したいファイルやディレクトリを指定
コメント
# コメントはこのように"#"を使う
特定のファイルを無視する
特定のファイルのみ指定する場合は以下のようにバスを明記したうえで指定
# 特定のファイルを無視 /directory_name/file_name.log # 特定のディレクトリを無視 /directory_name/
ファイル・ディレクトリの名前を指定する
この名前と一致している、.gitignore以下の全サブディレクトリ下にあるファイル・ディレクトリを無視
file_name
この場合、以下のようなファイル構成になっているとfile_nameもdirectory_name/file_nameも両方Git管理から除外されることに注意
├.gitignore
├file_name
└directory_name
└file_name
特定の拡張子を無視する
ワイルドカードを使って無視したいファイル・ディレクトリを指定することができる
例えば特定の拡張子のファイルのみ指定したい場合などに重宝する
# すべての.dbファイルを無視
*.db
ワイルドカードの使い方
* # 文字列すべてにマッチ(スラッシュ記号除く) ? # 1文字にマッチ [0-9] # 0-9の数字にマッチ
特定のフォルダの中身全てを無視する
# src フォルダの中身をすべて無視
src/
Githubにフォルダ自体は残しておきたい
- 空のディレクトリをGitに残すことはできない
- 残しておきたいフォルダの中に.gitignoreファイルを作成することで対応可能
# directoryという空フォルダを残したい場合 ├.gitignore ├file001 └directory └.gitignore
エスケープ(エクスクラメーション)の使い方
#などの文字はそのままだとコメントアウトとして認識されてしまうので、\(バックスラッシュ)でエスケープする。
\#.html # CMSの仕様でバックスラッシュが\マークになってしまうのですが…ここはバックスラッシュです
gitignoreが反映されない場合
後からgitignoreに追加した
- 一度Gitに登録されたものを後からgitignoreに追加すると、gitignoreに指定されているにも関わらず反映されないことがある
- 一度ファイルをプロジェクトフォルダ外に移動
→コミット
→gitignoreを編集
→ファイルを元の場所に戻す
- 一度ファイルをプロジェクトフォルダ外に移動
キャッシュが残っていた
- 下記コマンドを実行すれば解決
- なおファイルを削除するわけではないので心配しなくて大丈夫
$ git rm -r --cached . //ファイル全体のキャッシュを削除 $ git rm -r --cached [ファイル名] //ファイルを指定してキャッシュ削除
それでも効かない場合
一回全部消してからすべて追加しなおす
$ git rm -r --cached $ git add . $ git commit -m "message here"
グローバルで.gitignoreを指定したい場合
プロジェクト作るたびに毎度毎度.DS_Storeなど指定するのにウンザリな方向け
git config --global core.excludesfile ~/.gitignore_global
node_modulesを誤ってインデックス登録してしまった場合
# インデックスからnode_modules以下を削除 $ git rm -r --cached node_modules $ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitignore new file: app.js new file: index.jade new file: package.json
.gitignoreを自動生成する(gitignore.io)
gitignore.ioとは
- gitignoreファイルのテンプレートをWebからアクセスしやすいようにしたサービス
- それぞれの言語に最適化したテンプレート一覧を用意
Pythonのテンプレート
Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/