From 07b9e54e5347adf0229f3bb916568e37530051ae Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 2 Jan 2024 14:30:15 -0800 Subject: [PATCH] Autogenerated HTML docs for v2.43.0-254-ga260 --- MyFirstContribution.html | 2 +- MyFirstObjectWalk.html | 2 +- RelNotes/2.44.0.txt | 12 +++++++++ ReviewingGuidelines.html | 2 +- SubmittingPatches.html | 2 +- ToolsForGit.html | 2 +- everyday.html | 2 +- git-checkout.html | 4 +-- git-checkout.txt | 2 +- git-config.html | 2 +- git-remote-helpers.html | 2 +- git-switch.html | 4 +-- git-switch.txt | 2 +- git-worktree.html | 6 ++--- git-worktree.txt | 4 +-- gitglossary.html | 27 ++++++++++++++++++++ glossary-content.txt | 18 +++++++++++++ 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 | 21 ++++++++++++++- 54 files changed, 147 insertions(+), 71 deletions(-) diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 5ae019fa7..5f5805ce0 100644 --- a/MyFirstContribution.html +++ b/MyFirstContribution.html @@ -735,7 +735,7 @@
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index e6df6a148..35644fb1c 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 37d516191..a3c5373d4 100644 --- a/RelNotes/2.44.0.txt +++ b/RelNotes/2.44.0.txt @@ -134,6 +134,14 @@ Fixes since v2.43 which has been corrected. (merge 18ce48918c jx/fetch-atomic-error-message-fix later to maint). + * Command line completion script (in contrib/) learned to work better + with the reftable backend. + (merge 44dbb3bf29 sh/completion-with-reftable later to maint). + + * "git status" is taught to show both the branch being bisected and + being rebased when both are in effect at the same time. + (merge 990adccbdf rj/status-bisect-while-rebase later to maint). + * Other code cleanup, docfix, build fix, etc. (merge 50f1abcff6 js/packfile-h-typofix later to maint). (merge cbf498eb53 jb/reflog-expire-delete-dry-run-options later to maint). @@ -151,3 +159,7 @@ Fixes since v2.43 (merge 6d6f1cd7ee jc/doc-misspelt-refs-fix later to maint). (merge 37e8d795be sp/test-i18ngrep later to maint). (merge fbc6526ea6 rs/t6300-compressed-size-fix later to maint). + (merge 45184afb4d rs/rebase-use-strvec-pushf later to maint). + (merge a762af3dfd jc/retire-cas-opt-name-constant later to maint). + (merge de7c27a186 la/trailer-cleanups later to maint). + (merge d44b517137 jc/orphan-unborn later to maint). diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 2f476e05b..c8d7208e5 100644 --- a/ReviewingGuidelines.html +++ b/ReviewingGuidelines.html @@ -735,7 +735,7 @@
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index fc7b33db9..38b617a40 100644 --- a/SubmittingPatches.html +++ b/SubmittingPatches.html @@ -735,7 +735,7 @@
diff --git a/ToolsForGit.html b/ToolsForGit.html index 9835eb29e..2ff647277 100644 --- a/ToolsForGit.html +++ b/ToolsForGit.html @@ -735,7 +735,7 @@
diff --git a/everyday.html b/everyday.html index ad790d8d3..f02d12525 100644 --- a/everyday.html +++ b/everyday.html @@ -735,7 +735,7 @@
diff --git a/git-checkout.html b/git-checkout.html index 5926f9264..a808a688c 100644 --- a/git-checkout.html +++ b/git-checkout.html @@ -1052,7 +1052,7 @@

OPTIONS

- Create a new orphan branch, named <new-branch>, started from + Create a new unborn branch, named <new-branch>, started from <start-point> and switch to it. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and @@ -1635,7 +1635,7 @@

GIT

