Recently released Git 2.6 brings many new features, improvements to performance and internals, and bug fixes.
New workflow and UI features
Git 2.6 introduces new options for the git fsck command to handle minor data errors in a project’s history. git fsck is used to verify the integrity of a repository. There are times, though, when git fsck may be too picky about problems in your past history, flagging mild forms of corruption, as well as cases where the fix to the history might seems not worth, e.g., when many users have already cloned a repo. In such cases, Git 2.6 allows developers to adjust the severity of specific git fsck warnings, e.g. the command git config fsck.badEmail ignore will ignore invalid email addresses.
git fsck can also be used to automatically check the integrity of objects that are being pushed to a repository to prevent that stale objects can enter the project’s history. In such cases, it may be useful to tell git fsck to simply skip the commits that are in bad state, while still making it do a full check on newly pushed objects. This can be accomplished by providing a commit skip list to git config: git config fsck.skiplist "$PWD/.git/skiplist".
The git status command has been made more verbose when executed during a rebase, so it provides details about the last steps in the rebase log and the next ones. This can help keeping track of things when large series of commits are being rebased.
Other useful features are the following:
git log --dateallows developers to use custom date formats:git config log.date "format:%c";git log --ccnow implies-p, so it will actually display the diffs for merge commits;git fast-importsupports a newget-markoption that causes the SHA–1 corresponding to a file descriptor mark to be printed;git logsupports a new--followconfiguration to continue listing the history of a file across renames.git pull --rebasewill now take into account therebase.autostashconfiguration, which enables the--autostashoption by default to make it possible to rebase a dirty worktree.
Performance and internal implementation improvements
On the front of performance, a few commands have been rewritten in C, such as git pull and git am. Furthermore, status and commit operations have been sped up after a multi-tree merge. On the other hand, a few bits of Git internal implementation have been changed in preparation for different ref backends to be plugged into Git.
According to the announcement on Git mailing list, Git 2.6 comprises 479 non-merge commits since Git 2.5. You can get a full list of new features, as well as bug fixes in the release notes.