Release of the distributed source control system Git 2.23

Submitted by release of the distributed source control system Go to 2.23.0. Git is one of the most popular, reliable and high-performance version control systems, providing flexible non-linear development tools based on branching and merging. To ensure the integrity of history and resistance to retroactive changes, implicit hashing of the entire previous history in each commit is used, and it is also possible to certify individual tags and commits with digital signatures of developers.

Compared to the previous release, the new version included 505 changes, prepared with the participation of 77 developers, of which 26 took part in development for the first time. Basic innovations:

  • Experimental "git switch" and "git restore" commands are introduced to separate loosely coupled "git checkout" capabilities, such as branch manipulation (switching and creating) and restoring files in the working directory ("git checkout $commit - $filename") or immediately in the staging area (“—staging”, has no analogue in “git checkout”). It's worth noting that, unlike "git checkout", "git restore" removes untracked files from the directories being restored ("--no-overlay" by default).
  • Added the option “git merge –quit”, which, similar to “-abort”, stops the process of merging branches, but leaves the working directory untouched. This option can be useful if some of the changes made during a manual merge would be preferable to be issued as a separate commit.
  • The "git clone", "git fetch" and "git push" commands now take into account the presence of commits in linked repositories (alternates);
  • Added the “git blame —ignore-rev” and “—ignore-revs-file” options allow you to skip commits that make minor changes (for example, formatting fixes);
  • Added the “git cherry-pick —skip” option to skip a conflicting commit (a memorized analogue of the “git reset && git cherry-pick —continue” sequence);
  • Added the status.aheadBehind setting, which permanently fixes the “git status -[no-]ahead-behind” option;
  • As of this release, "git log" by default takes into account changes made by mailmap, similar to how git shortlog already does;
  • The update operation of the experimental cache of the commit graph (core.commitGraph) introduced in 2.18 has been significantly accelerated. Also made git for-each-ref faster when using multiple templates and reduced the number of calls to auto-gc in “git fetch —multiple”;
  • "git branch --list" now always shows detached HEAD at the very beginning of the list, regardless of locale.

Source: opennet.ru

Add a comment