From 69787bb1d0d3e52e2aac8718bd9824f65bbe4fe4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 26 Feb 2024 18:51:39 -0800 Subject: Autogenerated HTML docs for v2.44.0-35-ga2082 --- MyFirstContribution.html | 2 +- MyFirstObjectWalk.html | 2 +- RelNotes/2.45.0.txt | 40 ++++++++++++++++++++++++++++ ReviewingGuidelines.html | 2 +- SubmittingPatches.html | 2 +- ToolsForGit.html | 2 +- everyday.html | 2 +- git-clone.html | 6 +++++ git-config.html | 6 +++++ git-init.html | 6 +++++ git-remote-helpers.html | 2 +- gitrepository-layout.html | 5 ++-- 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 +-- ref-storage-format.txt | 2 ++ 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/repository-version.txt | 5 ++-- 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 +- 51 files changed, 125 insertions(+), 63 deletions(-) create mode 100644 RelNotes/2.45.0.txt diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 0d425b72c..8daef8a38 100644 --- a/MyFirstContribution.html +++ b/MyFirstContribution.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index 2e6d7e220..544592f33 100644 --- a/MyFirstObjectWalk.html +++ b/MyFirstObjectWalk.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/RelNotes/2.45.0.txt b/RelNotes/2.45.0.txt new file mode 100644 index 000000000..4f5a01c61 --- /dev/null +++ b/RelNotes/2.45.0.txt @@ -0,0 +1,40 @@ +Git v2.45 Release Notes +======================= + +Backward Compatibility Notes + +UI, Workflows & Features + + * Integrate the reftable code into the refs framework as a backend. + With "git init --ref-format=reftable", hopefully it would be a lot + more efficient to manage a repository with many references. + + * "git checkout -p" and friends learned that that "@" is a synonym + for "HEAD". + + +Performance, Internal Implementation, Development Support etc. + + * The code to iterate over refs with the reftable backend has seen + some optimization. + + * More tests that are marked as "ref-files only" have been updated to + improve test coverage of reftable backend. + + +Fixes since v2.44 +----------------- + + * "git apply" on a filesystem without filemode support have learned + to take a hint from what is in the index for the path, even when + not working with the "--index" or "--cached" option, when checking + the executable bit match what is required by the preimage in the + patch. + (merge 45b625142d cp/apply-core-filemode later to maint). + + * "git column" has been taught to reject negative padding value, as + it would lead to nonsense behaviour including division by zero. + (merge 76fb807faa kh/column-reject-negative-padding later to maint). + + * Other code cleanup, docfix, build fix, etc. + (merge f0e578c69c rs/use-xstrncmpz later to maint). diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 5d725614c..9bde1ee1f 100644 --- a/ReviewingGuidelines.html +++ b/ReviewingGuidelines.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index 450ce5ec2..172ef62d4 100644 --- a/SubmittingPatches.html +++ b/SubmittingPatches.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/ToolsForGit.html b/ToolsForGit.html index 2c379a376..a6d7971d5 100644 --- a/ToolsForGit.html +++ b/ToolsForGit.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/everyday.html b/everyday.html index 035f97a80..75c3d7b1f 100644 --- a/everyday.html +++ b/everyday.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/git-clone.html b/git-clone.html index 0aba355d1..7571b443d 100644 --- a/git-clone.html +++ b/git-clone.html @@ -1225,6 +1225,12 @@ Specify the given ref storage format for the repository. The valid values are: files for loose files with packed-refs. This is the default.

