RE: Understanding Git ignore: How and When to use it?
The `.gitignore` file is a tool used in conjunction with the Git version control system. It's a plain text file where each line contains a pattern for files/directories to ignore. You use `.gitignore` when you want Git to ignore or untrack certain files in your project's directory, ensuring they are not committed to your repository. These generally are files not useful or necessary for others working on the project. The types of files you want to include are typically: 1. Temporary files that your operating system or development tools create, like log files or `.tmp` files. 2. Personal ide (Integrated Development Environment) settings. 3. Compiled source code, binary files or any build products. 4. Backup files created by your text editor or operating system. 5. Files holding credentials or other sensitive data. Here is how you might populate a .gitignore file in a Java project: # 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 Each of these entries corresponds to a specific type/category of files that you want Git to ignore. Each line in `.gitignore` specifies a pattern. When deciding whether to ignore a path, Git normally checks gitignore patterns from multiple sources, with the following order of precedence, from highest to lowest: 1. Patterns read from the command line for those commands that support them. 2. Patterns read from a .gitignore file in the same directory as the path, or in any parent directory, with patterns in the higher level files (up to the root directory) being overridden by those in lower level files down to the directory containing the file. 3. Patterns read from `$GIT_DIR/info/exclude`. 4. Patterns read from the file specified by the `core.excludesFile` configuration variable. Using a `.gitignore` file can make your commits cleaner, and can help ensure that temporary, secret, or otherwise unnecessary files aren't accidentally committed into your git history.