From 6018d90530e0fe6eb0dfe74d97edead221614fe2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 17 Aug 2023 17:20:22 -0700 Subject: Autogenerated HTML docs for v2.42.0-rc2-7-gf9972 --- MyFirstContribution.html | 2 +- MyFirstObjectWalk.html | 2 +- ReviewingGuidelines.html | 2 +- SubmittingPatches.html | 2 +- ToolsForGit.html | 2 +- everyday.html | 2 +- git-log.html | 2 +- git-notes.html | 17 ++++++++--------- git-notes.txt | 15 +++++++-------- git-remote-helpers.html | 2 +- git-rev-list.html | 2 +- git-shortlog.html | 2 +- git-show-ref.html | 6 +++--- git-show-ref.txt | 4 ++-- 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 ++-- rev-list-options.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/scalar.html | 2 +- technical/send-pack-pipeline.html | 2 +- technical/shallow.html | 2 +- technical/trivial-merge.html | 2 +- user-manual.html | 2 +- 51 files changed, 82 insertions(+), 84 deletions(-) diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 4b0da943f..1a9e8cca0 100644 --- a/MyFirstContribution.html +++ b/MyFirstContribution.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index 9328ad0e6..fb92976e7 100644 --- a/MyFirstObjectWalk.html +++ b/MyFirstObjectWalk.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 924b80963..36f9e8836 100644 --- a/ReviewingGuidelines.html +++ b/ReviewingGuidelines.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index 17f7b968b..0cf2ff9b5 100644 --- a/SubmittingPatches.html +++ b/SubmittingPatches.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/ToolsForGit.html b/ToolsForGit.html index 2e5c58de7..a0c170135 100644 --- a/ToolsForGit.html +++ b/ToolsForGit.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/everyday.html b/everyday.html index 3bcc79cb4..5c896f992 100644 --- a/everyday.html +++ b/everyday.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/git-log.html b/git-log.html index 271d50008..8e6497bc6 100644 --- a/git-log.html +++ b/git-log.html @@ -1407,7 +1407,7 @@ explicitly.

In addition to getting arguments from the command line, read - them for standard input as well. This accepts commits and + them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. diff --git a/git-notes.html b/git-notes.html index 6de6c1d81..be22522ba 100644 --- a/git-notes.html +++ b/git-notes.html @@ -946,8 +946,8 @@ get-ref If multiple -m options are given, their values are concatenated as separate paragraphs. Lines starting with # and empty lines other than a - single line between paragraphs will be stripped out, - if you wish to keep them verbatim, use --no-stripspace. + single line between paragraphs will be stripped out. + If you wish to keep them verbatim, use --no-stripspace.

@@ -961,9 +961,8 @@ get-ref Take the note message from the given file. Use - to read the note message from the standard input. Lines starting with # and empty lines other than a - single line between paragraphs will be stripped out, - if you wish to keep them verbatim, use with - --no-stripspace option. + single line between paragraphs will be stripped out. + If you wish to keep them verbatim, use --no-stripspace.

@@ -1021,9 +1020,9 @@ get-ref

Strip leading and trailing whitespace from the note message. Also strip out empty lines other than a single line between - paragraphs. For lines starting with # will be stripped out - in non-editor cases like "-m", "-F" and "-C", but not in - editor case like "git notes edit", "-c", etc. + paragraphs. Lines starting with # will be stripped out + in non-editor cases like -m, -F and -C, but not in + editor case like git notes edit, -c, etc.

@@ -1397,7 +1396,7 @@ on the notes.rewrite.<command> and notes.rewriteRef
diff --git a/git-notes.txt b/git-notes.txt index bc1bfa379..f8310e56a 100644 --- a/git-notes.txt +++ b/git-notes.txt @@ -141,17 +141,16 @@ OPTIONS If multiple `-m` options are given, their values are concatenated as separate paragraphs. Lines starting with `#` and empty lines other than a - single line between paragraphs will be stripped out, - if you wish to keep them verbatim, use `--no-stripspace`. + single line between paragraphs will be stripped out. + If you wish to keep them verbatim, use `--no-stripspace`. -F :: --file=:: Take the note message from the given file. Use '-' to read the note message from the standard input. Lines starting with `#` and empty lines other than a - single line between paragraphs will be stripped out, - if you wish to keep them verbatim, use with - `--no-stripspace` option. + single line between paragraphs will be stripped out. + If you wish to keep them verbatim, use `--no-stripspace`. -C :: --reuse-message=:: @@ -180,9 +179,9 @@ OPTIONS --[no-]stripspace:: Strip leading and trailing whitespace from the note message. Also strip out empty lines other than a single line between - paragraphs. For lines starting with `#` will be stripped out - in non-editor cases like "-m", "-F" and "-C", but not in - editor case like "git notes edit", "-c", etc. + paragraphs. Lines starting with `#` will be stripped out + in non-editor cases like `-m`, `-F` and `-C`, but not in + editor case like `git notes edit`, `-c`, etc. --ref :: Manipulate the notes tree in . This overrides diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 289a9e4ef..cc9fe7b9d 100644 --- a/git-remote-helpers.html +++ b/git-remote-helpers.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/git-rev-list.html b/git-rev-list.html index b68a51205..9046e3f57 100644 --- a/git-rev-list.html +++ b/git-rev-list.html @@ -1212,7 +1212,7 @@ explicitly.

