giコマンドで.gitignoreを作成しよう

giコマンドで.gitignoreを作成しよう

リポジトリ管理のツールとして、Gitはデファクトスタンダードととも言えるツールですが、その利用に際して特に重要なのが.gitignoreファイルの適切な設定です。このファイルはGitリポジトリで無視するべきファイルやディレクトリを指定し、不要なファイルがリポジトリに追加されるのを防ぎます。しかし、多様な開発環境や言語に対応するための.gitignoreファイルを一から作成するのは意外と手間がかかるものです。そこで役立つのが、Toptalによって提供されるgitignore.ioサービスと、それを利用したgiコマンドです。gitignore.ioは、さまざまな開発環境や言語に合わせた.gitignoreテンプレートを提供し、giコマンドを通じてこれらのテンプレートを簡単に取得し、利用することができます。

この記事では、giコマンドを使用して、効率的かつ正確に.gitignoreファイルを作成する方法を紹介します。

目次

giコマンドのインストール

gitignore.ioのコマンドラインツールのページにアクセスして、インストール用のコマンドをコピーします。

本記事ではzshを使用している場合のコマンドを使用します。

$ echo "function gi() { curl -sLw \"\\\n\" https://www.toptal.com/developers/gitignore/api/\$@ ;}" >> \
~/.zshrc && source ~/.zshrc

実行しても特に何もメッセージは出ませんがコマンドのインストールは完了しています。実行するためにはcurlコマンドが必要ですのでインストールしていない場合は別途インストールしてください。

giコマンドの確認

まずはgiコマンドの使い方を確認していきましょう。オプションなしでgiコマンドを表示するとヘルプを確認できます。

$ gi
  list    - lists the operating systems, programming languages and IDE input types
  :types: - creates .gitignore files for types of operating systems, programming languages or IDEs

少しわかりづらいですが、listサブコマンドを使用すると使用可能なタイプな一覧が表示されます。ただし、かなり量があるのご注意ください。

$ gi list
1c,1c-bitrix,a-frame,actionscript,ada
adobe,advancedinstaller,adventuregamestudio,agda,al
・・・
yarn,yeoman,yii,yii2,zendframework
zephir,zig,zsh,zukencr8000

数が多いので、grepコマンドを併用するとよいでしょう。

$ gi list | grep node
modelsim,modx,momentics,monodevelop,mplabx
ninja,node,nodechakratimetraveldebug,nohup,notepadpp

Node.jsの.gitignoreはnodeというタイプで指定することがわかります。

$ gi list | grep visualstudiocode
virtualenv,virtuoso,visualbasic,visualstudio,visualstudiocode

VSCodeの.gitignorevscodeではなくvisualstudiocodeだということもわかりました。

giコマンドで.gitignoreを作成する

では、実際に.gitignoreを作成してみます。ここでは、Node.jsのプロジェクトを作成し、VSCodeでコーディングするとします。

使用するタイプはnodevisualstudiocodeの2つになり、複数選択する場合はカンマ区切り(間にはスペースを入れない)でタイプを並べます。また、コマンド自体は標準出力に表示するだけですので、ファイルにリダイレクトしてファイル化します。

$ gi node,visualstudiocode > .gitignore

生成された.gitignoreファイルの中身は以下のようになります。

# Created by https://www.toptal.com/developers/gitignore/api/node,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=node,visualstudiocode

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

### Node Patch ###
# Serverless Webpack directories
.webpack/

# Optional stylelint cache

# SvelteKit build / generate output
.svelte-kit

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

# End of https://www.toptal.com/developers/gitignore/api/node,visualstudiocode

まとめ

Githubのgithub/gitignoreリポジトリから対象の.gitignoreを探したり、gitignore.ioを使うのもよいですが、giコマンドを使って.gitignoreを生成する方が簡単に利用できて便利です。また、コマンドということはシェルスクリプトへの組み込みなど様々な使い道があるのもよい点です。

giコマンドを用いることで、テンプレートからプロジェクトに必要な情報をすばやく設定でき、開発の手間を大幅に削減することができます。ぜひ、giコマンドを活用してよりスムーズな開発を実現してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次