diff --git a/git-checkout.txt b/git-checkout.txt index 55a50b5b2..8bdfa54ab 100644 --- a/git-checkout.txt +++ b/git-checkout.txt @@ -217,7 +217,7 @@ variable. below for details. --orphan :: - Create a new 'orphan' branch, named ``, started from + Create a new unborn branch, named ``, started from `` and switch to it. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and diff --git a/git-config.html b/git-config.html index 2fdeeec39..87adc6591 100644 --- a/git-config.html +++ b/git-config.html @@ -2334,7 +2334,7 @@

Variables

Advice shown when a user tries to create a worktree from an - invalid reference, to instruct how to create a new orphan + invalid reference, to instruct how to create a new unborn branch instead.

diff --git a/git-remote-helpers.html b/git-remote-helpers.html index b8011d5c8..0735472e7 100644 --- a/git-remote-helpers.html +++ b/git-remote-helpers.html @@ -735,7 +735,7 @@
diff --git a/git-switch.html b/git-switch.html index 651930bd8..5b50a10de 100644 --- a/git-switch.html +++ b/git-switch.html @@ -1010,7 +1010,7 @@

OPTIONS

- Create a new orphan branch, named <new-branch>. All + Create a new unborn branch, named <new-branch>. All tracked files are removed.

@@ -1203,7 +1203,7 @@

GIT

diff --git a/git-switch.txt b/git-switch.txt index 6137421ed..f38e4c8af 100644 --- a/git-switch.txt +++ b/git-switch.txt @@ -176,7 +176,7 @@ name, the guessing is aborted. You can explicitly give a name with `branch.autoSetupMerge` configuration variable is true. --orphan :: - Create a new 'orphan' branch, named ``. All + Create a new unborn branch, named ``. All tracked files are removed. --ignore-other-worktrees:: diff --git a/git-worktree.html b/git-worktree.html index 8eb6c94b2..d5412bb7f 100644 --- a/git-worktree.html +++ b/git-worktree.html @@ -840,7 +840,7 @@

COMMANDS

