Language Selection

English French German Italian Portuguese Spanish

Git v2.24.0

Filed under
The latest feature release Git v2.24.0 is now available at the
usual places.  It is comprised of 544 non-merge commits since
v2.23.0, contributed by 78 people, 21 of which are new faces.

The tarballs are found at:

The following public repositories all have a copy of the 'v2.24.0'
tag and the 'master' branch that the tag points at:

  url =
  url = git://
  url =

New contributors whose contributions weren't in v2.23.0 are as follows.
Welcome to the Git development community!

  Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
  Steffen, CB Bailey, Christopher Diaz Riveros, Garima Singh,
  Hervé Beraud, Jakob Jarmar, kdnakt, Kunal Tyagi, Maxim
  Belsky, Max Rothman, Norman Rasmussen, Paul Wise, Pedro Sousa,
  Philip.McGraw, Pratyush Yadav, Thomas Klaeger, William Baker,
  and YanKe.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Roben, Ævar Arnfjörð Bjarmason, Alessandro Menti,
  Alexander Shopov, Alex Henrie, Andrey Mazo, Beat Bolli, Ben
  Wijen, Bert Wesarg, Birger Skogeng Pedersen, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Clément Chigot,
  Corentin BOMPARD, David Turner, Denton Liu, Derrick Stolee,
  Elijah Newren, Emily Shaffer, Eric Wong, Gabriele Mazzotta,
  Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons, Jordi Mas,
  Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
  Matheus Tavares, Matthew DeVore, Matthias Rüster, Michael
  J Gruber, Mike Hommey, Mischa POSLAWSKY, Paul Mackerras,
  Peter Krefting, Phillip Wood, René Scharfe, Robert Luberda,
  Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
  Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
  Torsten Bögershausen, Trần Ngọc Quân, and Varun Naik.


Git 2.24 Release Notes

Updates since v2.23

Backward compatibility note

 * "filter-branch" is showing its age and alternatives are available.
   From this release, we started to discourage its use and hint
   people about filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c" have been

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.

 * The installation instruction for zsh completion script (in
   contrib/) has been a bit improved.

Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).

Read more

Also: Highlights from Git 2.24

Git 2.24 Released

  • Git 2.24 Released With Commit Graphs By Default, Adoption Of Contributor Covenant

    Released earlier this week was Git 2.24, which pardon for not punctually covering due to being extra busy this week, but this revision control system update is nevertheless an interesting update.

    Git 2.24 ships with commit graphs enabled by default after being experimental for recent releases. Git commit graphs by default accelerate the walking of the commit graph used for listing/filtering history and computing merge bases. This should yield a significant performance boost for relevant operations of such walks.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

More in Tux Machines

Android Leftovers

pip 20.3 release

On behalf of the Python Packaging Authority, I am pleased to announce that we have just released pip 20.3, a new version of pip. You can install it by running `python -m pip install --upgrade pip`. This is an important and disruptive release -- we explained why in a blog post last year Read more

Western Digital WD_BLACK SN850 NVMe PCIe 4.0 SSD Linux Performance

This month Western Digital introduced the WD_BLACK SN850 as the latest PCI Express 4.0 solid-state drive hitting the market. The WD_BLACK SN850 is a surprisingly strong performer if looking to upgrade to PCIe 4.0 solid-state storage, competing with the fastest of the consumer drives currently available. The WD_BLACK SN850 makes use of Western Digital's G2 controller and 96L TLC NAND flash memory. The 1TB drive being tested today is rated for 7,000 MB/s sequential reads and 5,300 MB/s sequential writes and 1 million IOPS for random reads and 720k IOPS for random writes. Read more

GNU Octave 6.1 Released with Improvements / New Functions

GNU Octave 6.1 was released a few days ago with numerous improvements, bug-fixes, and a list of new functions. Changes in Octave 6.1 include... There’s no PPA repository contains the new release package at the moment of writing. Before the official Snap package and the community maintained Flatpak package publish the new package, you can download & build GNU Octave from the source tarball... Read more