As this cycle is a rather large update, please test this thoroughly. It contains 814 non-merge commits, from 90+ contributors (v1.8.3 consisted of 694 changes from 97 contributors).
Here are some highlights:
- "git log" learnt the "-Lbegin
,end :filename " option. This starts from the specified range and digs through the history. It may still have rough edges and memory leaks, though.
- "git clean" learnt the interactive mode, modeled after "git add -i" interface.
- "git check-mailmap" is a new command that lets you inquire your .mailmap file for the canonical username and e-mail address.
- "git name-rev" learnt to name an annotated tag object name back to its tagname.
- Various subcommands of "git submodule" now works even from a subdirectory.
- "git submodule update" can optionally clone the submodule repositories shallowly.
- The "push.default=simple" mode of "git push" has been updated to behave like "current" when you push to a remote that is different from where you fetch from (e.g. via remote.pushdefault), in order to better support the triangular workflow.
- "git log" learnt the "--author-date-order" option.
- The configuration variable color.ui defaults to "auto" now.
- Instead of typing "HEAD", you can say "@" instead, e.g. "git log @".
- "git describe" learnt the "--first-parent" option.
- "git fetch $remote $branch" used to avoid touching the remote-tracking branch (you could always be explicit and say "git fetch $remote $branch:refs/remotes/$remote/$branch"). The command now updates the remote-tracking branch (if configured).
- Use of platform fnmatch(3) function (many places like pathspec matching, .gitignore and .gitattributes) have been replaced with wildmatch, allowing "foo/**/bar" to match "foo/bar", "foo/a/bar", etc.