Release of the distributed source code management system Git is one of the most popular, reliable, and high-performance version control systems, providing flexible tools for non-linear development based on branching and merging. Implicit hashing of all previous history in each commit is used to ensure the integrity of history and resilience to retroactive changes. Digital signatures from developers can also be used to verify specific tags and commits.
Compared to the previous release, the new version includes 505 changes made by 77 developers, 26 of whom participated in the development for the first time. The main highlights include :
- Experimental commands 'git switch' and 'git restore' have been introduced to separate loosely related functionalities of 'git checkout', such as branch manipulation (switching and creating) and restoring files in the working directory ('git checkout $commit â $filename') or directly in the staging area ('âstaging', which has no equivalent in 'git checkout'). Notably, unlike 'git checkout', 'git restore' removes untracked files from the restored directories ('âno-overlay' by default).
- An option 'git merge âquit' has been added, which, similar to 'âabort', stops the branch merge process while leaving the working directory untouched. This option can be useful if some changes made during a manual merge are better represented as a separate commit.
- The commands 'git clone', 'git fetch', and 'git push' now consider the presence of commits in related repositories ();
- the options 'git blame âignore-rev' and 'âignore-revs-file', which allow you to skip commits that contain insignificant changes (e.g., formatting corrections);
- An option 'git cherry-pick âskip' has been added to skip a conflicting commit (a remembered equivalent of the sequence 'git reset && git cherry-pick âcontinue');
- A setting status.aheadBehind has been added, fixing the option 'git status â[no-]ahead-behind' permanently;
- From this release onwards, 'git log' by default accounts for changes made by mailmap, similar to how it already occurs in git shortlog.
- The operation of updating the experimental commit graph cache (core.commitGraph) introduced in 2.18 has been significantly accelerated. The git for-each-ref command has also been optimized when using multiple patterns, and the number of auto-gc calls in 'git fetch --multiple' has been reduced.
- 'git branch --list' now always displays detached HEAD at the very beginning of the list, regardless of locale.
Source: opennet.ru
