From cf1a7e167c6269b751dbfefeac581ec46727223c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 12 Feb 2024 13:30:39 -0800 Subject: [PATCH] Autogenerated HTML docs for v2.44.0-rc0-46-g2996f --- MyFirstContribution.html | 2 +- MyFirstObjectWalk.html | 2 +- RelNotes/2.44.0.txt | 24 ++++++++++++++++++++ ReviewingGuidelines.html | 2 +- SubmittingPatches.html | 2 +- ToolsForGit.html | 2 +- everyday.html | 2 +- git-bisect.html | 12 ++++++---- git-bisect.txt | 10 ++++---- git-config.html | 6 +++++ git-for-each-ref.html | 10 ++++---- git-for-each-ref.txt | 8 ++++--- git-remote-helpers.html | 2 +- howto/coordinate-embargoed-releases.html | 2 +- howto/keep-canonical-history-correct.html | 4 ++-- howto/maintain-git.html | 4 ++-- howto/new-command.html | 4 ++-- howto/rebase-from-internal-branch.html | 4 ++-- howto/rebuild-from-update-hook.html | 4 ++-- howto/recover-corrupted-blob-object.html | 4 ++-- howto/recover-corrupted-object-harder.html | 4 ++-- howto/revert-a-faulty-merge.html | 4 ++-- howto/revert-branch-rebase.html | 4 ++-- howto/separating-topic-branches.html | 4 ++-- howto/setup-git-server-over-http.html | 4 ++-- howto/update-hook-example.html | 4 ++-- howto/use-git-daemon.html | 4 ++-- howto/using-merge-subtree.html | 4 ++-- howto/using-signed-tag-in-pull-request.html | 4 ++-- technical/api-error-handling.html | 2 +- technical/api-index.html | 2 +- technical/api-merge.html | 2 +- technical/api-parse-options.html | 2 +- technical/api-simple-ipc.html | 2 +- technical/api-trace2.html | 2 +- technical/bitmap-format.html | 2 +- technical/bundle-uri.html | 2 +- technical/hash-function-transition.html | 2 +- technical/long-running-process-protocol.html | 2 +- technical/multi-pack-index.html | 2 +- technical/pack-heuristics.html | 2 +- technical/parallel-checkout.html | 2 +- technical/partial-clone.html | 2 +- technical/racy-git.html | 2 +- technical/scalar.html | 2 +- technical/send-pack-pipeline.html | 2 +- technical/shallow.html | 2 +- technical/trivial-merge.html | 2 +- technical/unit-tests.html | 2 +- user-manual.html | 2 +- 50 files changed, 113 insertions(+), 75 deletions(-) diff --git a/MyFirstContribution.html b/MyFirstContribution.html index ab7dffa41..aff550d44 100644 --- a/MyFirstContribution.html +++ b/MyFirstContribution.html @@ -735,7 +735,7 @@
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index 20523d68e..e8aef0e2b 100644 --- a/MyFirstObjectWalk.html +++ b/MyFirstObjectWalk.html @@ -735,7 +735,7 @@
diff --git a/RelNotes/2.44.0.txt b/RelNotes/2.44.0.txt index edeed7185..bf8a9524a 100644 --- a/RelNotes/2.44.0.txt +++ b/RelNotes/2.44.0.txt @@ -91,6 +91,14 @@ UI, Workflows & Features refresh token the same way as credential-cache and credential-libsecret backends. + * Command line completion support (in contrib/) has been + updated for "git bisect". + + * "git branch" and friends learned to use the formatted text as + sorting key, not the underlying timestamp value, when the --sort + option is used with author or committer timestamp with a format + specifier (e.g., "--sort=creatordate:format:%H:%M:%S"). + Performance, Internal Implementation, Development Support etc. @@ -151,6 +159,9 @@ Performance, Internal Implementation, Development Support etc. * The priority queue test has been migrated to the unit testing framework. + * Setting `feature.experimental` opts the user into multi-pack reuse + experiment + Fixes since v2.43 ----------------- @@ -279,6 +290,17 @@ Fixes since v2.43 as with a wrong length, which has been corrected. (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). + * A failed "git tag -s" did not necessarily result in an error + depending on the crypto backend, which has been corrected. + (merge 6931049c32 jc/sign-buffer-failure-propagation-fix later to maint). + + * "git stash" sometimes was silent even when it failed due to + unwritable index file, which has been corrected. + (merge d2058cb2f0 ps/report-failure-from-git-stash later to maint). + + * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD", + which has been corrected. + * Other code cleanup, docfix, build fix, etc. (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). (merge 9cce3be2df bk/bisect-doc-fix later to maint). @@ -293,3 +315,5 @@ Fixes since v2.43 (merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint). (merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint). (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). + (merge 841dbd40a3 jc/bisect-doc later to maint). + (merge 78307f1a89 pb/template-for-single-commit-pr later to maint). diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 82b2f76a1..6080f386f 100644 --- a/ReviewingGuidelines.html +++ b/ReviewingGuidelines.html @@ -735,7 +735,7 @@
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index ce3620dfd..cfa981668 100644 --- a/SubmittingPatches.html +++ b/SubmittingPatches.html @@ -735,7 +735,7 @@
diff --git a/ToolsForGit.html b/ToolsForGit.html index 168a58141..aafac3864 100644 --- a/ToolsForGit.html +++ b/ToolsForGit.html @@ -735,7 +735,7 @@
diff --git a/everyday.html b/everyday.html index 2f3cc8d3a..dbb93920f 100644 --- a/everyday.html +++ b/everyday.html @@ -735,7 +735,7 @@
diff --git a/git-bisect.html b/git-bisect.html index 62ab8dbfc..32a778572 100644 --- a/git-bisect.html +++ b/git-bisect.html @@ -761,11 +761,11 @@