In addition to getting arguments from the command line, read - them for standard input as well. This accepts commits and + them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. diff --git a/git-shortlog.html b/git-shortlog.html index ba9727371..798de1b2d 100644 --- a/git-shortlog.html +++ b/git-shortlog.html @@ -1346,7 +1346,7 @@ explicitly.

In addition to getting arguments from the command line, read - them for standard input as well. This accepts commits and + them from standard input as well. This accepts commits and pseudo-options like --all and --glob=. When a -- separator is seen, the following input is treated as paths and used to limit the result. diff --git a/git-show-ref.html b/git-show-ref.html index ca0877c33..68ba73e39 100644 --- a/git-show-ref.html +++ b/git-show-ref.html @@ -805,7 +805,7 @@ the .git directory.

- Dereference tags into object IDs as well. They will be shown with {caret}{} + Dereference tags into object IDs as well. They will be shown with ^{} appended.

@@ -860,7 +860,7 @@ the .git directory.

Make git show-ref act as a filter that reads refs from stdin of the form ^(?:<anything>\s)?<refname>(?:\^{})?$ and performs the following actions on each: - (1) strip {caret}{} at the end of line if any; + (1) strip ^{} at the end of line if any; (2) ignore if pattern is provided and does not head-match refname; (3) warn if refname is not a well-formed refname and skip; (4) ignore if refname is a ref that exists in the local repository; @@ -987,7 +987,7 @@ flag, so you can do

diff --git a/git-show-ref.txt b/git-show-ref.txt index 44c7387d7..2fe274b8f 100644 --- a/git-show-ref.txt +++ b/git-show-ref.txt @@ -47,7 +47,7 @@ OPTIONS -d:: --dereference:: - Dereference tags into object IDs as well. They will be shown with `{caret}{}` + Dereference tags into object IDs as well. They will be shown with `^{}` appended. -s:: @@ -78,7 +78,7 @@ OPTIONS Make `git show-ref` act as a filter that reads refs from stdin of the form `^(?:\s)?(?:\^{})?$` and performs the following actions on each: - (1) strip `{caret}{}` at the end of line if any; + (1) strip `^{}` at the end of line if any; (2) ignore if pattern is provided and does not head-match refname; (3) warn if refname is not a well-formed refname and skip; (4) ignore if refname is a ref that exists in the local repository; diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 1b5caea37..eff7c1d47 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 b9d7f881a..f79b33df8 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 96a7587ee..c27a39803 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 553c2590c..1d36ee2d4 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 6e9f35a2c..dfaa5137c 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 98e9c65e0..834f55207 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 5211412b5..bbb231e1e 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 90d3e1d30..3f19c7eef 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 01c568d06..f6febc794 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 3494321ee..a2f54a0d9 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 21047d4ed..050c1eee5 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 be796cdde..494059a90 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 b634785dd..6c7a0322b 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 ae09f3d7f..4607d4c6a 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 c5d8e966d..8ed7d2b62 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 80500f8ce..6d7e24466 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/rev-list-options.txt b/rev-list-options.txt index e6468bf0e..a4a0cb93b 100644 --- a/rev-list-options.txt +++ b/rev-list-options.txt @@ -237,7 +237,7 @@ endif::git-rev-list[] --stdin:: In addition to getting arguments from the command line, read - them for standard input as well. This accepts commits and + them from standard input as well. This accepts commits and pseudo-options like `--all` and `--glob=`. When a `--` separator is seen, the following input is treated as paths and used to limit the result. diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index 82acca642..936607c62 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 90efedfba..31fd693ae 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 ef3e61bc2..36b344c1d 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 7dd73d21d..9b87c20f0 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 3e4d6a558..2a122efe2 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 51586357f..e2d306235 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 625586f44..e30beec45 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 562c3dbf8..ebf070c92 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 48cb3c534..ee5631997 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 1f118ae0f..e26b5d271 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 431420294..3cb5fa538 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 77628fb5a..ab39961f9 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 0f2ea824f..1d79ecef0 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 68c94d1ab..5f3c02df7 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 b322b9b2e..8298c8d78 100644 --- a/technical/racy-git.html +++ b/technical/racy-git.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/technical/scalar.html b/technical/scalar.html index 5c161bb17..da43825b5 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 b34fd539e..99a74984f 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 89c65a88c..5874b267b 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 6eb98a59f..3abcabe03 100644 --- a/technical/trivial-merge.html +++ b/technical/trivial-merge.html @@ -735,7 +735,7 @@ asciidoc.install();
diff --git a/user-manual.html b/user-manual.html index 799c6cd8e..1631054f9 100644 --- a/user-manual.html +++ b/user-manual.html @@ -1,5 +1,5 @@ -Git User Manual

Git User Manual

Revision History
2023-08-15

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
2023-08-17

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