.gitignore file is a hidden file in a Git repository that tells Git which files should NOT be committed to the repository.
Examples of files that should NOT be committed:
- Artifacts of compiling that can be obtained from source code, such as:
.classfiles in Java
.jarfiles produced from the source in the repo (as opposed to .jar files that are stored in the repo permanently because they are dependencies of the project)
- dependencies that are automatically downloaded, e.g. by Maven
- Backup files or temporary files produced by editors, such as:
*~files such as
Foo.java~produced by Emacs
*.swpfiles produced by vi/vim
- Artifacts of working on various Operating Systems
.DS_Storefiles on MacOS
Each language has its own set of file patterns, e.g.
- For C/C++,
- For Python,
Some tools, too, have their own set of files that should be in the .gitignore. Github has .gitignore files predefined for frameworks such as Rails and Jekyll (which are both written in the programming language Ruby), the Unity game engine (folks typically write C++ code for this), as well as the Maven version control system.
You can find examples of the files that should be in the .gitignore for various systems by doing a web search on “.gitignore name-of-system-or-tool”.
The repo https://github.com/github/gitignore also has a nice collection of these.
A few useful ones for this course:
# Emacs/vim *~ *.swp # VSCode .vscode .classpath .project .settings/ # MacOS .DS_Store # CS56 specific: Secrets files localhost.json heroku.json # Maven (from: https://github.com/github/gitignore/blob/master/Maven.gitignore) target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties # https://github.com/takari/maven-wrapper#usage-without-binary-jar .mvn/wrapper/maven-wrapper.jar # Java (from: https://github.com/github/gitignore/blob/master/Java.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*