Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Git 2.20 Brings Improved Workflows and Performance

Git 2.20 Brings Improved Workflows and Performance

This item in japanese

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.

Rate this Article