What not to commit

When you put Dart source code in a repository—using thepub tool, GitHub,or another source code management system—don’t include most of the filesthat your IDE or code editor, the pub tool, and other tools generate.

Note:Except where noted, this page discusses only source code repositories,not app deployment.Some files that you wouldn’t normally put in a repositoryare useful or essential when you deploy an app.

The rules

Don’t commit the following files and directoriescreated by pub:

  1. .dart_tool/
  2. .packages
  3. build/
  4. pubspec.lock // Except for application packages

Note: The .dart_tool directory, which is new in Dart 2,is used by pub and other tools. It replaces the .pub directory as ofthe 2.0.0-dev.32.0 SDK release. The .packages file replaces thepackages directories that early Dart 1.x versions produced.

Don’t commit the API documentation directory created by dartdoc:

  1. doc/api/

Don’t commit files and directoriescreated by other development environments.For example, if your development environment createsany of the following files,consider putting them in a global ignore file:

  1. *.iml // IntelliJ
  2. *.ipr // IntelliJ
  3. *.iws // IntelliJ
  4. .idea/ // IntelliJ
  5. .DS_Store // Mac

For more details, read on.

Details

As a rule, commit only the files that people needto use your package or source code repository.Including additional files is unnecessary,could be counterproductive,and might have security implicationsif you expose details about your machine’s setup.In many source code repositories,the common practice is not to commit generated files, at all.

To avoid committing files that arespecific to your personal workflow or setup,consider using a global ignore file(for example, .gitignore_global).

When you use pub from within a Git repo,pub ignores the same files that Git does.For example, if you run pub publish from a Git repothat has a .gitignore file containing keys.txt,then your published package won’t contain the keys.txt file.

For more information on .gitignore files,see the GitHub help pageIgnoring files.

.packages

The .packages file contains a list of dependencies used by your application.Users of your code should generate their own packages informationusing pub get.

Note: The .packages file has replaced packages directories. For more information, see pub get.

pubspec.lock

The pubspec.lock file is a special case,similar to Ruby’s Gemfile.lock.

For library packages, do not commit the pubspec.lock file.

For application packages, do commit pubspec.lock.This file is the recommended way for non-shared resourcessuch as applications to manage their dependencies.