1.5.0

GIT v1.5.0 Release Notes ========================

Old news --------

This section is for people who are upgrading from ancient versions of git. Although all of the changes in this section happened before the current v1.4.4 release, they are summarized here in the v1.5.0 release notes for people who skipped earlier versions.

As of git v1.5.0 there are some optional features that changes the repository to allow data to be stored and transferred more efficiently. These features are not enabled by default, as they will make the repository unusable with older versions of git. Specifically, the available options are:

To let git use the new loose object format, you have to
set core.legacyheaders to false.
To let git use the new format for packfiles, you have to
set repack.usedeltabaseoffset to true.

The above two new features are not enabled by default and you have to explicitly ask for them, because they make repositories unreadable by older versions of git, and in v1.5.0 we still do not enable them by default for the same reason. We will change this default probably 1 year after 1.4.2’s release, when it is reasonable to expect everybody to have new enough version of git.

Updates in v1.5.0 since v1.4.4 series -------------------------------------

A repository with the separate remote layout starts with only
one default branch, 'master', to be used for your own
development.  Unlike the traditional layout that copied all
the upstream branches into your branch namespace (while
renaming their 'master' to your 'origin'), the new layout
puts upstream branches into local "remote-tracking branches"
with their own namespace. These can be referenced with names
such as "origin/$upstream_branch_name" and are stored in
.git/refs/remotes rather than .git/refs/heads where normal
branches are stored.

This layout keeps your own branch namespace less cluttered,
avoids name collision with your upstream, makes it possible
to automatically track new branches created at the remote
after you clone from it, and makes it easier to interact with
more than one remote repository (you can use "git remote" to
add other repositories to track).  There might be some
surprises:
Repositories initialized with the traditional layout continue
to work.
Existing repositories that have been using reflog may get
complaints from fsck-objects and may not be able to run
git-repack, if you had run git-prune from older git; please
run "git reflog expire --stale-fix --all" first to remove
reflog entries that refer to commits that are no longer in
the repository when that happens.
A typical use of this feature is to "look around".  E.g.

$ git checkout v2.6.16
... compile, test, etc.
$ git checkout v2.6.17
... compile, test, etc.
Remember that a detached state is volatile, i.e. it will be forgotten
as soon as you move away from it with the checkout or reset command,
unless a branch is created from it as mentioned above.  It is also
possible to rescue a lost detached state from the HEAD reflog.
v2.6.20-rc5-306-ga21b069

which tells you that its object name begins with a21b069,
v2.6.20-rc5 is an ancestor of it (meaning, the commit
contains everything -rc5 has), and there are 306 commits
since v2.6.20-rc5.
Currently a shallow repository has number of limitations:
but this would be more than adequate for people who want to
look at near the tip of a big project with a deep history and
send patches in e-mail format.

版本号 #2
由 壳壳虫 创建于 2026-10-31 19:45:17 UTC
由 壳壳虫 更新于 2026-10-31 19:45:19 UTC