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 --date
allows developers to use custom date formats:git config log.date "format:%c"
;git log --cc
now implies-p
, so it will actually display the diffs for merge commits;git fast-import
supports a newget-mark
option that causes the SHA–1 corresponding to a file descriptor mark to be printed;git log
supports a new--follow
configuration to continue listing the history of a file across renames.git pull --rebase
will now take into account therebase.autostash
configuration, which enables the--autostash
option 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.