After two months of development the release of the new version of Git 2.35 was announced that compared to the previous version, 494 changes were accepted in the new version, prepared with the participation of 93 developers, of which 35 participated in the development for the first time.
As for the main innovations that stand out in this new version, we can find the Extended options to use SSH keys to digitally sign Git objects.
To differentiate the validity period of various keys, has been added support for OpenSSH "valid-before" and "valid-after" directives, which can be used to ensure correct work with signatures.
Before that, there was a problem with the separation of signatures with the old key and the new one: if you delete the old key, it will be impossible to verify the signatures made with it, and if you leave it, you will still be able to create new signatures with the old key, that has already been replaced by another key. With valid before and valid after, you can separate the scope of keys based on when the signature was created.
Another change that stands out in this new version of Git 2.35 is the merge.conflictStyle setting, what Allows you to select the mode for displaying information about conflicts during a merge, now supports "zdiff3" mode, which moves all type strings specified at the beginning or end of a conflict out of the conflict area, allowing for a more compact presentation of information.
Added mode «–staged»To the« commandgo stash«, what allows to hide only the changes added to the index, for example, in situations where you need to temporarily postpone some complex changes to add what is already ready first, and with the rest to solve after a while. The mode is similar to the command "git commit", writing only the changes placed in the index, but instead of creating a new commit in "git stash --staged«, the result is saved in the stash temporary area. Once the changes are needed, they can be reverted with the "git stash pop" command.
On the other hand we can find that added a new format specifier «--format=%(describe)»To the« commandgitlog", which allows the output of "git log" to match the output of the "git describe" command.
Options for "git describe" are specified directly inside the specifier ("–format=%(describe:match= ,exclude= )")), which can also include shorthand tags ("–format=% ( describe:tags= )») and sets the number of hexadecimal characters to identify objects.
For example, to display the 8 most recent commits whose tags do not have a release candidate tag and specify 13-character identifiers, you can use the command:
Work has been done to standardize the use of the type "size_t" instead of "unsigned long" for values representing the size of objects, which allowed the "clean" and "smudge" filters to be applied with files larger than 4 GB on all platforms, including platforms with the LLP64 data model, type "unsigned long", which is limited to 4 bytes.
Of the other changes that stand out of the new version:
- Added initial implementation of a new backend «refable» to store references such as branches and tags in a repository.
- The color palette of the command «git grep» has been changed to match the GNU grep utility.
- The command "git sparse-checkout init» has been deprecated and should be used instead «git sparse-checkout set«.
- Added option “–empty=(stop|drop|keep)» at command "git am", which allows, when scanning patches from the mailbox, to choose the behavior of empty messages that do not contain patches.
- Added support for sparse indices to git reset, git diff, git reproach, git fetch, git pull, and git ls-files» to improve performance and save space in repositories, where cloning operations (sparse-checkout) are performed.
Finally if you are interested in knowing more about it about this new version of Git 2.35 you can consult the details in the following link.