Git 2.36 has already been released and these are its news

After three months of development the new version of the system was released of distributed source code control «Go to 2.36» one of the most popular, reliable and high performance version control systems providing flexible non-linear development tools based on forks and merges of forks.

To ensure history integrity and resistance to "backward" changes, the implicit hash of all previous history is used on each commit. It is also possible to verify the digital signatures of the developers of individual labels and confirmations.

Git 2.36 Key New Features

Compared to the previous release, 717 changes were accepted in the new version, prepared with the participation of 96 developers, of which 26 participated in the development for the first time. Main innovations :

The option “–remerge-diff” added to “git log” and “git show” commands to show differences between the overall result of the merge and the actual data reflected in the commit after processing the "merge" command, which allows you to visually assess the changes made as a result of merge conflict resolution. The usual “git show” command separates the different conflict resolutions with indentation, making changes difficult to understand.

When using the option “–remerge-diff”, the differences between conflict resolutions are not separated for each parent branch, but the overall differences between a file that has merge conflicts and a file that has resolved conflicts are shown.

Another notable change is the improved flexibility in behavior customization from flushing disk caches via the fsync() function call. Parameter core.fsyncObjectFiles previously available has been split into two configuration variables core.fsync and core.fsyncMethod, which provides the ability to apply fsync not only to object files (.git/objects), but also to other git structures such as refs ( .git /refs), reflog, and package files.

via variable core.fsync, you can specify a list of internal Git structures, after the write operation, for which fsync will be additionally called. The variable core.fsyncMethod allows you to select a method for flushing the cache, for example, you can select fsync to use the system call of the same name, or specify write-only to use pending lazywriting (page cache lazywriting).

To protect against vulnerabilities that handle the substitution of .git directories by other users on shared partitions, repository owner verification has been strengthened. Now only running any git commands in their own ".git" directories is allowed. If the repository directory is owned by another user, an error will be generated by default. This behavior can be disabled using the secure directory setting.

It is also highlighted that added “–batch-command” option to “git cat-file” command, which is intended to generate the original content of Git objects, complementing the commands “–batch” and “–batch-check” previously available with the ability to adaptively select output type via “content » to display content or «info » to display information about the object. Also, a "flush" command is supported to flush the output buffer.

On the other hand, it is highlighted that added “–oid-only” option (“–object-only”) to the "git ls-tree" command, which is designed to list the contents of a tree of objects which, by analogy with "–name -only", displays only object identifiers to simplify calls from scripts. The “–format” option is also implemented, which allows you to define your own output format by combining mode, type, name, and size information.

Of the other changes that stand out from this new version:

  • In the "git bisect run" command, the definition of not setting the sign of an executable file for the script and generating errors with codes 126 or 127 in this case is implemented (previously, if the script could not be executed, all reviews were marked as having issues).
  • Added “–refetch” option to “git fetch” command to fetch all objects without informing the other side of the content that is already on the local system. This behavior can be useful for restoring the state after failures when there is uncertainty about the integrity of the local data.
  • The "git update-index", "git checkout-index", "git read-tree", and "git clean" commands now support partial indexing (sparse index) to improve performance and save space on repositories that perform partial operations. (poor payment).
  • Changed behavior of “git clone –filter=… –recurse-submodules” command, which now leads to partial cloning of submodules (previously, when executing such commands, the filter was applied only to the main content and submodules were completely cloned without take into account the filter).
  • Added support for specifying filters for selective placement of content in the "git bundle" command, similar to partial clone operations.
  • Added “–recurse-submodules” option to “git branch” command to traverse submodules recursively.
    Userdiff has proposed a new driver for the Kotlin language.

Finally if you are interested in knowing more about it about this new version of Git 2.36 you can consult the details in the following link.

The content of the article adheres to our principles of editorial ethics. To report an error click here!.

Be the first to comment

Leave a Comment

Your email address will not be published.



  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.