+
  • +

    +reftable for the reftable format. This format is experimental and its + internals are subject to change. +

    +
  • diff --git a/git-config.html b/git-config.html index e841434c7..ec710d3a0 100644 --- a/git-config.html +++ b/git-config.html @@ -5415,6 +5415,12 @@ extensions.refStorage

    files for loose files with packed-refs. This is the default.

    + +
  • +

    +reftable for the reftable format. This format is experimental and its + internals are subject to change. +

    It is an error to specify this key unless core.repositoryFormatVersion is 1.

    Note that this setting should only be set by git-init(1) or git-clone(1). Trying to change it after initialization will not diff --git a/git-init.html b/git-init.html index 3e528c442..d289f2584 100644 --- a/git-init.html +++ b/git-init.html @@ -834,6 +834,12 @@ Specify the given ref storage format for the repository. The valid values are: files for loose files with packed-refs. This is the default.

  • +
  • +

    +reftable for the reftable format. This format is experimental and its + internals are subject to change. +

    +
  • diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 01d2f2e5a..550832bc6 100644 --- a/git-remote-helpers.html +++ b/git-remote-helpers.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/gitrepository-layout.html b/gitrepository-layout.html index b4ff74b25..8b08ceb5b 100644 --- a/gitrepository-layout.html +++ b/gitrepository-layout.html @@ -1349,8 +1349,9 @@ GIT_COMMON_DIR/worktrees/<id>/config.worktree)

    refStorage

    -

    Specifies the file format for the ref database. The only valid value -is files (loose references with a packed-refs file).

    +

    Specifies the file format for the ref database. The valid values are +files (loose references with a packed-refs file) and reftable (see +Documentation/technical/reftable.txt).

    diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 380268841..de5e27971 100644 --- a/howto/coordinate-embargoed-releases.html +++ b/howto/coordinate-embargoed-releases.html @@ -1038,7 +1038,7 @@ Thanks, diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 92ab15515..c3f973013 100644 --- a/howto/keep-canonical-history-correct.html +++ b/howto/keep-canonical-history-correct.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -939,7 +939,7 @@ tip of your master again and redo the two merges:

    diff --git a/howto/maintain-git.html b/howto/maintain-git.html index ddf8295be..85b1cde3e 100644 --- a/howto/maintain-git.html +++ b/howto/maintain-git.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -1479,7 +1479,7 @@ $ git update-ref -d $mf/ai/topic diff --git a/howto/new-command.html b/howto/new-command.html index 829714625..6e0bf377a 100644 --- a/howto/new-command.html +++ b/howto/new-command.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -864,7 +864,7 @@ letter [PATCH 0/n]. diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index 49e192598..b4fa6db88 100644 --- a/howto/rebase-from-internal-branch.html +++ b/howto/rebase-from-internal-branch.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -896,7 +896,7 @@ the #1' commit.

    diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index b21a62b2a..dbf168c46 100644 --- a/howto/rebuild-from-update-hook.html +++ b/howto/rebuild-from-update-hook.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -848,7 +848,7 @@ This is still crude and does not protect against simultaneous diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index 1fd3eb378..cf71e3d5a 100644 --- a/howto/recover-corrupted-blob-object.html +++ b/howto/recover-corrupted-blob-object.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -881,7 +881,7 @@ thing.

    diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 5a0720373..bf7a8ecf7 100644 --- a/howto/recover-corrupted-object-harder.html +++ b/howto/recover-corrupted-object-harder.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -1190,7 +1190,7 @@ int main(int argc, char **argv) diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index e9c15f9fc..7fda64a80 100644 --- a/howto/revert-a-faulty-merge.html +++ b/howto/revert-a-faulty-merge.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -1026,7 +1026,7 @@ P---o---o---M---x---x---W---x---M2 diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index 0c5ae95aa..f941e8ddd 100644 --- a/howto/revert-branch-rebase.html +++ b/howto/revert-branch-rebase.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -908,7 +908,7 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index d9f065ef8..6117fdc66 100644 --- a/howto/separating-topic-branches.html +++ b/howto/separating-topic-branches.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -842,7 +842,7 @@ o---o"master" diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index d0cb717ea..9921a5e8c 100644 --- a/howto/setup-git-server-over-http.html +++ b/howto/setup-git-server-over-http.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -1072,7 +1072,7 @@ help diagnosing the problem, but removes security checks.

    diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index dabe37fb8..78a2b3941 100644 --- a/howto/update-hook-example.html +++ b/howto/update-hook-example.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -931,7 +931,7 @@ that JC can make non-fast-forward pushes on it.

    diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index fccb71858..43e09acf7 100644 --- a/howto/use-git-daemon.html +++ b/howto/use-git-daemon.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -792,7 +792,7 @@ a good practice to put the paths after a "--" separator.

    diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index 5d3b5b168..e3b95259e 100644 --- a/howto/using-merge-subtree.html +++ b/howto/using-merge-subtree.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -849,7 +849,7 @@ Please note that if the other project merges from you, then it will diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html index 00dee4a57..ca09327b0 100644 --- a/howto/using-signed-tag-in-pull-request.html +++ b/howto/using-signed-tag-in-pull-request.html @@ -735,7 +735,7 @@ asciidoc.install();
    @@ -953,7 +953,7 @@ as part of the merge commit.

    diff --git a/ref-storage-format.txt b/ref-storage-format.txt index 1a65cac46..14fff8a9c 100644 --- a/ref-storage-format.txt +++ b/ref-storage-format.txt @@ -1 +1,3 @@ * `files` for loose files with packed-refs. This is the default. +* `reftable` for the reftable format. This format is experimental and its + internals are subject to change. diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index efa94f6c6..3b056cef2 100644 --- a/technical/api-error-handling.html +++ b/technical/api-error-handling.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/api-index.html b/technical/api-index.html index bfa9efdf2..d75de85f0 100644 --- a/technical/api-index.html +++ b/technical/api-index.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/api-merge.html b/technical/api-merge.html index 25dfd8f66..87c78ba40 100644 --- a/technical/api-merge.html +++ b/technical/api-merge.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index 2dadc56e3..4678b2f75 100644 --- a/technical/api-parse-options.html +++ b/technical/api-parse-options.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html index 6d04670f2..7eedb6796 100644 --- a/technical/api-simple-ipc.html +++ b/technical/api-simple-ipc.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/api-trace2.html b/technical/api-trace2.html index b7902e060..a19b6a6da 100644 --- a/technical/api-trace2.html +++ b/technical/api-trace2.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html index 0e32ffc7a..3ccd3278c 100644 --- a/technical/bitmap-format.html +++ b/technical/bitmap-format.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html index fd714f153..63422ddc4 100644 --- a/technical/bundle-uri.html +++ b/technical/bundle-uri.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html index 08ee01bcc..1b7b37353 100644 --- a/technical/hash-function-transition.html +++ b/technical/hash-function-transition.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/long-running-process-protocol.html b/technical/long-running-process-protocol.html index 6e80d0c59..ba75f7ad4 100644 --- a/technical/long-running-process-protocol.html +++ b/technical/long-running-process-protocol.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html index b00040610..1830b766f 100644 --- a/technical/multi-pack-index.html +++ b/technical/multi-pack-index.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html index 0cf24f2b0..5fe1a0dea 100644 --- a/technical/pack-heuristics.html +++ b/technical/pack-heuristics.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html index e4a17b754..c3b13da73 100644 --- a/technical/parallel-checkout.html +++ b/technical/parallel-checkout.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/partial-clone.html b/technical/partial-clone.html index e1b8538c1..fbc1d407b 100644 --- a/technical/partial-clone.html +++ b/technical/partial-clone.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/racy-git.html b/technical/racy-git.html index 93057791b..08991e0e1 100644 --- a/technical/racy-git.html +++ b/technical/racy-git.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/repository-version.txt b/technical/repository-version.txt index 27be3741e..47281420f 100644 --- a/technical/repository-version.txt +++ b/technical/repository-version.txt @@ -103,5 +103,6 @@ GIT_COMMON_DIR/worktrees//config.worktree) ==== `refStorage` -Specifies the file format for the ref database. The only valid value -is `files` (loose references with a packed-refs file). +Specifies the file format for the ref database. The valid values are +`files` (loose references with a packed-refs file) and `reftable` (see +Documentation/technical/reftable.txt). diff --git a/technical/scalar.html b/technical/scalar.html index ae7ac9951..da2e367c1 100644 --- a/technical/scalar.html +++ b/technical/scalar.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index b9385d097..22b22d742 100644 --- a/technical/send-pack-pipeline.html +++ b/technical/send-pack-pipeline.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/shallow.html b/technical/shallow.html index 889be1c6f..d5627890f 100644 --- a/technical/shallow.html +++ b/technical/shallow.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index d98856af4..56ea69cf9 100644 --- a/technical/trivial-merge.html +++ b/technical/trivial-merge.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/technical/unit-tests.html b/technical/unit-tests.html index 6465a9f53..cb1d27014 100644 --- a/technical/unit-tests.html +++ b/technical/unit-tests.html @@ -735,7 +735,7 @@ asciidoc.install();
    diff --git a/user-manual.html b/user-manual.html index 19a9ffe61..1273b1839 100644 --- a/user-manual.html +++ b/user-manual.html @@ -1,5 +1,5 @@ -Git User Manual

    Git User Manual

    Revision History
    2024-02-22

    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-26

    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 -- cgit 1.2.3-korg