Gitignore generator for any type of project
GI Gen - Gitignore File Generator
Table of Contents
GI Gen is an open source CLI to generate .gitignore
files for most project types.
Simply run the command and follow the prompts, and your project will have a .gitignore
file to
match it.
It is completely cross-platform, and standalone (no dependencies - other than git
itself), so you
may literally use it for any project on any platform.
You can run this CLI program to create or append a .gitignore
file from a chosen list of template
easily.
You may choose more than one template to generate.
Check out the VS Code Extension!
Features
GI Gen supports the following features:
.gitignore
discovery:- Auto-discover any gitignore templates that might be related to your project
- Can confidently discover over 50 project languages using your project structure
- Can fall back on process of elimination using patterns in the template
- Optionally list all available templates instead (see github/gitignore for the complete list of templates)
- Auto-discover any gitignore templates that might be related to your project
.gitignore
clean: Clean up results from any patterns that aren’t in your project before outputting (optional)- Writes to
.gitignore
file in current directory (you may overwrite/skip/append if already exists)
Command Line Usage
Download the file for your platform in the Releases page.
Put it anywhere that you can run an executable from. It is completely portable to any directory, but
it is preferable you put it somewhere that is in your PATH
.
Just run gi_gen
in the directory you wish to add to and follow the prompts.
$ gi_gen
Command Line Flags
You may pass additional flags to gi_gen
. These are the currently available flags:
Usage | Description |
---|---|
-languages | -l | List the languages you want to use as templates. To add multiple templates, use commas as separators, e.g.: -languages Node,Python |
-auto-discover | -d | Use auto-discovery for project, detecting the project type and using the result as the pre-selected template list. |
-clean-output | -c | Perform cleanup on the output .gitignore file, removing any unused patterns |
-keep-output | -k | Do not perform cleanup on the output .gitignore file, keep all the original contents |
-append | -a | Append to .gitignore file if it already exists |
-overwrite | -w | Overwrite .gitignore file if it already exists |
-detect-languages | Outputs the automatically-detected languages, separated by newlines, and exits. Useful for outside tools detection. |
-all-languages | Outputs all the available languages, separated by newlines, and exits. Useful for outside tools detection. |
-clear-cache | Clear the .gitignore cache directory, for troubleshooting or for removing trace files of this program. Exits after running, so other flags will be ignored. |
-help | -h | Display help message |
Examples
-
Run normally, prompting for every step:
gi_gen
-
Pre-select languages (skip prompt):
gi_gen -languages Node # One language gi_gen -languages Node,Python # Multiple languages
-
Perform clean up (skip prompt):
gi_gen -clean-output # clean up gi_gen -keep-output # skip clean up
-
Use auto-discovery (skip prompt):
gi_gen -auto-discover
-
Existing file handlers (skip prompt):
gi_gen -append # if file exists, add to end of it gi_gen -overwrite # if file exists, replace the existing content
-
Combined (skip all prompts):
gi_gen -d -c -a # Use auto discovery, append and clean unused patterns gi_gen -l Node -k -w # Use passed languages, overwrite and keep unused patterns
-
Clean cache directory and exit:
gi_gen -clear-cache
-
Detect languages and output the results, then exit:
gi_gen -detect-languages
Contribute
Credits to open-source-ideas for the idea for the tool.
Please feel free to open PRs or issues with bug fixes/reports, or feature requests.
This project was built using Go, and should run easily with the normal Go tools with no further configuration.
Tested on all major platforms, but feel free to report any issues on your platform if you have any, or are missing your platform and cannot/don’t want to build from source (I tried building for the most common platforms).
If you are feeling incredibly generous and appreciate the time & effort I put into developing this tool, kindly consider donating any amount to help me make up for the work hours. It is really very much appreciated! 🙏🏼