はじめに
Git を利用する際 .gitignore
にファイルやディレクトリを指定することで、リポジトリ管理の対象から除外することができます。
例えば Windows の場合のThumbs.db
や macOS の .DS_Store
といったプラットフォーム別の制御ファイルであったり、各種エディタの一時ファイルやログ・ファイルなどは、うっかりリポジトリに登録しないように予め .gitignore
に定義してリポジトリ管理の対象から除外すべきです。
色々な環境やツールを考慮した .gitignore
ファイルを定義するのも以外と大変です。
ここでは、Github の公開するテンプレートから簡単に .gitignore
ファイルを作成する方法を紹介します。
Github 管理の .gitignore テンプレート
Github で様々な言語やツールの .gitignore
テンプレートが公開されています。
以下のようになっています。
- ルートフォルダには、一般的なプログラミング言語とテクノロジのテンプレート
- Global には、各種エディター、ツール、およびオペレーティングシステムのテンプレート
- community には、現在主流のテンプレートに属していない言語、ツール、環境などのテンプレート
ルートにあるものか、Global にあるもので事足りると思います。
.gitignore の作成
Githubが公開するテンプレートから、コマンドラインで簡単に .gitignore
を作成することができます(gibo というツールを使っても良いですが、結局 gibo も Github の公開テンプレートを使っているだけです)。
Java のプロジェクトで Gradle 使うような場合、以下のようにできます。
$ curl -sS https://raw.githubusercontent.com/github/gitignore/master/{\ Java.gitignore,\ Gradle.gitignore,\ Global\/JetBrains.gitignore,\ Global\/Eclipse.gitignore,\ Global\/NetBeans.gitignore,\ Global\/macOS.gitignore,\ Global\/Linux.gitignore,\ Global\/Windows.gitignore\ } >> .gitignore
ブレース展開で各種ファイルをダウンロードしてファイルに追記しているだけです。
ここでは以下を対象に含めました。
言語・ツール(Java・Gradle)
- https://raw.githubusercontent.com/github/gitignore/master/Java.gitignore
- https://raw.githubusercontent.com/github/gitignore/master/Gradle.gitignore
エディタ(IntelliJ IDEA・Eclipse・NetBeans)
- https://raw.githubusercontent.com/github/gitignore/master/Global/JetBrains.gitignore
- https://raw.githubusercontent.com/github/gitignore/master/Global/Eclipse.gitignore
- https://raw.githubusercontent.com/github/gitignore/master/Global/NetBeans.gitignore
OS(macOS・Linux・Windows)
- https://raw.githubusercontent.com/github/gitignore/master/Global/macOS.gitignore
- https://raw.githubusercontent.com/github/gitignore/master/Global/Linux.gitignore
- https://raw.githubusercontent.com/github/gitignore/master/Global/Windows.gitignore
以下のようなファイルができます。
# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .gradle /build/ # Ignore Gradle GUI config gradle-app.setting # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar # Cache of project .gradletasknamecache # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 # gradle/wrapper/gradle-wrapper.properties # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # Gradle .idea/**/gradle.xml .idea/**/libraries # Gradle and Maven with auto-import # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. # .idea/artifacts # .idea/compiler.xml # .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules # *.iml # *.ipr # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser .metadata bin/ tmp/ *.tmp *.bak *.swp *~.nib local.properties .settings/ .loadpath .recommenders # External tool builders .externalToolBuilders/ # Locally stored "Eclipse launch configurations" *.launch # PyDev specific (Python IDE for Eclipse) *.pydevproject # CDT-specific (C/C++ Development Tooling) .cproject # CDT- autotools .autotools # Java annotation processor (APT) .factorypath # PDT-specific (PHP Development Tools) .buildpath # sbteclipse plugin .target # Tern plugin .tern-project # TeXlipse plugin .texlipse # STS (Spring Tool Suite) .springBeans # Code Recommenders .recommenders/ # Annotation Processing .apt_generated/ .apt_generated_test/ # Scala IDE specific (Scala & Java development for Eclipse) .cache-main .scala_dependencies .worksheet **/nbproject/private/ **/nbproject/Makefile-*.mk **/nbproject/Package-*.bash build/ nbbuild/ dist/ nbdist/ .nb-gradle/ # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk *~ # temporary files which can be created if a process still has a handle open of a deleted file .fuse_hidden* # KDE directory preferences .directory # Linux trash folder which might appear on any partition or disk .Trash-* # .nfs files are created when an open file is removed but is still being accessed .nfs* # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk
まとめ
Github で管理されている .gitignore
テンプレートで網羅性の高い .gitignore
が簡単に作成できます。
これでうっかりリポジトリを汚すことも少なくなるかと思います。
.gitignore
については以下を参照してください。
- 作者:Jon Loeliger
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/02/19
- メディア: 大型本
- 作者:昌子 正俊
- 出版社/メーカー: 秀和システム
- 発売日: 2019/09/28
- メディア: 単行本