Git 2.20 brings a wealth of changes and fixes, including improved cloning, fetching, grepping, etc. In addition, the minimum version of Windows supported by Windows port of Git has now been set to Vista.
Git 2.20 focuses on improving usability, performance, and fixing bugs. For example, Git does now a better job at handling files whose filenames differ only in case when cloning a repo to a case-insensitive file system. In such cases, to prevent file losses, Git will emit a warning. Another command with improved behaviour is git fetch
, which previously did not honour the immutability of tags, and silently updated any existing tag. Now, it will fail unless the --force
option is given.
The generation of commit-graph files now provides a progress indication, thus improving user experience with large repositories, where commit-graph generation may take a noticeable time. Similarly, the git status
command will now show a progress bar when refreshing the repository index is taking a long time.
The git grep
command can now be executed in a non recursive way using the --no-recursive
flag, which is just an alias of --max-depth 0
.
Interactive rebase, one of the most used command in Git, is now able to handle a new break
operation in a to-do list by returning control to the user when it encounters it. Breaking at a specific commit may be useful when you want to manually modify it before continuing the rebase operation.
Git 2.20 also makes configuration more flexible. Up to and including version 2.19, Git supported three kinds of configuration files: system (e.g., /etc/gitconfig
, git config --system ...
), global or per-user (e.g., ~/.gitconfig
, git config --global ...
), and per-repository (./.git/config
, git config --local ...
). This fell short for worktrees that shared the same repository, since it did not supported them having different configurations. Now you can use the --worktree
flag with the git config
command to read from or write to a .git/config.worktree
file.
In regard to performance, git submodule update
as well as git rebase
and git rebase -i
have been rewritten in C, thus adding up to the number of other commands that have been already ported to C for better performance, including git pull
, git am
, git rebase
etc.
Git 2.20 also includes many bug fixes, including aborting a rebase operation when providing an empty commit message during an edit; removing an assertion failure in git status
due to not cleaning up a reused variable; and more.
As a final note, Git now requires at least Windows Vista in order to run on the Windows platform.
There is much more to Git 2.20 that could be possibly covered here, so do not miss the official release note.