The latest maintenance release Git is available. It contains
accumulated fixes that applies to the 1.7.8.X maintenance track that have
already been applied to the master branch to be part of the upcoming
1.7.9 release.

The release tarballs are found at:

and their SHA-1 checksums are:

7187c1af96db0c181b801957d6e152ec7cd60ab6  git-
9047175e5c46aa3260c42e6b4459cf4ee5a7bb8a  git-htmldocs-
cc394a0a9689297fddad40c1ccbded0ba9d708da  git-manpages-

Also the following public repositories all have a copy of the v1.7.8.2
tag and the maint branch that the tag points at:

url = git://
url =
url = git://
url = git://
url =

Git v1.7.8.2 Release Notes

Fixes since v1.7.8.1

  • Porcelain commands like “git reset” did not distinguish deletions
    and type-changes from ordinary modification, and reported them with
    the same M moniker. They now use D (for deletion) and T (for
    type-change) to match “git status -s” and “git diff –name-status”.

  • The configuration file parser used for sizes (e.g. bigFileThreshold)
    did not correctly interpret g suffix.

  • The replacement implemention for snprintf used on platforms with
    native snprintf that is broken did not use va_copy correctly.

  • LF-to-CRLF streaming filter replaced all LF with CRLF, which might
    be techinically correct but not friendly to people who are trying
    to recover from earlier mistakes of using CRLF in the repository
    data in the first place. It now refrains from doing so for LF that
    follows a CR.

  • git native connection going over TCP (not over SSH) did not set
    SO_KEEPALIVE option which failed to receive link layer errors.

  • “git branch -m <current branch> HEAD” is an obvious no-op but was not

  • “git checkout -m” did not recreate the conflicted state in a “both
    sides added, without any common ancestor version” conflict

  • “git cherry-pick $commit” (not a range) created an unnecessary
    sequencer state and interfered with valid workflow to use the
    command during a session to cherry-pick multiple commits.

  • You could make “git commit” segfault by giving the “–no-message”

  • “fast-import” did not correctly update an existing notes tree,
    possibly corrupting the fan-out.

  • “git fetch-pack” accepted unqualified refs that do not begin with
    refs/ by mistake and compensated it by matching the refspec with
    tail-match, which was doubly wrong. This broke fetching from a
    repository with a funny named ref “refs/foo/refs/heads/master” and a
    master branch with “git fetch-pack refs/heads/master”, as the
    command incorrectly considered the former a “match”.

  • “git log –follow” did not honor the rename threshold score given
    with the -M option (e.g. “-M50%”).

  • “git mv” gave suboptimal error/warning messages when it overwrites
    target files. It also did not pay attention to “-v” option.

  • Authenticated “git push” over dumb HTTP were broken with a recent
    change and failed without asking for password when username is

  • “git push” to an empty repository over HTTP were broken with a
    recent change to the ref handling.

  • “git push -v” forgot how to be verbose by mistake. It now properly
    becomes verbose when asked to.

  • When a “reword” action in “git rebase -i” failed to run “commit –amend”,
    we did not give the control back to the user to resolve the situation, and
    instead kept the original commit log message.

Also contains minor fixes and documentation updates.

Junio C Hamano wrote on 28 Dec 2011