Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Git 2.6 Brings Many New Features and Improvements

Git 2.6 Brings Many New Features and Improvements

This item in japanese

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 "format:%c";
  • git log --cc now implies -p, so it will actually display the diffs for merge commits;
  • git fast-import supports a new get-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 the rebase.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.

Rate this Article