feature.*::
	The config settings that start with `feature.` modify the defaults of
	a group of other config settings. These groups are created by the Git
	developer community as recommended defaults and are subject to change.
	In particular, new config options may be added with different defaults.

feature.experimental::
	Enable config options that are new to Git, and are being considered for
	future defaults. Config settings included here may be added or removed
	with each release, including minor version updates. These settings may
	have unintended interactions since they are so new. Please enable this
	setting if you are interested in providing feedback on experimental
	features. The new default values are:
+
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
skipping more commits at a time, reducing the number of round trips.
+
* `pack.useBitmapBoundaryTraversal=true` may improve bitmap traversal times by
walking fewer objects.
+
* `pack.allowPackReuse=multi` may improve the time it takes to create a pack by
reusing objects from multiple packs instead of just one.

feature.manyFiles::
	Enable config options that optimize for repos with many files in the
	working directory. With many files, commands such as `git status` and
	`git checkout` may be slow and these new defaults improve performance:
+
* `index.skipHash=true` speeds up index writes by not computing a trailing
  checksum. Note that this will cause Git versions earlier than 2.13.0 to
  refuse to parse the index and Git versions earlier than 2.40.0 will report
  a corrupted index during `git fsck`.
+
* `index.version=4` enables path-prefix compression in the index.
+
* `core.untrackedCache=true` enables the untracked cache. This setting assumes
that mtime is working on your machine.