If <commit-ish> is omitted, neither --detach, or --orphan is used, and there are no valid local branches (or remote branches if --guess-remote is specified) then, as a convenience, the new worktree is -associated with a new orphan branch named <branch> (after +associated with a new unborn branch named <branch> (after $(basename <path>) if neither -b or -B is used) as if --orphan was passed to the command. In the event the repository has a remote and --guess-remote is used, but no remote or local branches exist, then the @@ -1053,7 +1053,7 @@

OPTIONS

With add, make the new worktree and index empty, associating - the worktree with a new orphan/unborn branch named <new-branch>. + the worktree with a new unborn branch named <new-branch>.

@@ -1399,7 +1399,7 @@

GIT

diff --git a/git-worktree.txt b/git-worktree.txt index 93d76f5d6..2a240f53b 100644 --- a/git-worktree.txt +++ b/git-worktree.txt @@ -99,7 +99,7 @@ command will refuse to create the worktree (unless `--force` is used). If `` is omitted, neither `--detach`, or `--orphan` is used, and there are no valid local branches (or remote branches if `--guess-remote` is specified) then, as a convenience, the new worktree is -associated with a new orphan branch named `` (after +associated with a new unborn branch named `` (after `$(basename )` if neither `-b` or `-B` is used) as if `--orphan` was passed to the command. In the event the repository has a remote and `--guess-remote` is used, but no remote or local branches exist, then the @@ -234,7 +234,7 @@ This can also be set up as the default behaviour by using the --orphan:: With `add`, make the new worktree and index empty, associating - the worktree with a new orphan/unborn branch named ``. + the worktree with a new unborn branch named ``. --porcelain:: With `list`, output in an easy-to-parse format for scripts. diff --git a/gitglossary.html b/gitglossary.html index 54e21e163..38c2bba9e 100644 --- a/gitglossary.html +++ b/gitglossary.html @@ -1284,6 +1284,17 @@

DESCRIPTION

+orphan +
+
+

+ The act of getting on a branch that does not + exist yet (i.e., an unborn branch). After + such an operation, the commit first created becomes a commit + without a parent, starting a new history. +

+
+
origin
@@ -1927,6 +1938,22 @@

DESCRIPTION

+unborn +
+
+

+ The HEAD can point at a branch + that does not yet exist and that does not have any commit on + it yet, and such a branch is called an unborn branch. The + most typical way users encounter an unborn branch is by + creating a repository anew without cloning from elsewhere. + The HEAD would point at the main (or master, depending + on your configuration) branch that is yet to be born. Also + some operations can get you on an unborn branch with their + orphan option. +

+
+
unmerged index
diff --git a/glossary-content.txt b/glossary-content.txt index fbbb3f2de..f7d98c11e 100644 --- a/glossary-content.txt +++ b/glossary-content.txt @@ -314,6 +314,12 @@ This commit is referred to as a "merge commit", or sometimes just a [[def_octopus]]octopus:: To <> more than two <>. +[[def_orphan]]orphan:: + The act of getting on a <> that does not + exist yet (i.e., an <> branch). After + such an operation, the commit first created becomes a commit + without a parent, starting a new history. + [[def_origin]]origin:: The default upstream <>. Most projects have at least one upstream project which they track. By default @@ -697,6 +703,18 @@ The most notable example is `HEAD`. object, etc. +[[def_unborn]]unborn:: + The <> can point at a <> + that does not yet exist and that does not have any commit on + it yet, and such a branch is called an unborn branch. The + most typical way users encounter an unborn branch is by + creating a repository anew without cloning from elsewhere. + The HEAD would point at the 'main' (or 'master', depending + on your configuration) branch that is yet to be born. Also + some operations can get you on an unborn branch with their + <> option. + + [[def_unmerged_index]]unmerged index:: An <> which contains unmerged <>. diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 0584b507e..023cf3993 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 b48d0b64a..77c641084 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 6dfba5690..74acaf1e0 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 4fef81698..75863a43b 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 da565b2b4..757769bbf 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 a606e9959..906102082 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 18ce77486..e6efbc328 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 9e713fe34..55f43dec1 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 025537be9..d6a67302c 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 a679dd1c1..a9f7ae79f 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 15d6bc0a8..f0a5f9453 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 ae0621294..573929870 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 271cb5665..629caeb0a 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 8d04be56e..847eb10ce 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 b640da8db..7886b384e 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 6732d2530..b7fc56593 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 63c7b24cc..016d83185 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 a9c448a7f..1c94b8908 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 5dc5896de..8241b19a5 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 0d21c7cb2..79c2a9f53 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 a78aae409..2ce69a016 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 25b159825..35ef78aa4 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 d854b6463..041d0a8e9 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 fb45f6746..71c602e65 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 1a19d38b2..cbe4fc396 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 a5550c89c..f3a710a97 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 fcf7a46bb..4cbc39200 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 4c41363d7..c92ee1e0a 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 7b677e0fb..48622dfe0 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 e4535da09..afc8d789a 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 262c41eea..c5e0fc428 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 1723a1ad2..5a1e2002d 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 cdc140248..5fe80047a 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 1e8718bb3..1ac8d5f00 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 3029d9220..2d693b85d 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 557358cac..df549f4a5 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 23718b202..70459f801 100644 --- a/user-manual.html +++ b/user-manual.html @@ -1,5 +1,5 @@ -Git User Manual

Git User Manual

Revision History
2023-12-27

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-01-02

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 @@ -2310,6 +2310,13 @@

To merge more than two branches.
+orphan +
+ The act of getting on a branch that does not + exist yet (i.e., an unborn branch). After + such an operation, the commit first created becomes a commit + without a parent, starting a new history. +
origin
The default upstream repository. Most projects have @@ -2711,6 +2718,18 @@ object, etc.
+unborn +
+ The HEAD can point at a branch + that does not yet exist and that does not have any commit on + it yet, and such a branch is called an unborn branch. The + most typical way users encounter an unborn branch is by + creating a repository anew without cloning from elsewhere. + The HEAD would point at the main (or master, depending + on your configuration) branch that is yet to be born. Also + some operations can get you on an unborn branch with their + orphan option. +
unmerged index
An index which contains unmerged