Excerpt from [Git 2.22 Release Notes][1]:
> Updates since v2.21
> -------------------
>
> Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
> create a lazy/partial clone has been removed. Using a blob that is
> part of the project as sparse specification is still supported with
> the "--filter=sparse:oid=<blob>" option.
>
> UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
> […]
[1]: https://lkml.org/lkml/2019/6/7/1177
[2]: https://github.blog/2019-06-07-highlights-from-git-2-22/