DESCRIPTION

on the subcommand:

-
git bisect start [--term-(new|bad)=<term-new> --term-(old|good)=<term-old>]
+
git bisect start [--term-(bad|new)=<term-new> --term-(good|old)=<term-old>]
                  [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
 git bisect (bad|new|<term-new>) [<rev>]
 git bisect (good|old|<term-old>) [<rev>...]
-git bisect terms [--term-good | --term-bad]
+git bisect terms [--term-(good|old) | --term-(bad|new)]
 git bisect skip [(<rev>|<range>)...]
 git bisect reset [<commit>]
 git bisect (visualize|view)
@@ -887,8 +887,10 @@ 

Alternate terms

git bisect terms
-

You can get just the old (respectively new) term with git bisect terms ---term-old or git bisect terms --term-good.

+

You can get just the old term with git bisect terms --term-old +or git bisect terms --term-good; git bisect terms --term-new +and git bisect terms --term-bad can be used to learn how to call +the commits more recent than the sought change.

If you would like to use your own terms instead of "bad"/"good" or "new"/"old", you can choose any names you like (except existing bisect subcommands like reset, start, …) by starting the @@ -1244,7 +1246,7 @@

GIT

diff --git a/git-bisect.txt b/git-bisect.txt index 8e01f1d61..82f944dc0 100644 --- a/git-bisect.txt +++ b/git-bisect.txt @@ -16,11 +16,11 @@ DESCRIPTION The command takes various subcommands, and different options depending on the subcommand: - git bisect start [--term-(new|bad)= --term-(old|good)=] + git bisect start [--term-(bad|new)= --term-(good|old)=] [--no-checkout] [--first-parent] [ [...]] [--] [...] git bisect (bad|new|) [] git bisect (good|old|) [...] - git bisect terms [--term-good | --term-bad] + git bisect terms [--term-(good|old) | --term-(bad|new)] git bisect skip [(|)...] git bisect reset [] git bisect (visualize|view) @@ -165,8 +165,10 @@ To get a reminder of the currently used terms, use git bisect terms ------------------------------------------------ -You can get just the old (respectively new) term with `git bisect terms ---term-old` or `git bisect terms --term-good`. +You can get just the old term with `git bisect terms --term-old` +or `git bisect terms --term-good`; `git bisect terms --term-new` +and `git bisect terms --term-bad` can be used to learn how to call +the commits more recent than the sought change. If you would like to use your own terms instead of "bad"/"good" or "new"/"old", you can choose any names you like (except existing bisect diff --git a/git-config.html b/git-config.html index ea905009a..e841434c7 100644 --- a/git-config.html +++ b/git-config.html @@ -5514,6 +5514,12 @@

Variables

walking fewer objects.

+
  • +

    +pack.allowPackReuse=multi may improve the time it takes to create a pack by +reusing objects from multiple packs instead of just one. +

    +
  • diff --git a/git-for-each-ref.html b/git-for-each-ref.html index a9d5256bc..1b89720ec 100644 --- a/git-for-each-ref.html +++ b/git-for-each-ref.html @@ -1347,9 +1347,11 @@

    FIELD NAMES

    In any case, a field name that refers to a field inapplicable to the object referred by the ref does not cause an error. It returns an empty string instead.

    -

    As a special case for the date-type fields, you may specify a format for -the date by adding : followed by date format name (see the -values the --date option to git-rev-list(1) takes).

    +

    As a special case for the date-type fields, you may specify a format for the +date by adding : followed by date format name (see the values the --date +option to git-rev-list(1) takes). If this formatting is provided in +a --sort key, references will be sorted according to the byte-value of the +formatted string rather than the numeric value of the underlying timestamp.

    Some atoms like %(align) and %(if) always require a matching %(end). We call them "opening atoms" and sometimes denote them as %($open).

    When a scripting language specific quoting is in effect, everything @@ -1497,7 +1499,7 @@

    GIT

    diff --git a/git-for-each-ref.txt b/git-for-each-ref.txt index be9543f68..3a9ad91b7 100644 --- a/git-for-each-ref.txt +++ b/git-for-each-ref.txt @@ -359,9 +359,11 @@ In any case, a field name that refers to a field inapplicable to the object referred by the ref does not cause an error. It returns an empty string instead. -As a special case for the date-type fields, you may specify a format for -the date by adding `:` followed by date format name (see the -values the `--date` option to linkgit:git-rev-list[1] takes). +As a special case for the date-type fields, you may specify a format for the +date by adding `:` followed by date format name (see the values the `--date` +option to linkgit:git-rev-list[1] takes). If this formatting is provided in +a `--sort` key, references will be sorted according to the byte-value of the +formatted string rather than the numeric value of the underlying timestamp. Some atoms like %(align) and %(if) always require a matching %(end). We call them "opening atoms" and sometimes denote them as %($open). diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 2a9ce39b0..ab705c782 100644 --- a/git-remote-helpers.html +++ b/git-remote-helpers.html @@ -735,7 +735,7 @@
    diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index fab93d415..c2e8659e3 100644 --- a/howto/coordinate-embargoed-releases.html +++ b/howto/coordinate-embargoed-releases.html @@ -1038,7 +1038,7 @@

    diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 162d8d9cb..d0a3688c3 100644 --- a/howto/keep-canonical-history-correct.html +++ b/howto/keep-canonical-history-correct.html @@ -735,7 +735,7 @@
    @@ -939,7 +939,7 @@

    Keep authoritative canonical history correct with git pull

    diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 330b0a1d5..85df96133 100644 --- a/howto/maintain-git.html +++ b/howto/maintain-git.html @@ -735,7 +735,7 @@
    @@ -1479,7 +1479,7 @@

    Preparing a "merge-fix"

    diff --git a/howto/new-command.html b/howto/new-command.html index eab435ae0..bc32559fe 100644 --- a/howto/new-command.html +++ b/howto/new-command.html @@ -735,7 +735,7 @@
    @@ -864,7 +864,7 @@

    Integrating a command

    diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index 78ca75820..72580ad92 100644 --- a/howto/rebase-from-internal-branch.html +++ b/howto/rebase-from-internal-branch.html @@ -735,7 +735,7 @@
    @@ -896,7 +896,7 @@

    How to rebase from an internal branch

    diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index 5c3fd5d9f..6dc9321ef 100644 --- a/howto/rebuild-from-update-hook.html +++ b/howto/rebuild-from-update-hook.html @@ -735,7 +735,7 @@
    @@ -848,7 +848,7 @@

    How to rebuild from update hook

    diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index bf20bbdc8..f577659fa 100644 --- a/howto/recover-corrupted-blob-object.html +++ b/howto/recover-corrupted-blob-object.html @@ -735,7 +735,7 @@
    @@ -881,7 +881,7 @@

    How to recover a corrupted blob object

    diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 312f57310..433f07680 100644 --- a/howto/recover-corrupted-object-harder.html +++ b/howto/recover-corrupted-object-harder.html @@ -735,7 +735,7 @@
    @@ -1190,7 +1190,7 @@

    The adventure continues…

    diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index 3ef57b4c0..069021538 100644 --- a/howto/revert-a-faulty-merge.html +++ b/howto/revert-a-faulty-merge.html @@ -735,7 +735,7 @@
    @@ -1026,7 +1026,7 @@

    How to revert a faulty merge

    diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index 195050101..19638e291 100644 --- a/howto/revert-branch-rebase.html +++ b/howto/revert-branch-rebase.html @@ -735,7 +735,7 @@
    @@ -908,7 +908,7 @@

    How to revert an existing commit

    diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 415284956..dffce4750 100644 --- a/howto/separating-topic-branches.html +++ b/howto/separating-topic-branches.html @@ -735,7 +735,7 @@
    @@ -842,7 +842,7 @@

    How to separate topic branches

    diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index 2abe0240c..f05fa1c2b 100644 --- a/howto/setup-git-server-over-http.html +++ b/howto/setup-git-server-over-http.html @@ -735,7 +735,7 @@
    @@ -1072,7 +1072,7 @@

    Troubleshooting:

    diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index 23df62a86..f91f36f6b 100644 --- a/howto/update-hook-example.html +++ b/howto/update-hook-example.html @@ -735,7 +735,7 @@
    @@ -931,7 +931,7 @@

    How to use the update hook

    diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index c98d935d6..0cc269cb4 100644 --- a/howto/use-git-daemon.html +++ b/howto/use-git-daemon.html @@ -735,7 +735,7 @@
    @@ -792,7 +792,7 @@

    How to use git-daemon

    diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index c1a337ed8..465e607eb 100644 --- a/howto/using-merge-subtree.html +++ b/howto/using-merge-subtree.html @@ -735,7 +735,7 @@
    @@ -849,7 +849,7 @@

    Additional tips

    diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html index 55c04d33e..caa02766f 100644 --- a/howto/using-signed-tag-in-pull-request.html +++ b/howto/using-signed-tag-in-pull-request.html @@ -735,7 +735,7 @@
    @@ -953,7 +953,7 @@

    Auditors

    diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index a4f079324..f5b81d99e 100644 --- a/technical/api-error-handling.html +++ b/technical/api-error-handling.html @@ -735,7 +735,7 @@
    diff --git a/technical/api-index.html b/technical/api-index.html index 952625798..ffb613bac 100644 --- a/technical/api-index.html +++ b/technical/api-index.html @@ -735,7 +735,7 @@
    diff --git a/technical/api-merge.html b/technical/api-merge.html index b448eb0a7..c24e78984 100644 --- a/technical/api-merge.html +++ b/technical/api-merge.html @@ -735,7 +735,7 @@
    diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index 051f2f0cb..e9b26c4c5 100644 --- a/technical/api-parse-options.html +++ b/technical/api-parse-options.html @@ -735,7 +735,7 @@
    diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html index 1db3da603..f589941e7 100644 --- a/technical/api-simple-ipc.html +++ b/technical/api-simple-ipc.html @@ -735,7 +735,7 @@
    diff --git a/technical/api-trace2.html b/technical/api-trace2.html index 610bdc449..9eb08be3a 100644 --- a/technical/api-trace2.html +++ b/technical/api-trace2.html @@ -735,7 +735,7 @@
    diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html index 382b8cf4a..c4886945b 100644 --- a/technical/bitmap-format.html +++ b/technical/bitmap-format.html @@ -735,7 +735,7 @@
    diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html index 17699cc3b..a37d6ec6f 100644 --- a/technical/bundle-uri.html +++ b/technical/bundle-uri.html @@ -735,7 +735,7 @@
    diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html index a5a07e272..82f1ee68b 100644 --- a/technical/hash-function-transition.html +++ b/technical/hash-function-transition.html @@ -735,7 +735,7 @@
    diff --git a/technical/long-running-process-protocol.html b/technical/long-running-process-protocol.html index f1296fbe6..4b108746c 100644 --- a/technical/long-running-process-protocol.html +++ b/technical/long-running-process-protocol.html @@ -735,7 +735,7 @@
    diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html index 6aa8c1743..3d1ee351e 100644 --- a/technical/multi-pack-index.html +++ b/technical/multi-pack-index.html @@ -735,7 +735,7 @@
    diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html index 43b5be32e..04a260cb2 100644 --- a/technical/pack-heuristics.html +++ b/technical/pack-heuristics.html @@ -735,7 +735,7 @@
    diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html index dfdbb4cd4..308cd55d6 100644 --- a/technical/parallel-checkout.html +++ b/technical/parallel-checkout.html @@ -735,7 +735,7 @@
    diff --git a/technical/partial-clone.html b/technical/partial-clone.html index 03c88f774..43cfff18d 100644 --- a/technical/partial-clone.html +++ b/technical/partial-clone.html @@ -735,7 +735,7 @@
    diff --git a/technical/racy-git.html b/technical/racy-git.html index 51b0b566e..99fa507c1 100644 --- a/technical/racy-git.html +++ b/technical/racy-git.html @@ -735,7 +735,7 @@
    diff --git a/technical/scalar.html b/technical/scalar.html index 4a3aff1a2..a9fa24347 100644 --- a/technical/scalar.html +++ b/technical/scalar.html @@ -735,7 +735,7 @@
    diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index d1684be75..b2af2cf0b 100644 --- a/technical/send-pack-pipeline.html +++ b/technical/send-pack-pipeline.html @@ -735,7 +735,7 @@
    diff --git a/technical/shallow.html b/technical/shallow.html index 45a93d94e..8d0432c49 100644 --- a/technical/shallow.html +++ b/technical/shallow.html @@ -735,7 +735,7 @@
    diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index fcc61b32f..ec43c1916 100644 --- a/technical/trivial-merge.html +++ b/technical/trivial-merge.html @@ -735,7 +735,7 @@
    diff --git a/technical/unit-tests.html b/technical/unit-tests.html index 9c297b5d1..bb67a4e9b 100644 --- a/technical/unit-tests.html +++ b/technical/unit-tests.html @@ -735,7 +735,7 @@
    diff --git a/user-manual.html b/user-manual.html index 0425119ba..b75ee18d6 100644 --- a/user-manual.html +++ b/user-manual.html @@ -1,5 +1,5 @@ -Git User Manual

    Git User Manual

    Revision History
    2024-02-08

    Table of Contents

    Introduction
    1. Repositories and Branches
    How to get a Git repository
    How to check out a different version of a project
    Understanding History: Commits
    Understanding history: commits, parents, and reachability
    Understanding history: History diagrams
    Understanding history: What is a branch?
    Manipulating branches
    Examining an old version without creating a new branch
    Examining branches from a remote repository
    Naming branches, tags, and other references
    Updating a repository with git fetch
    Fetching branches from other repositories
    2. Exploring Git history
    How to use bisect to find a regression
    Naming commits
    Creating tags
    Browsing revisions
    Generating diffs
    Viewing old file versions
    Examples
    Counting the number of commits on a branch
    Check whether two branches point at the same history
    Find first tagged version including a given fix
    Showing commits unique to a given branch
    Creating a changelog and tarball for a software release
    Finding commits referencing a file with given content
    3. Developing with Git
    Telling Git your name
    Creating a new repository
    How to make a commit
    Creating good commit messages
    Ignoring files
    How to merge
    Resolving a merge
    Getting conflict-resolution help during a merge
    Undoing a merge
    Fast-forward merges
    Fixing mistakes
    Fixing a mistake with a new commit
    Fixing a mistake by rewriting history
    Checking out an old version of a file
    Temporarily setting aside work in progress
    Ensuring good performance
    Ensuring reliability
    Checking the repository for corruption
    Recovering lost changes
    4. Sharing development with others
    Getting updates with git pull
    Submitting patches to a project
    Importing patches to a project
    Public Git repositories
    Setting up a public repository
    Exporting a Git repository via the Git protocol
    Exporting a git repository via HTTP
    Pushing changes to a public repository
    What to do when a push fails
    Setting up a shared repository
    Allowing web browsing of a repository
    How to get a Git repository with minimal history
    Examples
    Maintaining topic branches for a Linux subsystem maintainer
    5. Rewriting history and maintaining patch series
    Creating the perfect patch series
    Keeping a patch series up to date using git rebase
    Rewriting a single commit
    Reordering or selecting from a patch series
    Using interactive rebases
    Other tools
    Problems with rewriting history
    Why bisecting merge commits can be harder than bisecting linear history
    6. Advanced branch management
    Fetching individual branches
    git fetch and fast-forwards
    Forcing git fetch to do non-fast-forward updates
    Configuring remote-tracking branches
    7. Git concepts
    The Object Database
    Commit Object
    Tree Object
    Blob Object
    Trust
    Tag Object
    How Git stores objects efficiently: pack files
    Dangling objects
    Recovering from repository corruption
    The index
    8. Submodules
    Pitfalls with submodules
    9. Low-level Git operations
    Object access and manipulation
    The Workflow
    working directory → index
    index → object database
    object database → index
    index → working directory
    Tying it all together
    Examining the data
    Merging multiple trees
    Merging multiple trees, continued
    10. Hacking Git
    Object storage format
    A birds-eye view of Git’s source code
    11. Git Glossary
    Git explained
    A. Git Quick Reference
    Creating a new repository
    Managing branches
    Exploring history
    Making changes
    Merging
    Sharing your changes
    Repository maintenance
    B. Notes and todo list for this manual
    Todo list

    Introduction

    Git is a fast distributed revision control system.

    This manual is designed to be readable by someone with basic UNIX +Git User Manual

    Git User Manual

    Revision History
    2024-02-12

    Table of Contents

    Introduction
    1. Repositories and Branches
    How to get a Git repository
    How to check out a different version of a project
    Understanding History: Commits
    Understanding history: commits, parents, and reachability
    Understanding history: History diagrams
    Understanding history: What is a branch?
    Manipulating branches
    Examining an old version without creating a new branch
    Examining branches from a remote repository
    Naming branches, tags, and other references
    Updating a repository with git fetch
    Fetching branches from other repositories
    2. Exploring Git history
    How to use bisect to find a regression
    Naming commits
    Creating tags
    Browsing revisions
    Generating diffs
    Viewing old file versions
    Examples
    Counting the number of commits on a branch
    Check whether two branches point at the same history
    Find first tagged version including a given fix
    Showing commits unique to a given branch
    Creating a changelog and tarball for a software release
    Finding commits referencing a file with given content
    3. Developing with Git
    Telling Git your name
    Creating a new repository
    How to make a commit
    Creating good commit messages
    Ignoring files
    How to merge
    Resolving a merge
    Getting conflict-resolution help during a merge
    Undoing a merge
    Fast-forward merges
    Fixing mistakes
    Fixing a mistake with a new commit
    Fixing a mistake by rewriting history
    Checking out an old version of a file
    Temporarily setting aside work in progress
    Ensuring good performance
    Ensuring reliability
    Checking the repository for corruption
    Recovering lost changes
    4. Sharing development with others
    Getting updates with git pull
    Submitting patches to a project
    Importing patches to a project
    Public Git repositories
    Setting up a public repository
    Exporting a Git repository via the Git protocol
    Exporting a git repository via HTTP
    Pushing changes to a public repository
    What to do when a push fails
    Setting up a shared repository
    Allowing web browsing of a repository
    How to get a Git repository with minimal history
    Examples
    Maintaining topic branches for a Linux subsystem maintainer
    5. Rewriting history and maintaining patch series
    Creating the perfect patch series
    Keeping a patch series up to date using git rebase
    Rewriting a single commit
    Reordering or selecting from a patch series
    Using interactive rebases
    Other tools
    Problems with rewriting history
    Why bisecting merge commits can be harder than bisecting linear history
    6. Advanced branch management
    Fetching individual branches
    git fetch and fast-forwards
    Forcing git fetch to do non-fast-forward updates
    Configuring remote-tracking branches
    7. Git concepts
    The Object Database
    Commit Object
    Tree Object
    Blob Object
    Trust
    Tag Object
    How Git stores objects efficiently: pack files
    Dangling objects
    Recovering from repository corruption
    The index
    8. Submodules
    Pitfalls with submodules
    9. Low-level Git operations
    Object access and manipulation
    The Workflow
    working directory → index
    index → object database
    object database → index
    index → working directory
    Tying it all together
    Examining the data
    Merging multiple trees
    Merging multiple trees, continued
    10. Hacking Git
    Object storage format
    A birds-eye view of Git’s source code
    11. Git Glossary
    Git explained
    A. Git Quick Reference
    Creating a new repository
    Managing branches
    Exploring history
    Making changes
    Merging
    Sharing your changes
    Repository maintenance
    B. Notes and todo list for this manual
    Todo list

    Introduction

    Git is a fast distributed revision control system.

    This manual is designed to be readable by someone with basic UNIX command-line skills, but no previous knowledge of Git.

    Chapter 1, Repositories and Branches and Chapter 2, Exploring Git history explain how to fetch and study a project using git—read these chapters to learn how to build and test a particular version of a software project, search for