Autogenerated man pages for 36de72aa9dc3b7daf8cf2770c840f39bb0d2ae70
authorJunio C Hamano <junio@hera.kernel.org>
Tue, 27 Dec 2005 08:24:05 +0000 (00:24 -0800)
committerJunio C Hamano <junio@hera.kernel.org>
Tue, 27 Dec 2005 08:24:05 +0000 (00:24 -0800)
104 files changed:
man1/git-add.1 [new file with mode: 0755]
man1/git-am.1 [new file with mode: 0755]
man1/git-apply.1 [new file with mode: 0755]
man1/git-applymbox.1 [new file with mode: 0755]
man1/git-applypatch.1 [new file with mode: 0755]
man1/git-archimport.1 [new file with mode: 0755]
man1/git-bisect.1 [new file with mode: 0755]
man1/git-branch.1 [new file with mode: 0755]
man1/git-cat-file.1 [new file with mode: 0755]
man1/git-check-ref-format.1 [new file with mode: 0755]
man1/git-checkout-index.1 [new file with mode: 0755]
man1/git-checkout.1 [new file with mode: 0755]
man1/git-cherry-pick.1 [new file with mode: 0755]
man1/git-cherry.1 [new file with mode: 0755]
man1/git-clone-pack.1 [new file with mode: 0755]
man1/git-clone.1 [new file with mode: 0755]
man1/git-commit-tree.1 [new file with mode: 0755]
man1/git-commit.1 [new file with mode: 0755]
man1/git-convert-objects.1 [new file with mode: 0755]
man1/git-count-objects.1 [new file with mode: 0755]
man1/git-cvsexportcommit.1 [new file with mode: 0755]
man1/git-cvsimport.1 [new file with mode: 0755]
man1/git-daemon.1 [new file with mode: 0755]
man1/git-diff-files.1 [new file with mode: 0755]
man1/git-diff-index.1 [new file with mode: 0755]
man1/git-diff-stages.1 [new file with mode: 0755]
man1/git-diff-tree.1 [new file with mode: 0755]
man1/git-diff.1 [new file with mode: 0755]
man1/git-fetch-pack.1 [new file with mode: 0755]
man1/git-fetch.1 [new file with mode: 0755]
man1/git-fmt-merge-msg.1 [new file with mode: 0755]
man1/git-format-patch.1 [new file with mode: 0755]
man1/git-fsck-objects.1 [new file with mode: 0755]
man1/git-get-tar-commit-id.1 [new file with mode: 0755]
man1/git-grep.1 [new file with mode: 0755]
man1/git-hash-object.1 [new file with mode: 0755]
man1/git-http-fetch.1 [new file with mode: 0755]
man1/git-http-push.1 [new file with mode: 0755]
man1/git-index-pack.1 [new file with mode: 0755]
man1/git-init-db.1 [new file with mode: 0755]
man1/git-local-fetch.1 [new file with mode: 0755]
man1/git-log.1 [new file with mode: 0755]
man1/git-lost-found.1 [new file with mode: 0755]
man1/git-ls-files.1 [new file with mode: 0755]
man1/git-ls-remote.1 [new file with mode: 0755]
man1/git-ls-tree.1 [new file with mode: 0755]
man1/git-mailinfo.1 [new file with mode: 0755]
man1/git-mailsplit.1 [new file with mode: 0755]
man1/git-merge-base.1 [new file with mode: 0755]
man1/git-merge-index.1 [new file with mode: 0755]
man1/git-merge-one-file.1 [new file with mode: 0755]
man1/git-merge.1 [new file with mode: 0755]
man1/git-mktag.1 [new file with mode: 0755]
man1/git-mv.1 [new file with mode: 0755]
man1/git-name-rev.1 [new file with mode: 0755]
man1/git-pack-objects.1 [new file with mode: 0755]
man1/git-pack-redundant.1 [new file with mode: 0755]
man1/git-parse-remote.1 [new file with mode: 0755]
man1/git-patch-id.1 [new file with mode: 0755]
man1/git-peek-remote.1 [new file with mode: 0755]
man1/git-prune-packed.1 [new file with mode: 0755]
man1/git-prune.1 [new file with mode: 0755]
man1/git-pull.1 [new file with mode: 0755]
man1/git-push.1 [new file with mode: 0755]
man1/git-read-tree.1 [new file with mode: 0755]
man1/git-rebase.1 [new file with mode: 0755]
man1/git-receive-pack.1 [new file with mode: 0755]
man1/git-relink.1 [new file with mode: 0755]
man1/git-repack.1 [new file with mode: 0755]
man1/git-repo-config.1 [new file with mode: 0755]
man1/git-request-pull.1 [new file with mode: 0755]
man1/git-reset.1 [new file with mode: 0755]
man1/git-resolve.1 [new file with mode: 0755]
man1/git-rev-list.1 [new file with mode: 0755]
man1/git-rev-parse.1 [new file with mode: 0755]
man1/git-revert.1 [new file with mode: 0755]
man1/git-send-email.1 [new file with mode: 0755]
man1/git-send-pack.1 [new file with mode: 0755]
man1/git-sh-setup.1 [new file with mode: 0755]
man1/git-shell.1 [new file with mode: 0755]
man1/git-shortlog.1 [new file with mode: 0755]
man1/git-show-branch.1 [new file with mode: 0755]
man1/git-show-index.1 [new file with mode: 0755]
man1/git-ssh-fetch.1 [new file with mode: 0755]
man1/git-ssh-upload.1 [new file with mode: 0755]
man1/git-status.1 [new file with mode: 0755]
man1/git-stripspace.1 [new file with mode: 0755]
man1/git-svnimport.1 [new file with mode: 0755]
man1/git-symbolic-ref.1 [new file with mode: 0755]
man1/git-tag.1 [new file with mode: 0755]
man1/git-tar-tree.1 [new file with mode: 0755]
man1/git-unpack-file.1 [new file with mode: 0755]
man1/git-unpack-objects.1 [new file with mode: 0755]
man1/git-update-index.1 [new file with mode: 0755]
man1/git-update-ref.1 [new file with mode: 0755]
man1/git-update-server-info.1 [new file with mode: 0755]
man1/git-upload-pack.1 [new file with mode: 0755]
man1/git-var.1 [new file with mode: 0755]
man1/git-verify-pack.1 [new file with mode: 0755]
man1/git-verify-tag.1 [new file with mode: 0755]
man1/git-whatchanged.1 [new file with mode: 0755]
man1/git-write-tree.1 [new file with mode: 0755]
man1/gitk.1 [new file with mode: 0755]
man7/git.7 [new file with mode: 0755]

diff --git a/man1/git-add.1 b/man1/git-add.1
new file mode 100755 (executable)
index 0000000..ebacf16
--- /dev/null
@@ -0,0 +1,86 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-ADD" 1 "" "" ""
+.SH NAME
+git-add \- Add files to the index file.
+.SH "SYNOPSIS"
+
+
+git\-add [\-n] [\-v] <file>...
+
+.SH "DESCRIPTION"
+
+
+A simple wrapper for git\-update\-index to add files to the index, for people used to do "cvs add"\&.
+
+.SH "OPTIONS"
+
+.TP
+<file>...
+Files to add to the index\&.
+
+.TP
+\-n
+Don't actually add the file(s), just show if they exist\&.
+
+.TP
+\-v
+Be verbose\&.
+
+.SH "DISCUSSION"
+
+
+The list of <file> given to the command is fed to git\-ls\-files command to list files that are not registerd in the index and are not ignored/excluded by $GIT_DIR/info/exclude file or \&.gitignore file in each directory\&. This means two things:
+
+.TP 3
+1.
+You can put the name of a directory on the command line, and the command will add all files in it and its subdirectories;
+.TP
+2.
+Giving the name of a file that is already in index does not run git\-update\-index on that path\&.
+.LP
+
+.SH "EXAMPLES"
+
+.TP
+git\-add Documentation/\\*\&.txt
+Adds all *\&.txt files that are not in the index under Documentation directory and its subdirectories\&.
+
+Note that the asterisk * is quoted from the shell in this example; this lets the command to include the files from subdirectories of Documentation/ directory\&.
+
+.TP
+git\-add git\-*\&.sh
+Adds all git\-*\&.sh scripts that are not in the index\&. Because this example lets shell expand the asterisk (i\&.e\&. you are listing the files explicitly), it does not add subdir/git\-foo\&.sh to the index\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-am.1 b/man1/git-am.1
new file mode 100755 (executable)
index 0000000..4193b3a
--- /dev/null
@@ -0,0 +1,102 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-AM" 1 "" "" ""
+.SH NAME
+git-am \- Apply a series of patches in a mailbox
+.SH "SYNOPSIS"
+
+
+git\-am [\-\-signoff] [\-\-dotest=<dir>] [\-\-utf8] [\-\-binary] [\-\-3way] <mbox>... git\-am [\-\-skip | \-\-resolved]
+
+.SH "DESCRIPTION"
+
+
+Splits mail messages in a mailbox into commit log message, authorship information and patches, and applies them to the current branch\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-signoff
+Add Signed\-off\-by: line to the commit message, using the committer identity of yourself\&.
+
+.TP
+\-\-dotest=<dir>
+Instead of \&.dotest directory, use <dir> as a working area to store extracted patches\&.
+
+.TP
+\-\-utf8, \-\-keep
+Pass \-u and \-k flags to git\-mailinfo (see \fBgit\-mailinfo\fR(1))\&.
+
+.TP
+\-\-binary
+Pass \-\-allow\-binary\-replacement flag to git\-apply (see \fBgit\-apply\fR(1))\&.
+
+.TP
+\-\-3way
+When the patch does not apply cleanly, fall back on 3\-way merge, if the patch records the identity of blobs it is supposed to apply to, and we have those blobs locally\&.
+
+.TP
+\-\-skip
+Skip the current patch\&. This is only meaningful when restarting an aborted patch\&.
+
+.TP
+\-\-interactive
+Run interactively, just like git\-applymbox\&.
+
+.TP
+\-\-resolved
+After a patch failure (e\&.g\&. attempting to apply conflicting patch), the user has applied it by hand and the index file stores the result of the application\&. Make a commit using the authorship and commit log extracted from the e\-mail message and the current index file, and continue\&.
+
+.SH "DISCUSSION"
+
+
+When initially invoking it, you give it names of the mailboxes to crunch\&. Upon seeing the first patch that does not apply, it aborts in the middle, just like git\-applymbox does\&. You can recover from this in one of two ways:
+
+.TP 3
+1.
+skip the current one by re\-running the command with \-\-skip option\&.
+.TP
+2.
+hand resolve the conflict in the working directory, and update the index file to bring it in a state that the patch should have produced\&. Then run the command with \-\-resolved option\&.
+.LP
+
+
+The command refuses to process new mailboxes while \&.dotest directory exists, so if you decide to start over from scratch, run rm \-f \&.dotest before running the command with mailbox names\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-applymbox\fR(1), \fBgit\-applypatch\fR(1)\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Petr Baudis, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-apply.1 b/man1/git-apply.1
new file mode 100755 (executable)
index 0000000..aca1a71
--- /dev/null
@@ -0,0 +1,93 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-APPLY" 1 "" "" ""
+.SH NAME
+git-apply \- Apply patch on a git index file and a work tree
+.SH "SYNOPSIS"
+
+
+git\-apply [\-\-stat] [\-\-numstat] [\-\-summary] [\-\-check] [\-\-index] [\-\-apply] [\-\-no\-add] [\-\-index\-info] [\-\-allow\-binary\-replacement] [\-z] [<patch>...]
+
+.SH "DESCRIPTION"
+
+
+Reads supplied diff output and applies it on a git index file and a work tree\&.
+
+.SH "OPTIONS"
+
+.TP
+<patch>...
+The files to read patch from\&. \- can be used to read from the standard input\&.
+
+.TP
+\-\-stat
+Instead of applying the patch, output diffstat for the input\&. Turns off "apply"\&.
+
+.TP
+\-\-numstat
+Similar to \-\-stat, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly\&. Turns off "apply"\&.
+
+.TP
+\-\-summary
+Instead of applying the patch, output a condensed summary of information obtained from git diff extended headers, such as creations, renames and mode changes\&. Turns off "apply"\&.
+
+.TP
+\-\-check
+Instead of applying the patch, see if the patch is applicable to the current work tree and/or the index file and detects errors\&. Turns off "apply"\&.
+
+.TP
+\-\-index
+When \-\-check is in effect, or when applying the patch (which is the default when none of the options that disables it is in effect), make sure the patch is applicable to what the current index file records\&. If the file to be patched in the work tree is not up\-to\-date, it is flagged as an error\&. This flag also causes the index file to be updated\&.
+
+.TP
+\-\-index\-info
+Newer git\-diff output has embedded index information for each blob to help identify the original version that the patch applies to\&. When this flag is given, and if the original version of the blob is available locally, outputs information about them to the standard output\&.
+
+.TP
+\-z
+When showing the index information, do not munge paths, but use NUL terminated machine readable format\&. Without this flag, the pathnames output will have TAB, LF, and backslash characters replaced with \\t, \\n, and \\\\, respectively\&.
+
+.TP
+\-\-apply
+If you use any of the options marked &#8220;Turns off "apply"&#8221; above, git\-apply reads and outputs the information you asked without actually applying the patch\&. Give this flag after those flags to also apply the patch\&.
+
+.TP
+\-\-no\-add
+When applying a patch, ignore additions made by the patch\&. This can be used to extract common part between two files by first running diff on them and applying the result with this option, which would apply the deletion part but not addition part\&.
+
+.TP
+\-\-allow\-binary\-replacement
+When applying a patch, which is a git\-enhanced patch that was prepared to record the pre\- and post\-image object name in full, and the path being patched exactly matches the object the patch applies to (i\&.e\&. "index" line's pre\-image object name is what is in the working tree), and the post\-image object is available in the object database, use the post\-image object as the patch result\&. This allows binary files to be patched in a very limited way\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-applymbox.1 b/man1/git-applymbox.1
new file mode 100755 (executable)
index 0000000..498f030
--- /dev/null
@@ -0,0 +1,82 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-APPLYMBOX" 1 "" "" ""
+.SH NAME
+git-applymbox \- Apply a series of patches in a mailbox
+.SH "SYNOPSIS"
+
+
+git\-applymbox [\-u] [\-k] [\-q] [\-m] ( \-c \&.dotest/<num> | <mbox> ) [ <signoff> ]
+
+.SH "DESCRIPTION"
+
+
+Splits mail messages in a mailbox into commit log message, authorship information and patches, and applies them to the current branch\&.
+
+.SH "OPTIONS"
+
+.TP
+\-q
+Apply patches interactively\&. The user will be given opportunity to edit the log message and the patch before attempting to apply it\&.
+
+.TP
+\-k
+Usually the program cleans up the Subject: header line to extract the title line for the commit log message, among which (1) remove Re: or re:, (2) leading whitespaces, (3) [ up to ], typically [PATCH], and then prepends "[PATCH] "\&. This flag forbids this munging, and is most useful when used to read back git format\-patch \-\-mbox output\&.
+
+.TP
+\-m
+Patches are applied with git\-apply command, and unless it cleanly applies without fuzz, the processing fails\&. With this flag, if a tree that the patch applies cleanly is found in a repository, the patch is applied to the tree and then a 3\-way merge between the resulting tree and the current tree\&.
+
+.TP
+\-u
+By default, the commit log message, author name and author email are taken from the e\-mail without any charset conversion, after minimally decoding MIME transfer encoding\&. This flag causes the resulting commit to be encoded in utf\-8 by transliterating them\&. Note that the patch is always used as is without charset conversion, even with this flag\&.
+
+.TP
+\-c \&.dotest/<num>
+When the patch contained in an e\-mail does not cleanly apply, the command exits with an error message\&. The patch and extracted message are found in \&.dotest/, and you could re\-run git applymbox with \-c \&.dotest/<num> flag to restart the process after inspecting and fixing them\&.
+
+.TP
+<mbox>
+The name of the file that contains the e\-mail messages with patches\&. This file should be in the UNIX mailbox format\&. See SubmittingPatches document to learn about the formatting convention for e\-mail submission\&.
+
+.TP
+<signoff>
+The name of the file that contains your "Signed\-off\-by" line\&. See SubmittingPatches document to learn what "Signed\-off\-by" line means\&. You can also just say yes, true, me, or please to use an automatically generated "Signed\-off\-by" line based on your committer identity\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-am\fR(1), \fBgit\-applypatch\fR(1)\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-applypatch.1 b/man1/git-applypatch.1
new file mode 100755 (executable)
index 0000000..8995010
--- /dev/null
@@ -0,0 +1,64 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-APPLYPATCH" 1 "" "" ""
+.SH NAME
+git-applypatch \- Apply one patch extracted from an e-mail.
+.SH "SYNOPSIS"
+
+
+git\-applypatch <msg> <patch> <info> [<signoff>]
+
+.SH "DESCRIPTION"
+
+
+Takes three files <msg>, <patch>, and <info> prepared from an e\-mail message by git\-mailinfo, and creates a commit\&. It is usually not necessary to use this command directly\&.
+
+
+This command can run applypatch\-msg, pre\-applypatch, and post\-applypatch hooks\&. See hooks: \fIhooks.html\fR for more information\&.
+
+.SH "OPTIONS"
+
+.TP
+<msg>
+Commit log message (sans the first line, which comes from e\-mail Subject stored in <info>)\&.
+
+.TP
+<patch>
+The patch to apply\&.
+
+.TP
+<info>
+Author and subject information extracted from e\-mail, used on "author" line and as the first line of the commit log message\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-archimport.1 b/man1/git-archimport.1
new file mode 100755 (executable)
index 0000000..601271e
--- /dev/null
@@ -0,0 +1,105 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-ARCHIMPORT" 1 "" "" ""
+.SH NAME
+git-archimport \- Import an Arch repository into git
+.SH "SYNOPSIS"
+
+
+git\-archimport [ \-h ] [ \-v ] [ \-o ] [ \-a ] [ \-f ] [ \-T ] [ \-D depth ] [ \-t tempdir ] <archive/branch> [ <archive/branch> ]
+
+.SH "DESCRIPTION"
+
+
+Imports a project from one or more Arch repositories\&. It will follow branches and repositories within the namespaces defined by the <archive/branch> parameters suppplied\&. If it cannot find the remote branch a merge comes from it will just import it as a regular commit\&. If it can find it, it will mark it as a merge whenever possible (see discussion below)\&.
+
+
+The script expects you to provide the key roots where it can start the import from an initial import or tag type of Arch commit\&. It will follow and import new branches within the provided roots\&.
+
+
+It expects to be dealing with one project only\&. If it sees branches that have different roots, it will refuse to run\&. In that case, edit your <archive/branch> parameters to define clearly the scope of the import\&.
+
+
+git\-archimport uses tla extensively in the background to access the Arch repository\&. Make sure you have a recent version of tla available in the path\&. tla must know about the repositories you pass to git\-archimport\&.
+
+
+For the initial import git\-archimport expects to find itself in an empty directory\&. To follow the development of a project that uses Arch, rerun git\-archimport with the same parameters as the initial import to perform incremental imports\&.
+
+.SH "MERGES"
+
+
+Patch merge data from Arch is used to mark merges in git as well\&. git does not care much about tracking patches, and only considers a merge when a branch incorporates all the commits since the point they forked\&. The end result is that git will have a good idea of how far branches have diverged\&. So the import process does lose some patch\-trading metadata\&.
+
+
+Fortunately, when you try and merge branches imported from Arch, git will find a good merge base, and it has a good chance of identifying patches that have been traded out\-of\-sequence between the branches\&.
+
+.SH "OPTIONS"
+
+.TP
+\-h
+Display usage\&.
+
+.TP
+\-v
+Verbose output\&.
+
+.TP
+\-T
+Many tags\&. Will create a tag for every commit, reflecting the commit name in the Arch repository\&.
+
+.TP
+\-f
+Use the fast patchset import strategy\&. This can be significantly faster for large trees, but cannot handle directory renames or permissions changes\&. The default strategy is slow and safe\&.
+
+.TP
+\-o
+Use this for compatibility with old\-style branch names used by earlier versions of git\-archimport\&. Old\-style branch names were category\-\-branch, whereas new\-style branch names are archive,category\-\-branch\-\-version\&.
+
+.TP
+\-D <depth>
+Follow merge ancestry and attempt to import trees that have been merged from\&. Specify a depth greater than 1 if patch logs have been pruned\&.
+
+.TP
+\-a
+Attempt to auto\-register archives at http://mirrors\&.sourcecontrol\&.net This is particularly useful with the \-D option\&.
+
+.TP
+\-t <tmpdir>
+Override the default tempdir\&.
+
+.TP
+<archive/branch>
+Archive/branch identifier in a format that tla log understands\&.
+
+.SH "AUTHOR"
+
+
+Written by Martin Langhoff <martin@catalyst\&.net\&.nz>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano, Martin Langhoff and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-bisect.1 b/man1/git-bisect.1
new file mode 100755 (executable)
index 0000000..d42f7e9
--- /dev/null
@@ -0,0 +1,130 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-BISECT" 1 "" "" ""
+.SH NAME
+git-bisect \- Find the change that introduced a bug
+.SH "SYNOPSIS"
+
+
+git bisect <subcommand> <options>
+
+.SH "DESCRIPTION"
+
+
+The command takes various subcommands, and different options depending on the subcommand:
+
+.nf
+git bisect start [<paths>\&.\&.\&.]
+git bisect bad <rev>
+git bisect good <rev>
+git bisect reset [<branch>]
+git bisect visualize
+git bisect replay <logfile>
+git bisect log
+.fi
+
+
+This command uses git\-rev\-list \-\-bisect option to help drive the binary search process to find which change introduced a bug, given an old "good" commit object name and a later "bad" commit object name\&.
+
+
+The way you use it is:
+
+.IP
+$ git bisect start
+$ git bisect bad                        # Current version is bad
+$ git bisect good v2\&.6\&.13\-rc2           # v2\&.6\&.13\-rc2 was the last version
+                                        # tested that was good
+
+When you give at least one bad and one good versions, it will bisect the revision tree and say something like:
+
+.IP
+Bisecting: 675 revisions left to test after this
+
+and check out the state in the middle\&. Now, compile that kernel, and boot it\&. Now, let's say that this booted kernel works fine, then just do
+
+.IP
+$ git bisect good                       # this one is good
+
+which will now say
+
+.IP
+Bisecting: 337 revisions left to test after this
+
+and you continue along, compiling that one, testing it, and depending on whether it is good or bad, you say "git bisect good" or "git bisect bad", and ask for the next bisection\&.
+
+
+Until you have no more left, and you'll have been left with the first bad kernel rev in "refs/bisect/bad"\&.
+
+
+Oh, and then after you want to reset to the original head, do a
+
+.IP
+$ git bisect reset
+
+to get back to the master branch, instead of being in one of the bisection branches ("git bisect start" will do that for you too, actually: it will reset the bisection state, and before it does that it checks that you're not using some old bisection branch)\&.
+
+
+During the bisection process, you can say
+
+.IP
+$ git bisect visualize
+
+to see the currently remaining suspects in gitk\&.
+
+
+The good/bad input is logged, and git bisect log shows what you have done so far\&. You can truncate its output somewhere and save it in a file, and run
+
+.IP
+$ git bisect replay that\-file
+
+if you find later you made a mistake telling good/bad about a revision\&.
+
+
+If in a middle of bisect session, you know what the bisect suggested to try next is not a good one to test (e\&.g\&. the change the commit introduces is known not to work in your environment and you know it does not have anything to do with the bug you are chasing), you may want to find a near\-by commit and try that instead\&. It goes something like this:
+
+.IP
+$ git bisect good/bad                   # previous round was good/bad\&.
+Bisecting: 337 revisions left to test after this
+$ git bisect visualize                  # oops, that is uninteresting\&.
+$ git reset \-\-hard HEAD~3               # try 3 revs before what
+                                        # was suggested
+
+Then compile and test the one you chose to try\&. After that, tell bisect what the result was as usual\&.
+
+
+You can further cut down the number of trials if you know what part of the tree is involved in the problem you are tracking down, by giving paths parameters when you say bisect start, like this:
+
+.IP
+$ git bisect start arch/i386 include/asm\-i386
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-branch.1 b/man1/git-branch.1
new file mode 100755 (executable)
index 0000000..071f656
--- /dev/null
@@ -0,0 +1,90 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-BRANCH" 1 "" "" ""
+.SH NAME
+git-branch \- Create a new branch, or remove an old one.
+.SH "SYNOPSIS"
+
+
+git\-branch [\-d | \-D] [<branchname> [start\-point]]
+
+.SH "DESCRIPTION"
+
+
+If no argument is provided, show available branches and mark current branch with star\&. Otherwise, create a new branch of name <branchname>\&.
+
+
+If a starting point is also specified, that will be where the branch is created, otherwise it will be created at the current HEAD\&.
+
+.SH "OPTIONS"
+
+.TP
+\-d
+Delete a branch\&. The branch must be fully merged\&.
+
+.TP
+\-D
+Delete a branch irrespective of its index status\&.
+
+.TP
+<branchname>
+The name of the branch to create or delete\&.
+
+.TP
+start\-point
+Where to create the branch; defaults to HEAD\&. This option has no meaning with \-d and \-D\&.
+
+.SS "Examples"
+
+.TP
+Start development off of a know tag
+
+.IP
+$ git clone git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.6 my2\&.6
+$ cd my2\&.6
+$ git branch my2\&.6\&.14 v2\&.6\&.14 
+$ git checkout my2\&.6\&.14
+
+ These two steps are the same as "checkout \-b my2\&.6\&.14 v2\&.6\&.14"\&.
+.TP
+Delete unneeded branch
+
+.IP
+$ git clone git://git\&.kernel\&.org/\&.\&.\&./git\&.git my\&.git
+$ cd my\&.git
+$ git branch \-D todo 
+
+ delete todo branch even if the "master" branch does not have all
+commits from todo branch\&.
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-cat-file.1 b/man1/git-cat-file.1
new file mode 100755 (executable)
index 0000000..a7fb17a
--- /dev/null
@@ -0,0 +1,83 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CAT-FILE" 1 "" "" ""
+.SH NAME
+git-cat-file \- Provide content or type information for repository objects
+.SH "SYNOPSIS"
+
+
+git\-cat\-file (\-t | \-s | \-e | <type>) <object>
+
+.SH "DESCRIPTION"
+
+
+Provides content or type of objects in the repository\&. The type is required unless \-t is used to find the object type, or \-s is used to find the object size\&.
+
+.SH "OPTIONS"
+
+.TP
+<object>
+The sha1 identifier of the object\&.
+
+.TP
+\-t
+Instead of the content, show the object type identified by <object>\&.
+
+.TP
+\-s
+Instead of the content, show the object size identified by <object>\&.
+
+.TP
+\-e
+Suppress all output; instead exit with zero status if <object> exists and is a valid object\&.
+
+.TP
+<type>
+Typically this matches the real type of <object> but asking for a type that can trivially be dereferenced from the given <object> is also permitted\&. An example is to ask for a "tree" with <object> being a commit object that contains it, or to ask for a "blob" with <object> being a tag object that points at it\&.
+
+.SH "OUTPUT"
+
+
+If \-t is specified, one of the <type>\&.
+
+
+If \-s is specified, the size of the <object> in bytes\&.
+
+
+If \-e is specified, no output\&.
+
+
+Otherwise the raw (though uncompressed) contents of the <object> will be returned\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-check-ref-format.1 b/man1/git-check-ref-format.1
new file mode 100755 (executable)
index 0000000..3b7ee77
--- /dev/null
@@ -0,0 +1,68 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CHECK-REF-FORM" 1 "" "" ""
+.SH NAME
+git-check-ref-format \- Make sure ref name is well formed.
+.SH "SYNOPSIS"
+
+
+git\-check\-ref\-format <refname>
+
+.SH "DESCRIPTION"
+
+
+Checks if a given refname is acceptable, and exits non\-zero if it is not\&.
+
+
+A reference is used in git to specify branches and tags\&. A branch head is stored under $GIT_DIR/refs/heads directory, and a tag is stored under $GIT_DIR/refs/tags directory\&. git imposes the following rules on how refs are named:
+
+.TP 3
+1.
+It could be named hierarchically (i\&.e\&. separated with slash /), but each of its component cannot begin with a dot \&.;
+.TP
+2.
+It cannot have two consecutive dots \&.\&. anywhere;
+.TP
+3.
+It cannot have ASCII control character (i\&.e\&. bytes whose values are lower than \\040, or \\177 DEL), space, tilde ~, caret ^, colon :, question\-mark ?, asterisk *, or open bracket [ anywhere;
+.TP
+4.
+It cannot end with a slash /\&.
+.LP
+
+
+These rules makes it easy for shell script based tools to parse refnames, pathname expansion by the shell when a refname is used unquoted (by mistake), and also avoids ambiguities in certain refname expressions (see \fBgit\-rev\-parse\fR(1))\&. Namely:
+
+.TP 3
+1.
+double\-dot \&.\&. are often used as in ref1\&.\&.ref2, and in some context this notation means ^ref1 ref2 (i\&.e\&. not in ref1 and in ref2)\&.
+.TP
+2.
+tilde ~ and caret ^ are used to introduce postfix nth parent and peel onion operation\&.
+.TP
+3.
+colon : is used as in srcref:dstref to mean "use srcref's value and store it in dstref" in fetch and push operations\&.
+.LP
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-checkout-index.1 b/man1/git-checkout-index.1
new file mode 100755 (executable)
index 0000000..fe5e3ad
--- /dev/null
@@ -0,0 +1,121 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CHECKOUT-INDEX" 1 "" "" ""
+.SH NAME
+git-checkout-index \- Copy files from the index to the working directory
+.SH "SYNOPSIS"
+
+
+git\-checkout\-index [\-u] [\-q] [\-a] [\-f] [\-n] [\-\-prefix=<string>] [\-\-stage=<number>] [\-\-] <file>...
+
+.SH "DESCRIPTION"
+
+
+Will copy all files listed from the index to the working directory (not overwriting existing files)\&.
+
+.SH "OPTIONS"
+
+.TP
+\-u|\-\-index
+update stat information for the checked out entries in the index file\&.
+
+.TP
+\-q|\-\-quiet
+be quiet if files exist or are not in the index
+
+.TP
+\-f|\-\-force
+forces overwrite of existing files
+
+.TP
+\-a|\-\-all
+checks out all files in the index\&. Cannot be used together with explicit filenames\&.
+
+.TP
+\-n|\-\-no\-create
+Don't checkout new files, only refresh files already checked out\&.
+
+.TP
+\-\-prefix=<string>
+When creating files, prepend <string> (usually a directory including a trailing /)
+
+.TP
+\-\-stage=<number>
+Instead of checking out unmerged entries, copy out the files from named stage\&. <number> must be between 1 and 3\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+
+The order of the flags used to matter, but not anymore\&.
+
+
+Just doing git\-checkout\-index does nothing\&. You probably meant git\-checkout\-index \-a\&. And if you want to force it, you want git\-checkout\-index \-f \-a\&.
+
+
+Intuitiveness is not the goal here\&. Repeatability is\&. The reason for the "no arguments means no work" behavior is that from scripts you are supposed to be able to do:
+
+.IP
+$ find \&. \-name '*\&.h' \-print0 | xargs \-0 git\-checkout\-index \-f \-\-
+
+which will force all existing *\&.h files to be replaced with their cached copies\&. If an empty command line implied "all", then this would force\-refresh everything in the index, which was not the point\&.
+
+
+The \-\- is just a good idea when you know the rest will be filenames; it will prevent problems with a filename of, for example, \-a\&. Using \-\- is probably a good policy in scripts\&.
+
+.SH "EXAMPLES"
+
+.TP
+To update and refresh only the files already checked out
+
+.IP
+$ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
+.TP
+Using git\-checkout\-index to "export an entire tree"
+The prefix ability basically makes it trivial to use git\-checkout\-index as an "export as tree" function\&. Just read the desired tree into the index, and do:
+
+
+.IP
+$ git\-checkout\-index \-\-prefix=git\-export\-dir/ \-agit\-checkout\-index will "export" the index into the specified directory\&.
+
+The final "/" is important\&. The exported name is literally just prefixed with the specified string\&. Contrast this with the following example\&.
+
+.TP
+Export files with a prefix
+
+.IP
+$ git\-checkout\-index \-\-prefix=\&.merged\- MakefileThis will check out the currently cached copy of Makefile into the file \&.merged\-Makefile\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-checkout.1 b/man1/git-checkout.1
new file mode 100755 (executable)
index 0000000..aa35895
--- /dev/null
@@ -0,0 +1,87 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CHECKOUT" 1 "" "" ""
+.SH NAME
+git-checkout \- Checkout and switch to a branch.
+.SH "SYNOPSIS"
+
+
+git\-checkout [\-f] [\-b <new_branch>] [<branch>] [<paths>...]
+
+.SH "DESCRIPTION"
+
+
+When <paths> are not given, this command switches branches, by updating the index and working tree to reflect the specified branch, <branch>, and updating HEAD to be <branch> or, if specified, <new_branch>\&.
+
+
+When <paths> are given, this command does not switch branches\&. It updates the named paths in the working tree from the index file (i\&.e\&. it runs git\-checkout\-index \-f \-u)\&. In this case, \-f and \-b options are meaningless and giving either of them results in an error\&. <branch> argument can be used to specify a specific tree\-ish to update the index for the given paths before updating the working tree\&.
+
+.SH "OPTIONS"
+
+.TP
+\-f
+Force an re\-read of everything\&.
+
+.TP
+\-b
+Create a new branch and start it at <branch>\&.
+
+.TP
+<new_branch>
+Name for the new branch\&.
+
+.TP
+<branch>
+Branch to checkout; may be any object ID that resolves to a commit\&. Defaults to HEAD\&.
+
+.SH "EXAMPLE"
+
+
+The following sequence checks out the master branch, reverts the Makefile to two revisions back, deletes hello\&.c by mistake, and gets it back from the index\&.
+
+.IP
+$ git checkout master 
+$ git checkout master~2 Makefile 
+$ rm \-f hello\&.c
+$ git checkout hello\&.c 
+
+ switch branch
+ take out a file out of other commit
+ or "git checkout \-\- hello\&.c", as in the next example\&.
+
+If you have an unfortunate branch that is named hello\&.c, the last step above would be confused as an instruction to switch to that branch\&. You should instead write:
+
+.IP
+$ git checkout \-\- hello\&.c
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-cherry-pick.1 b/man1/git-cherry-pick.1
new file mode 100755 (executable)
index 0000000..11b20ba
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CHERRY-PICK" 1 "" "" ""
+.SH NAME
+git-cherry-pick \- Apply the change introduced by an existing commit.
+.SH "SYNOPSIS"
+
+
+git\-cherry\-pick [\-\-edit] [\-n] [\-r] <commit>
+
+.SH "DESCRIPTION"
+
+
+Given one existing commit, apply the change the patch introduces, and record a new commit that records it\&. This requires your working tree to be clean (no modifications from the HEAD commit)\&.
+
+.SH "OPTIONS"
+
+.TP
+<commit>
+Commit to cherry\-pick\&.
+
+.TP
+\-e|\-\-edit
+With this option, git\-cherry\-pick will let you edit the commit message prior committing\&.
+
+.TP
+\-r|\-\-replay
+Usually the command appends which commit was cherry\-picked after the original commit message when making a commit\&. This option, \-\-replay, causes it to use the original commit message intact\&. This is useful when you are reordering the patches in your private tree before publishing\&.
+
+.TP
+\-n|\-\-no\-commit
+Usually the command automatically creates a commit with a commit log message stating which commit was cherry\-picked\&. This flag applies the change necessary to cherry\-pick the named commit to your working tree, but does not make the commit\&. In addition, when this option is used, your working tree does not have to match the HEAD commit\&. The cherry\-pick is done against the beginning state of your working tree\&.
+
+This is useful when cherry\-picking more than one commits' effect to your working tree in a row\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-cherry.1 b/man1/git-cherry.1
new file mode 100755 (executable)
index 0000000..aa706f4
--- /dev/null
@@ -0,0 +1,61 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CHERRY" 1 "" "" ""
+.SH NAME
+git-cherry \- Find commits not merged upstream.
+.SH "SYNOPSIS"
+
+
+git\-cherry [\-v] <upstream> [<head>]
+
+.SH "DESCRIPTION"
+
+
+Each commit between the fork\-point and <head> is examined, and compared against the change each commit between the fork\-point and <upstream> introduces\&. Commits already included in upstream are prefixed with \- (meaning "drop from my local pull"), while commits missing from upstream are prefixed with + (meaning "add to the updated upstream")\&.
+
+.SH "OPTIONS"
+
+.TP
+\-v
+Verbose\&.
+
+.TP
+<upstream>
+Upstream branch to compare against\&.
+
+.TP
+<head>
+Working branch; defaults to HEAD\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-clone-pack.1 b/man1/git-clone-pack.1
new file mode 100755 (executable)
index 0000000..b284fb0
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CLONE-PACK" 1 "" "" ""
+.SH NAME
+git-clone-pack \- Clones a repository by receiving packed objects.
+.SH "SYNOPSIS"
+
+
+git\-clone\-pack [\-\-exec=<git\-upload\-pack>] [<host>:]<directory> [<head>...]
+
+.SH "DESCRIPTION"
+
+
+Clones a repository into the current repository by invoking git\-upload\-pack, possibly on the remote host via ssh, in the named repository, and stores the sent pack in the local repository\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-exec=<git\-upload\-pack>
+Use this to specify the path to git\-upload\-pack on the remote side, if it is not found on your $PATH\&. Installations of sshd ignore the user's environment setup scripts for login shells (e\&.g\&. \&.bash_profile) and your privately installed git may not be found on the system default $PATH\&. Another workaround suggested is to set up your $PATH in "\&.bashrc", but this flag is for people who do not want to pay the overhead for non\-interactive shells by having a lean \&.bashrc file (they set most of the things up in \&.bash_profile)\&.
+
+.TP
+<host>
+A remote host that houses the repository\&. When this part is specified, git\-upload\-pack is invoked via ssh\&.
+
+.TP
+<directory>
+The repository to sync from\&.
+
+.TP
+<head>...
+The heads to update\&. This is relative to $GIT_DIR (e\&.g\&. "HEAD", "refs/heads/master")\&. When unspecified, all heads are updated to match the remote repository\&.
+
+Usually all the refs from existing repository are stored under the same name in the new repository\&. Giving explicit <head> arguments instead writes the object names and refs to the standard output, just like get\-fetch\-pack does\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-clone.1 b/man1/git-clone.1
new file mode 100755 (executable)
index 0000000..4966bab
--- /dev/null
@@ -0,0 +1,107 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CLONE" 1 "" "" ""
+.SH NAME
+git-clone \- Clones a repository.
+.SH "SYNOPSIS"
+
+
+git\-clone [\-l [\-s]] [\-q] [\-n] [\-o <name>] [\-u <upload\-pack>] <repository> [<directory>]
+
+.SH "DESCRIPTION"
+
+
+Clones a repository into a newly created directory\&. All remote branch heads are copied under $GIT_DIR/refs/heads/, except that the remote master is also copied to origin branch\&.
+
+
+In addition, $GIT_DIR/remotes/origin file is set up to have this line:
+
+.nf
+Pull: master:origin
+.fi
+
+
+This is to help the typical workflow of working off of the remote master branch\&. Every time git pull without argument is run, the progress on the remote master branch is tracked by copying it into the local origin branch, and merged into the branch you are currently working on\&. Remote branches other than master are also added there to be tracked\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-local, \-l, 
+When the repository to clone from is on a local machine, this flag bypasses normal "git aware" transport mechanism and clones the repository by making a copy of HEAD and everything under objects and refs directories\&. The files under \&.git/objects/ directory are hardlinked to save space when possible\&.
+
+.TP
+\-\-shared, \-s, 
+When the repository to clone is on the local machine, instead of using hard links, automatically setup \&.git/objects/info/alternatives to share the objects with the source repository\&. The resulting repository starts out without any object of its own\&.
+
+.TP
+\-\-quiet, \-q, 
+Operate quietly\&. This flag is passed to "rsync" and "git\-clone\-pack" commands when given\&.
+
+.TP
+\-n
+No checkout of HEAD is performed after the clone is complete\&.
+
+.TP
+\-o <name>
+Instead of using the branch name origin to keep track of the upstream repository, use <name> instead\&. Note that the shorthand name stored in remotes/origin is not affected, but the local branch name to pull the remote master branch into is\&.
+
+.TP
+\-\-upload\-pack <upload\-pack>, \-u <upload\-pack>, 
+When given, and the repository to clone from is handled by git\-clone\-pack, \-\-exec=<upload\-pack> is passed to the command to specify non\-default path for the command run on the other end\&.
+
+.TP
+<repository>
+The (possibly remote) repository to clone from\&. It can be any URL git\-fetch supports\&.
+
+.TP
+<directory>
+The name of a new directory to clone into\&. The "humanish" part of the source repository is used if no directory is explicitly given ("repo" for "/path/to/repo\&.git" and "foo" for "host\&.xz:foo/\&.git")\&. Cloning into an existing directory is not allowed\&.
+
+.SS "Examples"
+
+.TP
+Clone from upstream
+
+.IP
+$ git clone git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.6 my2\&.6
+$ cd my2\&.6
+$ make
+.TP
+Make a local clone that borrows from the current directory, without checking things out
+
+.IP
+$ git clone \-l \-s \-n \&. \&.\&./copy
+$ cd copy
+$ git show\-branch
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-commit-tree.1 b/man1/git-commit-tree.1
new file mode 100755 (executable)
index 0000000..d62dd01
--- /dev/null
@@ -0,0 +1,127 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-COMMIT-TREE" 1 "" "" ""
+.SH NAME
+git-commit-tree \- Creates a new commit object
+.SH "SYNOPSIS"
+
+
+git\-commit\-tree <tree> [\-p <parent commit>]* < changelog
+
+.SH "DESCRIPTION"
+
+
+Creates a new commit object based on the provided tree object and emits the new commit object id on stdout\&. If no parent is given then it is considered to be an initial tree\&.
+
+
+A commit object usually has 1 parent (a commit after a change) or up to 16 parents\&. More than one parent represents a merge of branches that led to them\&.
+
+
+While a tree represents a particular directory state of a working directory, a commit represents that state in "time", and explains how to get there\&.
+
+
+Normally a commit would identify a new "HEAD" state, and while git doesn't care where you save the note about that state, in practice we tend to just write the result to the file that is pointed at by \&.git/HEAD, so that we can always see what the last committed state was\&.
+
+.SH "OPTIONS"
+
+.TP
+<tree>
+An existing tree object
+
+.TP
+\-p <parent commit>
+Each \-p indicates the id of a parent commit object\&.
+
+.SH "COMMIT INFORMATION"
+
+
+A commit encapsulates:
+
+.TP 3
+\(bu
+all parent object ids
+.TP
+\(bu
+author name, email and date
+.TP
+\(bu
+committer name and email and the commit time\&.
+.LP
+
+
+If not provided, "git\-commit\-tree" uses your name, hostname and domain to provide author and committer info\&. This can be overridden by either \&.git/config file, or using the following environment variables\&.
+
+.nf
+GIT_AUTHOR_NAME
+GIT_AUTHOR_EMAIL
+GIT_AUTHOR_DATE
+GIT_COMMITTER_NAME
+GIT_COMMITTER_EMAIL
+.fi
+
+
+(nb "<", ">" and "\\n"s are stripped)
+
+
+In \&.git/config file, the following items are used:
+
+.nf
+[user]
+        name = "Your Name"
+        email = "your@email\&.address\&.xz"
+.fi
+
+
+A commit comment is read from stdin (max 999 chars)\&. If a changelog entry is not provided via "<" redirection, "git\-commit\-tree" will just wait for one to be entered and terminated with ^D\&.
+
+.SH "DIAGNOSTICS"
+
+.TP
+You don't exist\&. Go away!
+The passwd(5) gecos field couldn't be read
+
+.TP
+Your parents must have hated you!
+The password(5) gecos field is longer than a giant static buffer\&.
+
+.TP
+Your sysadmin must hate you!
+The password(5) name field is longer than a giant static buffer\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-write\-tree\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-commit.1 b/man1/git-commit.1
new file mode 100755 (executable)
index 0000000..9a7ce8b
--- /dev/null
@@ -0,0 +1,90 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-COMMIT" 1 "" "" ""
+.SH NAME
+git-commit \- Record your changes
+.SH "SYNOPSIS"
+
+
+git\-commit [\-a] [\-s] [\-v] [(\-c | \-C) <commit> | \-F <file> | \-m <msg>] [\-e] [\-\-] <file>...
+
+.SH "DESCRIPTION"
+
+
+Updates the index file for given paths, or all modified files if \-a is specified, and makes a commit object\&. The command VISUAL and EDITOR environment variables to edit the commit log message\&.
+
+
+This command can run commit\-msg, pre\-commit, and post\-commit hooks\&. See hooks: \fIhooks.html\fR for more information\&.
+
+.SH "OPTIONS"
+
+.TP
+\-a|\-\-all
+Update all paths in the index file\&.
+
+.TP
+\-c or \-C <commit>
+Take existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit\&. With \-C, the editor is not invoked; with \-c the user can further edit the commit message\&.
+
+.TP
+\-F <file>
+Take the commit message from the given file\&. Use \- to read the message from the standard input\&.
+
+.TP
+\-m <msg>
+Use the given <msg> as the commit message\&.
+
+.TP
+\-s|\-\-signoff
+Add Signed\-off\-by line at the end of the commit message\&.
+
+.TP
+\-v|\-\-verify
+Look for suspicious lines the commit introduces, and abort committing if there is one\&. The definition of suspicious lines is currently the lines that has trailing whitespaces, and the lines whose indentation has a SP character immediately followed by a TAB character\&. This is the default\&.
+
+.TP
+\-n|\-\-no\-verify
+The opposite of \-\-verify\&.
+
+.TP
+\-e|\-\-edit
+The message taken from file with \-F, command line with \-m, and from file with \-C are usually used as the commit log message unmodified\&. This option lets you further edit the message taken from these sources\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.TP
+<file>...
+Update specified paths in the index file before committing\&.
+
+
+If you make a commit and then found a mistake immediately after that, you can recover from it with \fBgit\-reset\fR(1)\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-convert-objects.1 b/man1/git-convert-objects.1
new file mode 100755 (executable)
index 0000000..6cc4fbe
--- /dev/null
@@ -0,0 +1,47 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CONVERT-OBJECTS" 1 "" "" ""
+.SH NAME
+git-convert-objects \- Converts old-style git repository
+.SH "SYNOPSIS"
+
+
+git\-convert\-objects
+
+.SH "DESCRIPTION"
+
+
+Converts old\-style git repository to the latest format
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-count-objects.1 b/man1/git-count-objects.1
new file mode 100755 (executable)
index 0000000..dfc0da4
--- /dev/null
@@ -0,0 +1,47 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-COUNT-OBJECTS" 1 "" "" ""
+.SH NAME
+git-count-objects \- Reports on unpacked objects.
+.SH "SYNOPSIS"
+
+
+git\-count\-objects
+
+.SH "DESCRIPTION"
+
+
+This counts the number of unpacked object files and disk space consumed by them, to help you decide when it is a good time to repack\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-cvsexportcommit.1 b/man1/git-cvsexportcommit.1
new file mode 100755 (executable)
index 0000000..3ebbce8
--- /dev/null
@@ -0,0 +1,73 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CVSEXPORTCOMMIT" 1 "" "" ""
+.SH NAME
+git-cvsexportcommit \- Export a commit to a CVS checkout
+.SH "SYNOPSIS"
+
+
+git\-cvsexportcommmit\&.perl [ \-h ] [ \-v ] [ \-c ] [ \-p ] [PARENTCOMMIT] COMMITID
+
+.SH "DESCRIPTION"
+
+
+Exports a commit from GIT to a CVS checkout, making it easier to merge patches from a git repository into a CVS repository\&.
+
+
+Execute it from the root of the CVS working copy\&. GIT_DIR must be defined\&.
+
+
+It does its best to do the safe thing, it will check that the files are unchanged and up to date in the CVS checkout, and it will not autocommit by default\&.
+
+
+Supports file additions, removals, and commits that affect binary files\&.
+
+
+If the commit is a merge commit, you must tell git\-cvsapplycommit what parent should the changeset be done against\&.
+
+.SH "OPTIONS"
+
+.TP
+\-c
+Commit automatically if the patch applied cleanly\&. It will not commit if any hunks fail to apply or there were other problems\&.
+
+.TP
+\-p
+Be pedantic (paranoid) when applying patches\&. Invokes patch with \-\-fuzz=0
+
+.TP
+\-v
+Verbose\&.
+
+.SH "AUTHOR"
+
+
+Written by Martin Langhoff <martin@catalyst\&.net\&.nz>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Martin Langhoff <martin@catalyst\&.net\&.nz>
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-cvsimport.1 b/man1/git-cvsimport.1
new file mode 100755 (executable)
index 0000000..f23e33a
--- /dev/null
@@ -0,0 +1,124 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-CVSIMPORT" 1 "" "" ""
+.SH NAME
+git-cvsimport \- Import a CVS repository into git
+.SH "SYNOPSIS"
+
+
+git\-cvsimport [ \-o <branch\-for\-HEAD> ] [ \-h ] [ \-v ] [ \-d <CVSROOT> ] [ \-p <options\-for\-cvsps> ] [ \-C <git_repository> ] [ \-i ] [ \-P <file> ] [ \-k ] [ \-s <subst> ] [ \-m ] [ \-M regex ] [ <CVS_module> ]
+
+.SH "DESCRIPTION"
+
+
+Imports a CVS repository into git\&. It will either create a new repository, or incrementally import into an existing one\&.
+
+
+Splitting the CVS log into patch sets is done by cvsps\&. At least version 2\&.1 is required\&.
+
+.SH "OPTIONS"
+
+.TP
+\-d <CVSROOT>
+The root of the CVS archive\&. May be local (a simple path) or remote; currently, only the :local:, :ext: and :pserver: access methods are supported\&.
+
+.TP
+\-C <target\-dir>
+The git repository to import to\&. If the directory doesn't exist, it will be created\&. Default is the current directory\&.
+
+.TP
+\-i
+Import\-only: don't perform a checkout after importing\&. This option ensures the working directory and index remain untouched and will not create them if they do not exist\&.
+
+.TP
+\-k
+Kill keywords: will extract files with \-kk from the CVS archive to avoid noisy changesets\&. Highly recommended, but off by default to preserve compatibility with early imported trees\&.
+
+.TP
+\-u
+Convert underscores in tag and branch names to dots\&.
+
+.TP
+\-o <branch\-for\-HEAD>
+The HEAD branch from CVS is imported to the origin branch within the git repository, as HEAD already has a special meaning for git\&. Use this option if you want to import into a different branch\&.
+
+Use \-o master for continuing an import that was initially done by the old cvs2git tool\&.
+
+.TP
+\-p <options\-for\-cvsps>
+Additional options for cvsps\&. The options \-u and \-A are implicit and should not be used here\&.
+
+If you need to pass multiple options, separate them with a comma\&.
+
+.TP
+\-P <cvsps\-output\-file>
+Instead of calling cvsps, read the provided cvsps output file\&. Useful for debugging or when cvsps is being handled outside cvsimport\&.
+
+.TP
+\-m
+Attempt to detect merges based on the commit message\&. This option will enable default regexes that try to capture the name source branch name from the commit message\&.
+
+.TP
+\-M <regex>
+Attempt to detect merges based on the commit message with a custom regex\&. It can be used with \-m to also see the default regexes\&. You must escape forward slashes\&.
+
+.TP
+\-v
+Verbosity: let cvsimport report what it is doing\&.
+
+.TP
+<CVS_module>
+The CVS module you want to import\&. Relative to <CVSROOT>\&.
+
+.TP
+\-h
+Print a short usage message and exit\&.
+
+.TP
+\-z <fuzz>
+Pass the timestamp fuzz factor to cvsps\&.
+
+.TP
+\-s <subst>
+Substitute the character "/" in branch names with <subst>
+
+.SH "OUTPUT"
+
+
+If \-v is specified, the script reports what it is doing\&.
+
+
+Otherwise, success is indicated the Unix way, i\&.e\&. by simply exiting with a zero exit status\&.
+
+.SH "AUTHOR"
+
+
+Written by Matthias Urlichs <smurf@smurf\&.noris\&.de>, with help from various participants of the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Matthias Urlichs <smurf@smurf\&.noris\&.de>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-daemon.1 b/man1/git-daemon.1
new file mode 100755 (executable)
index 0000000..29cb1ab
--- /dev/null
@@ -0,0 +1,94 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DAEMON" 1 "" "" ""
+.SH NAME
+git-daemon \- A really simple server for git repositories.
+.SH "SYNOPSIS"
+
+
+git\-daemon [\-\-verbose] [\-\-syslog] [\-\-inetd | \-\-port=n] [\-\-export\-all] [\-\-timeout=n] [\-\-init\-timeout=n] [\-\-strict\-paths] [directory...]
+
+.SH "DESCRIPTION"
+
+
+A really simple TCP git daemon that normally listens on port "DEFAULT_GIT_PORT" aka 9418\&. It waits for a connection, and will just execute "git\-upload\-pack" when it gets one\&.
+
+
+It's careful in that there's a magic request\-line that gives the command and what directory to upload, and it verifies that the directory is ok\&.
+
+
+It verifies that the directory has the magic file "git\-daemon\-export\-ok", and it will refuse to export any git directory that hasn't explicitly been marked for export this way (unless the \-\-export\-all parameter is specified)\&. If you pass some directory paths as git\-daemon arguments, you can further restrict the offers to a whitelist comprising of those\&.
+
+
+This is ideally suited for read\-only updates, ie pulling from git repositories\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-strict\-paths
+Match paths exactly (i\&.e\&. don't allow "/foo/repo" when the real path is "/foo/repo\&.git" or "/foo/repo/\&.git") and don't do user\-relative paths\&. git\-daemon will refuse to start when this option is enabled and no whitelist is specified\&.
+
+.TP
+\-\-export\-all
+Allow pulling from all directories that look like GIT repositories (have the objects and refs subdirectories), even if they do not have the git\-daemon\-export\-ok file\&.
+
+.TP
+\-\-inetd
+Have the server run as an inetd service\&. Implies \-\-syslog\&.
+
+.TP
+\-\-port
+Listen on an alternative port\&.
+
+.TP
+\-\-init\-timeout
+Timeout between the moment the connection is established and the client request is received (typically a rather low value, since that should be basically immediate)\&.
+
+.TP
+\-\-timeout
+Timeout for specific client sub\-requests\&. This includes the time it takes for the server to process the sub\-request and time spent waiting for next client's request\&.
+
+.TP
+\-\-syslog
+Log to syslog instead of stderr\&. Note that this option does not imply \-\-verbose, thus by default only error conditions will be logged\&.
+
+.TP
+\-\-verbose
+Log details about the incoming connections and requested files\&.
+
+.TP
+<directory>
+A directory to add to the whitelist of allowed directories\&. Unless \-\-strict\-paths is specified this will also include subdirectories of each named directory\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>, YOSHIFUJI Hideaki <yoshfuji@linux\-ipv6\&.org> and the git\-list <git@vger\&.kernel\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-diff-files.1 b/man1/git-diff-files.1
new file mode 100755 (executable)
index 0000000..4785d47
--- /dev/null
@@ -0,0 +1,306 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DIFF-FILES" 1 "" "" ""
+.SH NAME
+git-diff-files \- Compares files in the working tree and the index
+.SH "SYNOPSIS"
+
+
+git\-diff\-files [\-q] [<common diff options>] [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Compares the files in the working tree and the index\&. When paths are specified, compares only those named paths\&. Otherwise all entries in the index are compared\&. The output format is the same as "git\-diff\-index" and "git\-diff\-tree"\&.
+
+.SH "OPTIONS"
+
+.TP
+\-p
+Generate patch (see section on generating patches)
+
+.TP
+\-u
+Synonym for "\-p"\&.
+
+.TP
+\-z
+\\0 line termination on output
+
+.TP
+\-\-name\-only
+Show only names of changed files\&.
+
+.TP
+\-\-name\-status
+Show only names and status of changed files\&.
+
+.TP
+\-\-full\-index
+Instead of the first handful characters, show full object name of pre\- and post\-image blob on the "index" line when generating a patch format output\&.
+
+.TP
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object name in diff\-raw format output and diff\-tree header lines, show only handful dhexigits prefix\&. This is independent of \-\-full\-index option above, which controls the diff\-patch output format\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.TP
+\-B
+Break complete rewrite changes into pairs of delete and create\&.
+
+.TP
+\-M
+Detect renames\&.
+
+.TP
+\-C
+Detect copies as well as renames\&.
+
+.TP
+\-\-find\-copies\-harder
+For performance reasons, by default, \-C option finds copies only if the original file of the copy was modified in the same changeset\&. This flag makes the command inspect unmodified files as candidates for the source of copy\&. This is a very expensive operation for large projects, so use it with caution\&.
+
+.TP
+\-l<num>
+\-M and \-C options require O(n^2) processing time where n is the number of potential rename/copy targets\&. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number\&.
+
+.TP
+\-S<string>
+Look for differences that contain the change in <string>\&.
+
+.TP
+\-\-pickaxe\-all
+When \-S finds a change, show all the changes in that changeset, not just the files that contain the change in <string>\&.
+
+.TP
+\-O<orderfile>
+Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line\&.
+
+.TP
+\-R
+Swap two inputs; that is, show differences from index or on\-disk file to tree contents\&.
+
+
+For more detailed explanation on these common options, see also diffcore documentation: \fIdiffcore.html\fR\&.
+
+.TP
+\-1 \-2 \-3 or \-\-base \-\-ours \-\-theirs, and \-0
+Diff against the "base" version, "our branch" or "their branch" respectively\&. With these options, diffs for merged entries are not shown\&.
+
+The default is to diff against our branch (\-2) and the cleanly resolved paths\&. The option \-0 can be given to omit diff output for unmerged entries and just show "Unmerged"\&.
+
+.TP
+\-q
+Remain silent even on nonexisting files
+
+.SH "OUTPUT FORMAT"
+
+
+The output format from "git\-diff\-index", "git\-diff\-tree" and "git\-diff\-files" are very similar\&.
+
+
+These commands all compare two sets of things; what is compared differs:
+
+.TP
+git\-diff\-index <tree\-ish>
+compares the <tree\-ish> and the files on the filesystem\&.
+
+.TP
+git\-diff\-index \-\-cached <tree\-ish>
+compares the <tree\-ish> and the index\&.
+
+.TP
+git\-diff\-tree [\-r] <tree\-ish\-1> <tree\-ish\-2> [<pattern>...]
+compares the trees named by the two arguments\&.
+
+.TP
+git\-diff\-files [<pattern>...]
+compares the index and the files on the filesystem\&.
+
+
+An output line is formatted this way:
+
+.IP
+in\-place edit  :100644 100644 bcd1234\&.\&.\&. 0123456\&.\&.\&. M file0
+copy\-edit      :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. C68 file1 file2
+rename\-edit    :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. R86 file1 file3
+create         :000000 100644 0000000\&.\&.\&. 1234567\&.\&.\&. A file4
+delete         :100644 000000 1234567\&.\&.\&. 0000000\&.\&.\&. D file5
+unmerged       :000000 000000 0000000\&.\&.\&. 0000000\&.\&.\&. U file6
+
+That is, from the left to the right:
+
+.TP 3
+1.
+a colon\&.
+.TP
+2.
+mode for "src"; 000000 if creation or unmerged\&.
+.TP
+3.
+a space\&.
+.TP
+4.
+mode for "dst"; 000000 if deletion or unmerged\&.
+.TP
+5.
+a space\&.
+.TP
+6.
+sha1 for "src"; 0{40} if creation or unmerged\&.
+.TP
+7.
+a space\&.
+.TP
+8.
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree"\&.
+.TP
+9.
+a space\&.
+.TP
+10.
+status, followed by optional "score" number\&.
+.TP
+11.
+a tab or a NUL when \-z option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \-z option is used; only exists for C or R\&.
+.TP
+14.
+path for "dst"; only exists for C or R\&.
+.TP
+15.
+an LF or a NUL when \-z option is used, to terminate the record\&.
+.LP
+
+
+<sha1> is shown as all 0's if a file is new on the filesystem and it is out of sync with the index\&.
+
+
+Example:
+
+.IP
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+
+When \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "GENERATING PATCHES WITH -P"
+
+
+When "git\-diff\-index", "git\-diff\-tree", or "git\-diff\-files" are run with a \-p option, they do not produce the output described above; instead they produce a patch file\&.
+
+
+The patch generation can be customized at two levels\&.
+
+.TP 3
+1.
+When the environment variable GIT_EXTERNAL_DIFF is not set, these commands internally invoke "diff" like this:
+
+
+.nf
+diff \-L a/<path> \-L b/<path> \-pu <old> <new>
+.fi
+For added files, /dev/null is used for <old>\&. For removed files, /dev/null is used for <new>
+
+The "diff" formatting options can be customized via the environment variable GIT_DIFF_OPTS\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable GIT_EXTERNAL_DIFF is set, the program named by it is called, instead of the diff invocation described above\&.
+
+For a path that is added, removed, or modified, GIT_EXTERNAL_DIFF is called with 7 parameters:
+
+
+.nf
+path old\-file old\-hex old\-mode new\-file new\-hex new\-mode
+.fi
+where:
+
+<old|new>\-file
+are files GIT_EXTERNAL_DIFF can use to read the contents of <old|new>,
+<old|new>\-hex
+are the 40\-hexdigit SHA1 hashes,
+<old|new>\-mode
+are the octal representation of the file modes\&.
+The file parameters can point at the user's working file (e\&.g\&. new\-file in "git\-diff\-files"), /dev/null (e\&.g\&. old\-file when a new file is added), or a temporary file (e\&.g\&. old\-file in the index)\&. GIT_EXTERNAL_DIFF should not worry about unlinking the temporary file \-\-\- it is removed when GIT_EXTERNAL_DIFF exits\&.
+.LP
+
+
+For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1 parameter, <path>\&.
+
+.SH "GIT SPECIFIC EXTENSION TO DIFF FORMAT"
+
+
+What \-p option produces is slightly different from the traditional diff format\&.
+
+.TP 3
+1.
+It is preceeded with a "git diff" header, that looks like this:
+
+
+.nf
+diff \-\-git a/file1 b/file2
+.fi
+The a/ and b/ filenames are the same unless rename/copy is involved\&. Especially, even for a creation or a deletion, /dev/null is _not_ used in place of a/ or b/ filenames\&.
+
+When rename/copy is involved, file1 and file2 show the name of the source file of the rename/copy and the name of the file that rename/copy produces, respectively\&.
+.TP
+2.
+It is followed by one or more extended header lines:
+
+.nf
+old mode <mode>
+new mode <mode>
+deleted file mode <mode>
+new file mode <mode>
+copy from <path>
+copy to <path>
+rename from <path>
+rename to <path>
+similarity index <number>
+dissimilarity index <number>
+index <hash>\&.\&.<hash> <mode>
+.fi
+.TP
+3.
+TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+.LP
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-diff-index.1 b/man1/git-diff-index.1
new file mode 100755 (executable)
index 0000000..93dfa50
--- /dev/null
@@ -0,0 +1,388 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DIFF-INDEX" 1 "" "" ""
+.SH NAME
+git-diff-index \- Compares content and mode of blobs between the index and repository
+.SH "SYNOPSIS"
+
+
+git\-diff\-index [\-m] [\-\-cached] [<common diff options>] <tree\-ish> [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Compares the content and mode of the blobs found via a tree object with the content of the current index and, optionally ignoring the stat state of the file on disk\&. When paths are specified, compares only those named paths\&. Otherwise all entries in the index are compared\&.
+
+.SH "OPTIONS"
+
+.TP
+\-p
+Generate patch (see section on generating patches)
+
+.TP
+\-u
+Synonym for "\-p"\&.
+
+.TP
+\-z
+\\0 line termination on output
+
+.TP
+\-\-name\-only
+Show only names of changed files\&.
+
+.TP
+\-\-name\-status
+Show only names and status of changed files\&.
+
+.TP
+\-\-full\-index
+Instead of the first handful characters, show full object name of pre\- and post\-image blob on the "index" line when generating a patch format output\&.
+
+.TP
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object name in diff\-raw format output and diff\-tree header lines, show only handful dhexigits prefix\&. This is independent of \-\-full\-index option above, which controls the diff\-patch output format\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.TP
+\-B
+Break complete rewrite changes into pairs of delete and create\&.
+
+.TP
+\-M
+Detect renames\&.
+
+.TP
+\-C
+Detect copies as well as renames\&.
+
+.TP
+\-\-find\-copies\-harder
+For performance reasons, by default, \-C option finds copies only if the original file of the copy was modified in the same changeset\&. This flag makes the command inspect unmodified files as candidates for the source of copy\&. This is a very expensive operation for large projects, so use it with caution\&.
+
+.TP
+\-l<num>
+\-M and \-C options require O(n^2) processing time where n is the number of potential rename/copy targets\&. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number\&.
+
+.TP
+\-S<string>
+Look for differences that contain the change in <string>\&.
+
+.TP
+\-\-pickaxe\-all
+When \-S finds a change, show all the changes in that changeset, not just the files that contain the change in <string>\&.
+
+.TP
+\-O<orderfile>
+Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line\&.
+
+.TP
+\-R
+Swap two inputs; that is, show differences from index or on\-disk file to tree contents\&.
+
+
+For more detailed explanation on these common options, see also diffcore documentation: \fIdiffcore.html\fR\&.
+
+.TP
+<tree\-ish>
+The id of a tree object to diff against\&.
+
+.TP
+\-\-cached
+do not consider the on\-disk file at all
+
+.TP
+\-m
+By default, files recorded in the index but not checked out are reported as deleted\&. This flag makes "git\-diff\-index" say that all non\-checked\-out files are up to date\&.
+
+.SH "OUTPUT FORMAT"
+
+
+The output format from "git\-diff\-index", "git\-diff\-tree" and "git\-diff\-files" are very similar\&.
+
+
+These commands all compare two sets of things; what is compared differs:
+
+.TP
+git\-diff\-index <tree\-ish>
+compares the <tree\-ish> and the files on the filesystem\&.
+
+.TP
+git\-diff\-index \-\-cached <tree\-ish>
+compares the <tree\-ish> and the index\&.
+
+.TP
+git\-diff\-tree [\-r] <tree\-ish\-1> <tree\-ish\-2> [<pattern>...]
+compares the trees named by the two arguments\&.
+
+.TP
+git\-diff\-files [<pattern>...]
+compares the index and the files on the filesystem\&.
+
+
+An output line is formatted this way:
+
+.IP
+in\-place edit  :100644 100644 bcd1234\&.\&.\&. 0123456\&.\&.\&. M file0
+copy\-edit      :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. C68 file1 file2
+rename\-edit    :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. R86 file1 file3
+create         :000000 100644 0000000\&.\&.\&. 1234567\&.\&.\&. A file4
+delete         :100644 000000 1234567\&.\&.\&. 0000000\&.\&.\&. D file5
+unmerged       :000000 000000 0000000\&.\&.\&. 0000000\&.\&.\&. U file6
+
+That is, from the left to the right:
+
+.TP 3
+1.
+a colon\&.
+.TP
+2.
+mode for "src"; 000000 if creation or unmerged\&.
+.TP
+3.
+a space\&.
+.TP
+4.
+mode for "dst"; 000000 if deletion or unmerged\&.
+.TP
+5.
+a space\&.
+.TP
+6.
+sha1 for "src"; 0{40} if creation or unmerged\&.
+.TP
+7.
+a space\&.
+.TP
+8.
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree"\&.
+.TP
+9.
+a space\&.
+.TP
+10.
+status, followed by optional "score" number\&.
+.TP
+11.
+a tab or a NUL when \-z option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \-z option is used; only exists for C or R\&.
+.TP
+14.
+path for "dst"; only exists for C or R\&.
+.TP
+15.
+an LF or a NUL when \-z option is used, to terminate the record\&.
+.LP
+
+
+<sha1> is shown as all 0's if a file is new on the filesystem and it is out of sync with the index\&.
+
+
+Example:
+
+.IP
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+
+When \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "GENERATING PATCHES WITH -P"
+
+
+When "git\-diff\-index", "git\-diff\-tree", or "git\-diff\-files" are run with a \-p option, they do not produce the output described above; instead they produce a patch file\&.
+
+
+The patch generation can be customized at two levels\&.
+
+.TP 3
+1.
+When the environment variable GIT_EXTERNAL_DIFF is not set, these commands internally invoke "diff" like this:
+
+
+.nf
+diff \-L a/<path> \-L b/<path> \-pu <old> <new>
+.fi
+For added files, /dev/null is used for <old>\&. For removed files, /dev/null is used for <new>
+
+The "diff" formatting options can be customized via the environment variable GIT_DIFF_OPTS\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable GIT_EXTERNAL_DIFF is set, the program named by it is called, instead of the diff invocation described above\&.
+
+For a path that is added, removed, or modified, GIT_EXTERNAL_DIFF is called with 7 parameters:
+
+
+.nf
+path old\-file old\-hex old\-mode new\-file new\-hex new\-mode
+.fi
+where:
+
+<old|new>\-file
+are files GIT_EXTERNAL_DIFF can use to read the contents of <old|new>,
+<old|new>\-hex
+are the 40\-hexdigit SHA1 hashes,
+<old|new>\-mode
+are the octal representation of the file modes\&.
+The file parameters can point at the user's working file (e\&.g\&. new\-file in "git\-diff\-files"), /dev/null (e\&.g\&. old\-file when a new file is added), or a temporary file (e\&.g\&. old\-file in the index)\&. GIT_EXTERNAL_DIFF should not worry about unlinking the temporary file \-\-\- it is removed when GIT_EXTERNAL_DIFF exits\&.
+.LP
+
+
+For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1 parameter, <path>\&.
+
+.SH "GIT SPECIFIC EXTENSION TO DIFF FORMAT"
+
+
+What \-p option produces is slightly different from the traditional diff format\&.
+
+.TP 3
+1.
+It is preceeded with a "git diff" header, that looks like this:
+
+
+.nf
+diff \-\-git a/file1 b/file2
+.fi
+The a/ and b/ filenames are the same unless rename/copy is involved\&. Especially, even for a creation or a deletion, /dev/null is _not_ used in place of a/ or b/ filenames\&.
+
+When rename/copy is involved, file1 and file2 show the name of the source file of the rename/copy and the name of the file that rename/copy produces, respectively\&.
+.TP
+2.
+It is followed by one or more extended header lines:
+
+.nf
+old mode <mode>
+new mode <mode>
+deleted file mode <mode>
+new file mode <mode>
+copy from <path>
+copy to <path>
+rename from <path>
+rename to <path>
+similarity index <number>
+dissimilarity index <number>
+index <hash>\&.\&.<hash> <mode>
+.fi
+.TP
+3.
+TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+.LP
+
+.SH "OPERATING MODES"
+
+
+You can choose whether you want to trust the index file entirely (using the \-\-cached flag) or ask the diff logic to show any files that don't match the stat state as being "tentatively changed"\&. Both of these operations are very useful indeed\&.
+
+.SH "CACHED MODE"
+
+
+If \-\-cached is specified, it allows you to ask:
+
+.nf
+show me the differences between HEAD and the current index
+contents (the ones I'd write with a "git\-write\-tree")
+.fi
+
+
+For example, let's say that you have worked on your working directory, updated some files in the index and are ready to commit\&. You want to see eactly what you are going to commit is without having to write a new tree object and compare it that way, and to do that, you just do
+
+.nf
+git\-diff\-index \-\-cached HEAD
+.fi
+
+
+Example: let's say I had renamed commit\&.c to git\-commit\&.c, and I had done an "git\-update\-index" to make that effective in the index file\&. "git\-diff\-files" wouldn't show anything at all, since the index file matches my working directory\&. But doing a "git\-diff\-index" does:
+
+.nf
+torvalds@ppc970:~/git> git\-diff\-index \-\-cached HEAD
+\-100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        commit\&.c
++100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        git\-commit\&.c
+.fi
+
+
+You can trivially see that the above is a rename\&.
+
+
+In fact, "git\-diff\-index \-\-cached" should always be entirely equivalent to actually doing a "git\-write\-tree" and comparing that\&. Except this one is much nicer for the case where you just want to check where you are\&.
+
+
+So doing a "git\-diff\-index \-\-cached" is basically very useful when you are asking yourself "what have I already marked for being committed, and what's the difference to a previous tree"\&.
+
+.SH "NON-CACHED MODE"
+
+
+The "non\-cached" mode takes a different approach, and is potentially the more useful of the two in that what it does can't be emulated with a "git\-write\-tree" + "git\-diff\-tree"\&. Thus that's the default mode\&. The non\-cached version asks the question:
+
+.nf
+show me the differences between HEAD and the currently checked out
+tree \- index contents _and_ files that aren't up\-to\-date
+.fi
+
+
+which is obviously a very useful question too, since that tells you what you could commit\&. Again, the output matches the "git\-diff\-tree \-r" output to a tee, but with a twist\&.
+
+
+The twist is that if some file doesn't match the index, we don't have a backing store thing for it, and we use the magic "all\-zero" sha1 to show that\&. So let's say that you have edited kernel/sched\&.c, but have not actually done a "git\-update\-index" on it yet \- there is no "object" associated with the new state, and you get:
+
+.nf
+torvalds@ppc970:~/v2\&.6/linux> git\-diff\-index HEAD
+*100644\->100664 blob    7476bb\&.\&.\&.\&.\&.\&.\->000000\&.\&.\&.\&.\&.\&.      kernel/sched\&.c
+.fi
+
+
+ie it shows that the tree has changed, and that kernel/sched\&.c has is not up\-to\-date and may contain new stuff\&. The all\-zero sha1 means that to get the real diff, you need to look at the object in the working directory directly rather than do an object\-to\-object diff\&.
+
+.RS
+.Sh "Note"
+
+
+As with other commands of this type, "git\-diff\-index" does not actually look at the contents of the file at all\&. So maybe kernel/sched\&.c hasn't actually changed, and it's just that you touched it\&. In either case, it's a note that you need to "git\-upate\-index" it to make the index be in sync\&.
+
+.RE
+
+.RS
+.Sh "Note"
+
+
+You can have a mixture of files show up as "has been updated" and "is still dirty in the working directory" together\&. You can always tell which file is in which state, since the "has been updated" ones show a valid sha1, and the "not in sync with the index" ones will always have the special all\-zero sha1\&.
+
+.RE
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-diff-stages.1 b/man1/git-diff-stages.1
new file mode 100755 (executable)
index 0000000..94febba
--- /dev/null
@@ -0,0 +1,300 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DIFF-STAGES" 1 "" "" ""
+.SH NAME
+git-diff-stages \- Compares content and mode of blobs between stages in an unmerged index file.
+.SH "SYNOPSIS"
+
+
+git\-diff\-stages [<common diff options>] <stage1> <stage2> [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Compares the content and mode of the blobs in two stages in an unmerged index file\&.
+
+.SH "OPTIONS"
+
+.TP
+\-p
+Generate patch (see section on generating patches)
+
+.TP
+\-u
+Synonym for "\-p"\&.
+
+.TP
+\-z
+\\0 line termination on output
+
+.TP
+\-\-name\-only
+Show only names of changed files\&.
+
+.TP
+\-\-name\-status
+Show only names and status of changed files\&.
+
+.TP
+\-\-full\-index
+Instead of the first handful characters, show full object name of pre\- and post\-image blob on the "index" line when generating a patch format output\&.
+
+.TP
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object name in diff\-raw format output and diff\-tree header lines, show only handful dhexigits prefix\&. This is independent of \-\-full\-index option above, which controls the diff\-patch output format\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.TP
+\-B
+Break complete rewrite changes into pairs of delete and create\&.
+
+.TP
+\-M
+Detect renames\&.
+
+.TP
+\-C
+Detect copies as well as renames\&.
+
+.TP
+\-\-find\-copies\-harder
+For performance reasons, by default, \-C option finds copies only if the original file of the copy was modified in the same changeset\&. This flag makes the command inspect unmodified files as candidates for the source of copy\&. This is a very expensive operation for large projects, so use it with caution\&.
+
+.TP
+\-l<num>
+\-M and \-C options require O(n^2) processing time where n is the number of potential rename/copy targets\&. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number\&.
+
+.TP
+\-S<string>
+Look for differences that contain the change in <string>\&.
+
+.TP
+\-\-pickaxe\-all
+When \-S finds a change, show all the changes in that changeset, not just the files that contain the change in <string>\&.
+
+.TP
+\-O<orderfile>
+Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line\&.
+
+.TP
+\-R
+Swap two inputs; that is, show differences from index or on\-disk file to tree contents\&.
+
+
+For more detailed explanation on these common options, see also diffcore documentation: \fIdiffcore.html\fR\&.
+
+.TP
+<stage1>,<stage2>
+The stage number to be compared\&.
+
+.SH "OUTPUT FORMAT"
+
+
+The output format from "git\-diff\-index", "git\-diff\-tree" and "git\-diff\-files" are very similar\&.
+
+
+These commands all compare two sets of things; what is compared differs:
+
+.TP
+git\-diff\-index <tree\-ish>
+compares the <tree\-ish> and the files on the filesystem\&.
+
+.TP
+git\-diff\-index \-\-cached <tree\-ish>
+compares the <tree\-ish> and the index\&.
+
+.TP
+git\-diff\-tree [\-r] <tree\-ish\-1> <tree\-ish\-2> [<pattern>...]
+compares the trees named by the two arguments\&.
+
+.TP
+git\-diff\-files [<pattern>...]
+compares the index and the files on the filesystem\&.
+
+
+An output line is formatted this way:
+
+.IP
+in\-place edit  :100644 100644 bcd1234\&.\&.\&. 0123456\&.\&.\&. M file0
+copy\-edit      :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. C68 file1 file2
+rename\-edit    :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. R86 file1 file3
+create         :000000 100644 0000000\&.\&.\&. 1234567\&.\&.\&. A file4
+delete         :100644 000000 1234567\&.\&.\&. 0000000\&.\&.\&. D file5
+unmerged       :000000 000000 0000000\&.\&.\&. 0000000\&.\&.\&. U file6
+
+That is, from the left to the right:
+
+.TP 3
+1.
+a colon\&.
+.TP
+2.
+mode for "src"; 000000 if creation or unmerged\&.
+.TP
+3.
+a space\&.
+.TP
+4.
+mode for "dst"; 000000 if deletion or unmerged\&.
+.TP
+5.
+a space\&.
+.TP
+6.
+sha1 for "src"; 0{40} if creation or unmerged\&.
+.TP
+7.
+a space\&.
+.TP
+8.
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree"\&.
+.TP
+9.
+a space\&.
+.TP
+10.
+status, followed by optional "score" number\&.
+.TP
+11.
+a tab or a NUL when \-z option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \-z option is used; only exists for C or R\&.
+.TP
+14.
+path for "dst"; only exists for C or R\&.
+.TP
+15.
+an LF or a NUL when \-z option is used, to terminate the record\&.
+.LP
+
+
+<sha1> is shown as all 0's if a file is new on the filesystem and it is out of sync with the index\&.
+
+
+Example:
+
+.IP
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+
+When \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "GENERATING PATCHES WITH -P"
+
+
+When "git\-diff\-index", "git\-diff\-tree", or "git\-diff\-files" are run with a \-p option, they do not produce the output described above; instead they produce a patch file\&.
+
+
+The patch generation can be customized at two levels\&.
+
+.TP 3
+1.
+When the environment variable GIT_EXTERNAL_DIFF is not set, these commands internally invoke "diff" like this:
+
+
+.nf
+diff \-L a/<path> \-L b/<path> \-pu <old> <new>
+.fi
+For added files, /dev/null is used for <old>\&. For removed files, /dev/null is used for <new>
+
+The "diff" formatting options can be customized via the environment variable GIT_DIFF_OPTS\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable GIT_EXTERNAL_DIFF is set, the program named by it is called, instead of the diff invocation described above\&.
+
+For a path that is added, removed, or modified, GIT_EXTERNAL_DIFF is called with 7 parameters:
+
+
+.nf
+path old\-file old\-hex old\-mode new\-file new\-hex new\-mode
+.fi
+where:
+
+<old|new>\-file
+are files GIT_EXTERNAL_DIFF can use to read the contents of <old|new>,
+<old|new>\-hex
+are the 40\-hexdigit SHA1 hashes,
+<old|new>\-mode
+are the octal representation of the file modes\&.
+The file parameters can point at the user's working file (e\&.g\&. new\-file in "git\-diff\-files"), /dev/null (e\&.g\&. old\-file when a new file is added), or a temporary file (e\&.g\&. old\-file in the index)\&. GIT_EXTERNAL_DIFF should not worry about unlinking the temporary file \-\-\- it is removed when GIT_EXTERNAL_DIFF exits\&.
+.LP
+
+
+For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1 parameter, <path>\&.
+
+.SH "GIT SPECIFIC EXTENSION TO DIFF FORMAT"
+
+
+What \-p option produces is slightly different from the traditional diff format\&.
+
+.TP 3
+1.
+It is preceeded with a "git diff" header, that looks like this:
+
+
+.nf
+diff \-\-git a/file1 b/file2
+.fi
+The a/ and b/ filenames are the same unless rename/copy is involved\&. Especially, even for a creation or a deletion, /dev/null is _not_ used in place of a/ or b/ filenames\&.
+
+When rename/copy is involved, file1 and file2 show the name of the source file of the rename/copy and the name of the file that rename/copy produces, respectively\&.
+.TP
+2.
+It is followed by one or more extended header lines:
+
+.nf
+old mode <mode>
+new mode <mode>
+deleted file mode <mode>
+new file mode <mode>
+copy from <path>
+copy to <path>
+rename from <path>
+rename to <path>
+similarity index <number>
+dissimilarity index <number>
+index <hash>\&.\&.<hash> <mode>
+.fi
+.TP
+3.
+TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+.LP
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-diff-tree.1 b/man1/git-diff-tree.1
new file mode 100755 (executable)
index 0000000..8473645
--- /dev/null
@@ -0,0 +1,398 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DIFF-TREE" 1 "" "" ""
+.SH NAME
+git-diff-tree \- Compares the content and mode of blobs found via two tree objects
+.SH "SYNOPSIS"
+
+
+git\-diff\-tree [\-\-stdin] [\-m] [\-s] [\-v] [\-\-no\-commit\-id] [\-\-pretty] [\-t] [\-r] [\-\-root] [<common diff options>] <tree\-ish> [<tree\-ish>] [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Compares the content and mode of the blobs found via two tree objects\&.
+
+
+If there is only one <tree\-ish> given, the commit is compared with its parents (see \-\-stdin below)\&.
+
+
+Note that "git\-diff\-tree" can use the tree encapsulated in a commit object\&.
+
+.SH "OPTIONS"
+
+.TP
+\-p
+Generate patch (see section on generating patches)
+
+.TP
+\-u
+Synonym for "\-p"\&.
+
+.TP
+\-z
+\\0 line termination on output
+
+.TP
+\-\-name\-only
+Show only names of changed files\&.
+
+.TP
+\-\-name\-status
+Show only names and status of changed files\&.
+
+.TP
+\-\-full\-index
+Instead of the first handful characters, show full object name of pre\- and post\-image blob on the "index" line when generating a patch format output\&.
+
+.TP
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object name in diff\-raw format output and diff\-tree header lines, show only handful dhexigits prefix\&. This is independent of \-\-full\-index option above, which controls the diff\-patch output format\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.TP
+\-B
+Break complete rewrite changes into pairs of delete and create\&.
+
+.TP
+\-M
+Detect renames\&.
+
+.TP
+\-C
+Detect copies as well as renames\&.
+
+.TP
+\-\-find\-copies\-harder
+For performance reasons, by default, \-C option finds copies only if the original file of the copy was modified in the same changeset\&. This flag makes the command inspect unmodified files as candidates for the source of copy\&. This is a very expensive operation for large projects, so use it with caution\&.
+
+.TP
+\-l<num>
+\-M and \-C options require O(n^2) processing time where n is the number of potential rename/copy targets\&. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number\&.
+
+.TP
+\-S<string>
+Look for differences that contain the change in <string>\&.
+
+.TP
+\-\-pickaxe\-all
+When \-S finds a change, show all the changes in that changeset, not just the files that contain the change in <string>\&.
+
+.TP
+\-O<orderfile>
+Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line\&.
+
+.TP
+\-R
+Swap two inputs; that is, show differences from index or on\-disk file to tree contents\&.
+
+
+For more detailed explanation on these common options, see also diffcore documentation: \fIdiffcore.html\fR\&.
+
+.TP
+<tree\-ish>
+The id of a tree object\&.
+
+.TP
+<path>...
+If provided, the results are limited to a subset of files matching one of these prefix strings\&. ie file matches /^<pattern1>|<pattern2>|.../ Note that this parameter does not provide any wildcard or regexp features\&.
+
+.TP
+\-r
+recurse into sub\-trees
+
+.TP
+\-t
+show tree entry itself as well as subtrees\&. Implies \-r\&.
+
+.TP
+\-\-root
+When \-\-root is specified the initial commit will be showed as a big creation event\&. This is equivalent to a diff against the NULL tree\&.
+
+.TP
+\-\-stdin
+When \-\-stdin is specified, the command does not take <tree\-ish> arguments from the command line\&. Instead, it reads either one <commit> or a pair of <tree\-ish> separated with a single space from its standard input\&.
+
+When a single commit is given on one line of such input, it compares the commit with its parents\&. The following flags further affects its behaviour\&. This does not apply to the case where two <tree\-ish> separated with a single space are given\&.
+
+.TP
+\-m
+By default, "git\-diff\-tree \-\-stdin" does not show differences for merge commits\&. With this flag, it shows differences to that commit from all of its parents\&.
+
+.TP
+\-s
+By default, "git\-diff\-tree \-\-stdin" shows differences, either in machine\-readable form (without \-p) or in patch form (with \-p)\&. This output can be supressed\&. It is only useful with \-v flag\&.
+
+.TP
+\-v
+This flag causes "git\-diff\-tree \-\-stdin" to also show the commit message before the differences\&.
+
+.TP
+\-\-pretty[=(raw|medium|short)]
+This is used to control "pretty printing" format of the commit message\&. Without "=<style>", it defaults to medium\&.
+
+.TP
+\-\-no\-commit\-id
+git\-diff\-tree outputs a line with the commit ID when applicable\&. This flag suppressed the commit ID output\&.
+
+.SH "LIMITING OUTPUT"
+
+
+If you're only interested in differences in a subset of files, for example some architecture\-specific files, you might do:
+
+.nf
+git\-diff\-tree \-r <tree\-ish> <tree\-ish> arch/ia64 include/asm\-ia64
+.fi
+
+
+and it will only show you what changed in those two directories\&.
+
+
+Or if you are searching for what changed in just kernel/sched\&.c, just do
+
+.nf
+git\-diff\-tree \-r <tree\-ish> <tree\-ish> kernel/sched\&.c
+.fi
+
+
+and it will ignore all differences to other files\&.
+
+
+The pattern is always the prefix, and is matched exactly\&. There are no wildcards\&. Even stricter, it has to match a complete path component\&. I\&.e\&. "foo" does not pick up foobar\&.h\&. "foo" does match foo/bar\&.h so it can be used to name subdirectories\&.
+
+
+An example of normal usage is:
+
+.nf
+torvalds@ppc970:~/git> git\-diff\-tree 5319e4\&.\&.\&.\&.\&.\&.
+*100664\->100664 blob    ac348b\&.\&.\&.\&.\&.\&.\&.\->a01513\&.\&.\&.\&.\&.\&.\&.      git\-fsck\-objects\&.c
+.fi
+
+
+which tells you that the last commit changed just one file (it's from this one:
+
+.IP
+commit 3c6f7ca19ad4043e9e72fa94106f352897e651a8
+tree 5319e4d609cdd282069cc4dce33c1db559539b03
+parent b4e628ea30d5ab3606119d2ea5caeab141d38df7
+author Linus Torvalds <torvalds@ppc970\&.osdl\&.org> Sat Apr 9 12:02:30 2005
+committer Linus Torvalds <torvalds@ppc970\&.osdl\&.org> Sat Apr 9 12:02:30 2005
+
+Make "git\-fsck\-objects" print out all the root commits it finds\&.
+
+Once I do the reference tracking, I'll also make it print out all the
+HEAD commits it finds, which is even more interesting\&.
+
+in case you care)\&.
+
+.SH "OUTPUT FORMAT"
+
+
+The output format from "git\-diff\-index", "git\-diff\-tree" and "git\-diff\-files" are very similar\&.
+
+
+These commands all compare two sets of things; what is compared differs:
+
+.TP
+git\-diff\-index <tree\-ish>
+compares the <tree\-ish> and the files on the filesystem\&.
+
+.TP
+git\-diff\-index \-\-cached <tree\-ish>
+compares the <tree\-ish> and the index\&.
+
+.TP
+git\-diff\-tree [\-r] <tree\-ish\-1> <tree\-ish\-2> [<pattern>...]
+compares the trees named by the two arguments\&.
+
+.TP
+git\-diff\-files [<pattern>...]
+compares the index and the files on the filesystem\&.
+
+
+An output line is formatted this way:
+
+.IP
+in\-place edit  :100644 100644 bcd1234\&.\&.\&. 0123456\&.\&.\&. M file0
+copy\-edit      :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. C68 file1 file2
+rename\-edit    :100644 100644 abcd123\&.\&.\&. 1234567\&.\&.\&. R86 file1 file3
+create         :000000 100644 0000000\&.\&.\&. 1234567\&.\&.\&. A file4
+delete         :100644 000000 1234567\&.\&.\&. 0000000\&.\&.\&. D file5
+unmerged       :000000 000000 0000000\&.\&.\&. 0000000\&.\&.\&. U file6
+
+That is, from the left to the right:
+
+.TP 3
+1.
+a colon\&.
+.TP
+2.
+mode for "src"; 000000 if creation or unmerged\&.
+.TP
+3.
+a space\&.
+.TP
+4.
+mode for "dst"; 000000 if deletion or unmerged\&.
+.TP
+5.
+a space\&.
+.TP
+6.
+sha1 for "src"; 0{40} if creation or unmerged\&.
+.TP
+7.
+a space\&.
+.TP
+8.
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree"\&.
+.TP
+9.
+a space\&.
+.TP
+10.
+status, followed by optional "score" number\&.
+.TP
+11.
+a tab or a NUL when \-z option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \-z option is used; only exists for C or R\&.
+.TP
+14.
+path for "dst"; only exists for C or R\&.
+.TP
+15.
+an LF or a NUL when \-z option is used, to terminate the record\&.
+.LP
+
+
+<sha1> is shown as all 0's if a file is new on the filesystem and it is out of sync with the index\&.
+
+
+Example:
+
+.IP
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+
+When \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "GENERATING PATCHES WITH -P"
+
+
+When "git\-diff\-index", "git\-diff\-tree", or "git\-diff\-files" are run with a \-p option, they do not produce the output described above; instead they produce a patch file\&.
+
+
+The patch generation can be customized at two levels\&.
+
+.TP 3
+1.
+When the environment variable GIT_EXTERNAL_DIFF is not set, these commands internally invoke "diff" like this:
+
+
+.nf
+diff \-L a/<path> \-L b/<path> \-pu <old> <new>
+.fi
+For added files, /dev/null is used for <old>\&. For removed files, /dev/null is used for <new>
+
+The "diff" formatting options can be customized via the environment variable GIT_DIFF_OPTS\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable GIT_EXTERNAL_DIFF is set, the program named by it is called, instead of the diff invocation described above\&.
+
+For a path that is added, removed, or modified, GIT_EXTERNAL_DIFF is called with 7 parameters:
+
+
+.nf
+path old\-file old\-hex old\-mode new\-file new\-hex new\-mode
+.fi
+where:
+
+<old|new>\-file
+are files GIT_EXTERNAL_DIFF can use to read the contents of <old|new>,
+<old|new>\-hex
+are the 40\-hexdigit SHA1 hashes,
+<old|new>\-mode
+are the octal representation of the file modes\&.
+The file parameters can point at the user's working file (e\&.g\&. new\-file in "git\-diff\-files"), /dev/null (e\&.g\&. old\-file when a new file is added), or a temporary file (e\&.g\&. old\-file in the index)\&. GIT_EXTERNAL_DIFF should not worry about unlinking the temporary file \-\-\- it is removed when GIT_EXTERNAL_DIFF exits\&.
+.LP
+
+
+For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1 parameter, <path>\&.
+
+.SH "GIT SPECIFIC EXTENSION TO DIFF FORMAT"
+
+
+What \-p option produces is slightly different from the traditional diff format\&.
+
+.TP 3
+1.
+It is preceeded with a "git diff" header, that looks like this:
+
+
+.nf
+diff \-\-git a/file1 b/file2
+.fi
+The a/ and b/ filenames are the same unless rename/copy is involved\&. Especially, even for a creation or a deletion, /dev/null is _not_ used in place of a/ or b/ filenames\&.
+
+When rename/copy is involved, file1 and file2 show the name of the source file of the rename/copy and the name of the file that rename/copy produces, respectively\&.
+.TP
+2.
+It is followed by one or more extended header lines:
+
+.nf
+old mode <mode>
+new mode <mode>
+deleted file mode <mode>
+new file mode <mode>
+copy from <path>
+copy to <path>
+rename from <path>
+rename to <path>
+similarity index <number>
+dissimilarity index <number>
+index <hash>\&.\&.<hash> <mode>
+.fi
+.TP
+3.
+TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+.LP
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-diff.1 b/man1/git-diff.1
new file mode 100755 (executable)
index 0000000..6b46816
--- /dev/null
@@ -0,0 +1,123 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-DIFF" 1 "" "" ""
+.SH NAME
+git-diff \- Show changes between commits, commit and working tree, etc.
+.SH "SYNOPSIS"
+
+
+git\-diff [ \-\-diff\-options ] <ent>{0,2} [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Show changes between two ents, an ent and the working tree, an ent and the index file, or the index file and the working tree\&. The combination of what is compared with what is determined by the number of ents given to the command\&.
+
+.TP 3
+\(bu
+When no <ent> is given, the working tree and the index file is compared, using git\-diff\-files\&.
+.TP
+\(bu
+When one <ent> is given, the working tree and the named tree is compared, using git\-diff\-index\&. The option \-\-cached can be given to compare the index file and the named tree\&.
+.TP
+\(bu
+When two <ent>s are given, these two trees are compared using git\-diff\-tree\&.
+.LP
+
+.SH "OPTIONS"
+
+.TP
+\-\-diff\-options
+ \-\-diff\-options are passed to the git\-diff\-files, git\-diff\-index, and git\-diff\-tree commands\&. See the documentation for these commands for description\&.
+
+.TP
+<path>...
+The <path> arguments are also passed to git\-diff\-* commands\&.
+
+.SH "EXAMPLES"
+
+.TP
+Various ways to check your working tree
+
+.IP
+$ git diff 
+$ git diff \-\-cached 
+$ git diff HEAD 
+
+ changes in the working tree since your last git\-update\-index\&.
+ changes between the index and your last commit; what you
+would be committing if you run "git commit" without "\-a" option\&.
+ changes in the working tree since your last commit; what you
+would be committing if you run "git commit \-a"
+.TP
+Comparing with arbitrary commits
+
+.IP
+$ git diff test 
+$ git diff HEAD \-\- \&./test 
+$ git diff HEAD^ HEAD 
+
+ instead of using the tip of the current branch, compare with the
+tip of "test" branch\&.
+ instead of comparing with the tip of "test" branch, compare with
+the tip of the curren branch, but limit the comparison to the
+file "test"\&.
+ compare the version before the last commit and the last commit\&.
+.TP
+Limiting the diff output
+
+.IP
+$ git diff \-\-diff\-filter=MRC 
+$ git diff \-\-name\-status \-r 
+$ git diff arch/i386 include/asm\-i386 
+
+ show only modification, rename and copy, but not addition
+nor deletion\&.
+ show only names and the nature of change, but not actual
+diff output\&.  \-\-name\-status disables usual patch generation
+which in turn also disables recursive behaviour, so without \-r
+you would only see the directory name if there is a change in a
+file in a subdirectory\&.
+ limit diff output to named subtrees\&.
+.TP
+Munging the diff output
+
+.IP
+$ git diff \-\-find\-copies\-harder \-B \-C 
+$ git diff \-R 
+
+ spend extra cycles to find renames, copies and complete
+rewrites (very expensive)\&.
+ output diff in reverse\&.
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-fetch-pack.1 b/man1/git-fetch-pack.1
new file mode 100755 (executable)
index 0000000..6cd3302
--- /dev/null
@@ -0,0 +1,76 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-FETCH-PACK" 1 "" "" ""
+.SH NAME
+git-fetch-pack \- Receive missing objects from another repository.
+.SH "SYNOPSIS"
+
+
+git\-fetch\-pack [\-q] [\-k] [\-\-exec=<git\-upload\-pack>] [<host>:]<directory> [<refs>...]
+
+.SH "DESCRIPTION"
+
+
+Invokes git\-upload\-pack on a potentially remote repository, and asks it to send objects missing from this repository, to update the named heads\&. The list of commits available locally is found out by scanning local $GIT_DIR/refs/ and sent to git\-upload\-pack running on the other end\&.
+
+
+This command degenerates to download everything to complete the asked refs from the remote side when the local side does not have a common ancestor commit\&.
+
+.SH "OPTIONS"
+
+.TP
+\-q
+Pass \-q flag to git\-unpack\-objects; this makes the cloning process less verbose\&.
+
+.TP
+\-k
+Do not invoke git\-unpack\-objects on received data, but create a single packfile out of it instead, and store it in the object database\&.
+
+.TP
+\-\-exec=<git\-upload\-pack>
+Use this to specify the path to git\-upload\-pack on the remote side, if is not found on your $PATH\&. Installations of sshd ignores the user's environment setup scripts for login shells (e\&.g\&. \&.bash_profile) and your privately installed git may not be found on the system default $PATH\&. Another workaround suggested is to set up your $PATH in "\&.bashrc", but this flag is for people who do not want to pay the overhead for non\-interactive shells by having a lean \&.bashrc file (they set most of the things up in \&.bash_profile)\&.
+
+.TP
+<host>
+A remote host that houses the repository\&. When this part is specified, git\-upload\-pack is invoked via ssh\&.
+
+.TP
+<directory>
+The repository to sync from\&.
+
+.TP
+<refs>...
+The remote heads to update from\&. This is relative to $GIT_DIR (e\&.g\&. "HEAD", "refs/heads/master")\&. When unspecified, update from all heads the remote side has\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-fetch.1 b/man1/git-fetch.1
new file mode 100755 (executable)
index 0000000..893a3e5
--- /dev/null
@@ -0,0 +1,203 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-FETCH" 1 "" "" ""
+.SH NAME
+git-fetch \- Download objects and a head from another repository.
+.SH "SYNOPSIS"
+
+
+git\-fetch <options> <repository> <refspec>...
+
+.SH "DESCRIPTION"
+
+
+Fetches named heads or tags from another repository, along with the objects necessary to complete them\&.
+
+
+The ref names and their object names of fetched refs are stored in \&.git/FETCH_HEAD\&. This information is left for a later merge operation done by "git merge"\&.
+
+.SH "OPTIONS"
+
+.TP
+\-a, \-\-append
+Append ref names and object names of fetched refs to the existing contents of \&.git/FETCH_HEAD\&. Without this option old data in \&.git/FETCH_HEAD will be overwritten\&.
+
+.TP
+\-f, \-\-force
+When git\-fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>\&. This option overrides that check\&.
+
+.TP
+\-t, \-\-tags
+By default, the git core utilities will not fetch and store tags under the same name as the remote repository; ask it to do so using \-\-tags\&. Using this option will bound the list of objects pulled to the remote tags\&. Commits in branches beyond the tags will be ignored\&.
+
+.TP
+\-u, \-\-update\-head\-ok
+By default git\-fetch refuses to update the head which corresponds to the current branch\&. This flag disables the check\&. Note that fetching into the current branch will not update the index and working directory, so use it with care\&.
+
+.TP
+<repository>
+The "remote" repository that is the source of a fetch or pull operation, or the destination of a push operation\&. One of the following notations can be used to name the remote repository:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+rsync://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+http://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+https://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~/path/to/repo\&.git
+.LP
+.RE
+.IP
+SSH Is the default transport protocol and also supports an scp\-like syntax\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:path/to/repo\&.git
+.LP
+.RE
+.IP
+To sync with a local directory, use:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+.RE
+.IP
+In addition to the above, as a short\-hand, the name of a file in $GIT_DIR/remotes directory can be given; the named file should be in the following format:
+
+
+.nf
+URL: one of the above URL format
+Push: <refspec>
+Pull: <refspec>
+.fi
+When such a short\-hand is specified in place of <repository> without <refspec> parameters on the command line, <refspec> specified on Push: lines or Pull: lines are used for git\-push and git\-fetch/git\-pull, respectively\&. Multiple Push: and and Pull: lines may be specified for additional branch mappings\&.
+
+The name of a file in $GIT_DIR/branches directory can be specified as an older notation short\-hand; the named file should contain a single line, a URL in one of the above formats, optionally followed by a hash # and the name of remote head (URL fragment notation)\&. $GIT_DIR/branches/<remote> file that stores a <url> without the fragment is equivalent to have this in the corresponding file in the $GIT_DIR/remotes/ directory\&.
+
+
+.nf
+URL: <url>
+Pull: refs/heads/master:<remote>
+.fi
+while having <url>#<head> is equivalent to
+
+.nf
+URL: <url>
+Pull: refs/heads/<head>:<remote>
+.fi
+
+.TP
+<refspec>
+The canonical format of a <refspec> parameter is +?<src>:<dst>; that is, an optional plus +, followed by the source ref, followed by a colon :, followed by the destination ref\&.
+
+When used in git\-push, the <src> side can be an arbitrary "SHA1 expression" that can be used as an argument to git\-cat\-file \-t\&. E\&.g\&. master~4 (push four parents before the current master head)\&.
+
+For git\-push, the local ref that matches <src> is used to fast forward the remote ref that matches <dst>\&. If the optional plus + is used, the remote ref is updated even if it does not result in a fast forward update\&.
+
+For git\-fetch and git\-pull, the remote ref that matches <src> is fetched, and if <dst> is not empty string, the local ref that matches it is fast forwarded using <src>\&. Again, if the optional plus + is used, the local ref is updated even if it does not result in a fast forward update\&.
+
+
+.RS
+.Sh "Note"
+If the remote branch from which you want to pull is modified in non\-linear ways such as being rewound and rebased frequently, then a pull will attempt a merge with an older version of itself, likely conflict, and fail\&. It is under these conditions that you would want to use the + sign to indicate non\-fast\-forward updates will be needed\&. There is currently no easy way to determine or declare that a branch will be made available in a repository with this behavior; the pulling user simply must know this is the expected usage pattern for a branch\&.
+
+.RE
+
+.RS
+.Sh "Note"
+You never do your own development on branches that appear on the right hand side of a <refspec> colon on Pull: lines; they are to be updated by git\-fetch\&. If you intend to do development derived from a remote branch B, have a Pull: line to track it (i\&.e\&. Pull: B:remote\-B), and have a separate branch my\-B to do your development on top of it\&. The latter is created by git branch my\-B remote\-B (or its equivalent git checkout \-b my\-B remote\-B)\&. Run git fetch to keep track of the progress of the remote side, and when you see something new on the remote branch, merge it into your development branch with git pull \&. remote\-B, while you are on my\-B branch\&. The common Pull: master:origin mapping of a remote master branch to a local origin branch, which is then merged to a local development branch, again typically named master, is made when you run git clone for you to follow this pattern\&.
+
+.RE
+
+.RS
+.Sh "Note"
+There is a difference between listing multiple <refspec> directly on git\-pull command line and having multiple Pull: <refspec> lines for a <repository> and running git\-pull command without any explicit <refspec> parameters\&. <refspec> listed explicitly on the command line are always merged into the current branch after fetching\&. In other words, if you list more than one remote refs, you would be making an Octopus\&. While git\-pull run without any explicit <refspec> parameter takes default <refspec>s from Pull: lines, it merges only the first <refspec> found into the current branch, after fetching all the remote refs\&. This is because making an Octopus from remote refs is rarely done, while keeping track of multiple remote heads in one\-go by fetching more than one is often useful\&.
+
+.RE
+Some short\-cut notations are also supported\&.
+
+.RS
+.TP 3
+\(bu
+For backward compatibility, tag is almost ignored; it just makes the following parameter <tag> to mean a refspec refs/tags/<tag>:refs/tags/<tag>\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, and <ref>:<ref> when pushing\&. That is, do not store it locally if fetching, and update the same name if pushing\&.
+.LP
+.RE
+.IP
+
+.SH "SEE ALSO"
+
+
+\fBgit\-pull\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-fmt-merge-msg.1 b/man1/git-fmt-merge-msg.1
new file mode 100755 (executable)
index 0000000..ed1be8c
--- /dev/null
@@ -0,0 +1,55 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-FMT-MERGE-MSG" 1 "" "" ""
+.SH NAME
+git-fmt-merge-msg \- Produce a merge commit message
+.SH "SYNOPSIS"
+
+
+git\-fmt\-merge\-msg <$GIT_DIR/FETCH_HEAD
+
+.SH "DESCRIPTION"
+
+
+Takes the list of merged objects on stdin and produces a suitable commit message to be used for the merge commit, usually to be passed as the <merge\-message> argument of git\-merge\&.
+
+
+This script is intended mostly for internal use by scripts automatically invoking git\-merge\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-merge\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Petr Baudis, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-format-patch.1 b/man1/git-format-patch.1
new file mode 100755 (executable)
index 0000000..0e1779c
--- /dev/null
@@ -0,0 +1,109 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-FORMAT-PATCH" 1 "" "" ""
+.SH NAME
+git-format-patch \- Prepare patches for e-mail submission.
+.SH "SYNOPSIS"
+
+
+git\-format\-patch [\-n | \-k] [\-o <dir> | \-\-stdout] [\-s] [\-c] [\-\-mbox] [\-\-diff\-options] <his> [<mine>]
+
+.SH "DESCRIPTION"
+
+
+Prepare each commit with its patch since <mine> head forked from <his> head, one file per patch, for e\-mail submission\&. Each output file is numbered sequentially from 1, and uses the first line of the commit message (massaged for pathname safety) as the filename\&.
+
+
+When \-o is specified, output files are created in that directory; otherwise in the current working directory\&.
+
+
+When \-n is specified, instead of "[PATCH] Subject", the first line is formatted as "[PATCH N/M] Subject", unless you have only one patch\&.
+
+
+When \-\-mbox is specified, the output is formatted to resemble UNIX mailbox format, and can be concatenated together for processing with applymbox\&.
+
+.SH "OPTIONS"
+
+.TP
+\-o|\-\-output\-directory <dir>
+Use <dir> to store the resulting files, instead of the current working directory\&.
+
+.TP
+\-n|\-\-numbered
+Name output in [PATCH n/m] format\&.
+
+.TP
+\-k|\-\-keep\-subject
+Do not strip/add [PATCH] from the first line of the commit log message\&.
+
+.TP
+\-a|\-\-author, \-d|\-\-date
+Output From: and Date: headers for commits made by yourself as well\&. Usually these are output only for commits made by people other than yourself\&.
+
+.TP
+\-s|\-\-signoff
+Add Signed\-off\-by: line to the commit message, using the committer identity of yourself\&.
+
+.TP
+\-c|\-\-check
+Display suspicious lines in the patch\&. The definition of suspicious lines is currently the lines that has trailing whitespaces, and the lines whose indentation has a SP character immediately followed by a TAB character\&.
+
+.TP
+\-m|\-\-mbox
+Format the output files for closer to mbox format by adding a phony Unix "From " line, so they can be concatenated together and fed to git\-applymbox\&. Implies \-\-author and \-\-date\&.
+
+.TP
+\-\-stdout
+This flag generates the mbox formatted output to the standard output, instead of saving them into a file per patch and implies \-\-mbox\&.
+
+.SH "EXAMPLES"
+
+.TP
+git\-format\-patch \-k \-\-stdout R1\&.\&.R2 | git\-am \-3 \-k
+Extract commits between revisions R1 and R2, and apply them on top of the current branch using git\-am to cherry\-pick them\&.
+
+.TP
+git\-format\-patch origin
+Extract commits the current branch accumulated since it pulled from origin the last time in a patch form for e\-mail submission\&.
+
+.TP
+git\-format\-patch \-M \-B origin
+The same as the previous one, except detect and handle renames and complete rewrites intelligently to produce renaming patch\&. A renaming patch reduces the amount of text output, and generally makes it easier to review it\&. Note that the "patch" program does not understand renaming patch well, so use it only when you know the recipient uses git to apply your patch\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-am\fR(1), gitlink:git\-send\-email
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-fsck-objects.1 b/man1/git-fsck-objects.1
new file mode 100755 (executable)
index 0000000..0d08b75
--- /dev/null
@@ -0,0 +1,146 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-FSCK-OBJECTS" 1 "" "" ""
+.SH NAME
+git-fsck-objects \- Verifies the connectivity and validity of the objects in the database
+.SH "SYNOPSIS"
+
+
+git\-fsck\-objects [\-\-tags] [\-\-root] [\-\-unreachable] [\-\-cache] [\-\-standalone | \-\-full] [\-\-strict] [<object>*]
+
+.SH "DESCRIPTION"
+
+
+Verifies the connectivity and validity of the objects in the database\&.
+
+.SH "OPTIONS"
+
+.TP
+<object>
+An object to treat as the head of an unreachability trace\&.
+
+If no objects are given, git\-fsck\-objects defaults to using the index file and all SHA1 references in \&.git/refs/* as heads\&.
+
+.TP
+\-\-unreachable
+Print out objects that exist but that aren't readable from any of the reference nodes\&.
+
+.TP
+\-\-root
+Report root nodes\&.
+
+.TP
+\-\-tags
+Report tags\&.
+
+.TP
+\-\-cache
+Consider any object recorded in the index also as a head node for an unreachability trace\&.
+
+.TP
+\-\-standalone
+Limit checks to the contents of GIT_OBJECT_DIRECTORY ($GIT_DIR/objects), making sure that it is consistent and complete without referring to objects found in alternate object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES, nor packed git archives found in $GIT_DIR/objects/pack; cannot be used with \-\-full\&.
+
+.TP
+\-\-full
+Check not just objects in GIT_OBJECT_DIRECTORY ($GIT_DIR/objects), but also the ones found in alternate object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES, and in packed git archives found in $GIT_DIR/objects/pack and corresponding pack subdirectories in alternate object pools; cannot be used with \-\-standalone\&.
+
+.TP
+\-\-strict
+Enable more strict checking, namely to catch a file mode recorded with g+w bit set, which was created by older versions of git\&. Existing repositories, including the Linux kernel, git itself, and sparse repository have old objects that triggers this check, but it is recommended to check new projects with this flag\&.
+
+
+It tests SHA1 and general object sanity, and it does full tracking of the resulting reachability and everything else\&. It prints out any corruption it finds (missing or bad objects), and if you use the \-\-unreachable flag it will also print out objects that exist but that aren't readable from any of the specified head nodes\&.
+
+
+So for example
+
+.nf
+git\-fsck\-objects \-\-unreachable HEAD $(cat \&.git/refs/heads/*)
+.fi
+
+
+will do quite a _lot_ of verification on the tree\&. There are a few extra validity tests to be added (make sure that tree objects are sorted properly etc), but on the whole if "git\-fsck\-objects" is happy, you do have a valid tree\&.
+
+
+Any corrupt objects you will have to find in backups or other archives (ie you can just remove them and do an "rsync" with some other site in the hopes that somebody else has the object you have corrupted)\&.
+
+
+Of course, "valid tree" doesn't mean that it wasn't generated by some evil person, and the end result might be crap\&. git is a revision tracking system, not a quality assurance system ;)
+
+.SH "EXTRACTED DIAGNOSTICS"
+
+.TP
+expect dangling commits \- potential heads \- due to lack of head information
+You haven't specified any nodes as heads so it won't be possible to differentiate between un\-parented commits and root nodes\&.
+
+.TP
+missing sha1 directory <dir>
+The directory holding the sha1 objects is missing\&.
+
+.TP
+unreachable <type> <object>
+The <type> object <object>, isn't actually referred to directly or indirectly in any of the trees or commits seen\&. This can mean that there's another root node that you're not specifying or that the tree is corrupt\&. If you haven't missed a root node then you might as well delete unreachable nodes since they can't be used\&.
+
+.TP
+missing <type> <object>
+The <type> object <object>, is referred to but isn't present in the database\&.
+
+.TP
+dangling <type> <object>
+The <type> object <object>, is present in the database but never directly used\&. A dangling commit could be a root node\&.
+
+.TP
+warning: git\-fsck\-objects: tree <tree> has full pathnames in it
+And it shouldn't...
+
+.TP
+sha1 mismatch <object>
+The database has an object who's sha1 doesn't match the database value\&. This indicates a serious data integrity problem\&.
+
+.SH "ENVIRONMENT VARIABLES"
+
+.TP
+GIT_OBJECT_DIRECTORY
+used to specify the object database root (usually $GIT_DIR/objects)
+
+.TP
+GIT_INDEX_FILE
+used to specify the index file of the index
+
+.TP
+GIT_ALTERNATE_OBJECT_DIRECTORIES
+used to specify additional object database roots (usually unset)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-get-tar-commit-id.1 b/man1/git-get-tar-commit-id.1
new file mode 100755 (executable)
index 0000000..696dda7
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-GET-TAR-COMMIT" 1 "" "" ""
+.SH NAME
+git-get-tar-commit-id \- Extract commit ID from an archive created using git-tar-tree.
+.SH "SYNOPSIS"
+
+
+git\-get\-tar\-commit\-id < <tarfile>
+
+.SH "DESCRIPTION"
+
+
+Acts as a filter, extracting the commit ID stored in archives created by git\-tar\-tree\&. It reads only the first 1024 bytes of input, thus its runtime is not influenced by the size of <tarfile> very much\&.
+
+
+If no commit ID is found, git\-get\-tar\-commit\-id quietly exists with a return code of 1\&. This can happen if <tarfile> had not been created using git\-tar\-tree or if the first parameter of git\-tar\-tree had been a tree ID instead of a commit ID or tag\&.
+
+.SH "AUTHOR"
+
+
+Written by Rene Scharfe <rene\&.scharfe@lsrfire\&.ath\&.cx>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-grep.1 b/man1/git-grep.1
new file mode 100755 (executable)
index 0000000..5b6e697
--- /dev/null
@@ -0,0 +1,61 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-GREP" 1 "" "" ""
+.SH NAME
+git-grep \- print lines matching a pattern
+.SH "SYNOPSIS"
+
+
+git\-grep <option>... <pattern> <path>...
+
+.SH "DESCRIPTION"
+
+
+Searches list of files git\-ls\-files produces for lines containing a match to the given pattern\&.
+
+.SH "OPTIONS"
+
+.TP
+<option>...
+Either an option to pass to grep or git\-ls\-files\&. Some grep options, such as \-C and \-m, that take parameters are known to git\-grep\&.
+
+.TP
+<pattern>
+The pattern to look for\&.
+
+.TP
+<path>...
+Optional paths to limit the set of files to be searched; passed to git\-ls\-files\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-hash-object.1 b/man1/git-hash-object.1
new file mode 100755 (executable)
index 0000000..d7cd657
--- /dev/null
@@ -0,0 +1,61 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-HASH-OBJECT" 1 "" "" ""
+.SH NAME
+git-hash-object \- Computes object ID and optionally creates a blob from a file.
+.SH "SYNOPSIS"
+
+
+git\-hash\-object [\-t <type>] [\-w] [\-\-stdin] [\-\-] <file>...
+
+.SH "DESCRIPTION"
+
+
+Computes the object ID value for an object with specified type with the contents of the named file (which can be outside of the work tree), and optionally writes the resulting object into the object database\&. Reports its object ID to its standard output\&. This is used by "git\-cvsimport" to update the index without modifying files in the work tree\&. When <type> is not specified, it defaults to "blob"\&.
+
+.SH "OPTIONS"
+
+.TP
+\-t <type>
+Specify the type (default: "blob")\&.
+
+.TP
+\-w
+Actually write the object into the object database\&.
+
+.TP
+\-\-stdin
+Read the object from standard input instead of from a file\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-http-fetch.1 b/man1/git-http-fetch.1
new file mode 100755 (executable)
index 0000000..3de9de4
--- /dev/null
@@ -0,0 +1,73 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-HTTP-FETCH" 1 "" "" ""
+.SH NAME
+git-http-fetch \- Downloads a remote git repository via HTTP
+.SH "SYNOPSIS"
+
+
+git\-http\-fetch [\-c] [\-t] [\-a] [\-d] [\-v] [\-w filename] [\-\-recover] commit\-id url
+
+.SH "DESCRIPTION"
+
+
+Downloads a remote git repository via HTTP\&.
+
+.SH "OPTIONS"
+
+.TP
+commit\-id
+Either the hash or the filename under [URL]/refs/ to pull\&.
+
+.TP
+\-c
+Get the commit objects\&.
+
+.TP
+\-t
+Get trees associated with the commit objects\&.
+
+.TP
+\-a
+Get all the objects\&.
+
+.TP
+\-v
+Report what is downloaded\&.
+
+.TP
+\-w <filename>
+Writes the commit\-id into the filename under $GIT_DIR/refs/<filename> on the local end after the transfer is complete\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-http-push.1 b/man1/git-http-push.1
new file mode 100755 (executable)
index 0000000..884eeda
--- /dev/null
@@ -0,0 +1,100 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-HTTP-PUSH" 1 "" "" ""
+.SH NAME
+git-http-push \- Push missing objects using HTTP/DAV.
+.SH "SYNOPSIS"
+
+
+git\-http\-push [\-\-complete] [\-\-force] [\-\-verbose] <url> <ref> [<ref>...]
+
+.SH "DESCRIPTION"
+
+
+Sends missing objects to remote repository, and updates the remote branch\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-complete
+Do not assume that the remote repository is complete in its current state, and verify all objects in the entire local ref's history exist in the remote repository\&.
+
+.TP
+\-\-force
+Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it\&. This flag disables the check\&. What this means is that the remote repository can lose commits; use it with care\&.
+
+.TP
+\-\-verbose
+Report the list of objects being walked locally and the list of objects successfully sent to the remote repository\&.
+
+
+<ref>...: The remote refs to update\&.
+
+.SH "SPECIFYING THE REFS"
+
+
+A <ref> specification can be either a single pattern, or a pair of such patterns separated by a colon ":" (this means that a ref name cannot have a colon in it)\&. A single pattern <name> is just a shorthand for <name>:<name>\&.
+
+
+Each pattern pair consists of the source side (before the colon) and the destination side (after the colon)\&. The ref to be pushed is determined by finding a match that matches the source side, and where it is pushed is determined by using the destination side\&.
+
+.TP 3
+\(bu
+It is an error if <src> does not match exactly one of the local refs\&.
+.TP
+\(bu
+If <dst> does not match any remote ref, either
+
+.RS
+.TP 3
+\(bu
+it has to start with "refs/"; <dst> is used as the destination literally in this case\&.
+.TP
+\(bu
+<src> == <dst> and the ref that matched the <src> must not exist in the set of remote refs; the ref matched <src> locally is used as the name of the destination\&.
+.LP
+.RE
+.IP
+.LP
+
+
+Without \-\-force, the <src> ref is stored at the remote only if <dst> does not exist, or <dst> is a proper subset (i\&.e\&. an ancestor) of <src>\&. This check, known as "fast forward check", is performed in order to avoid accidentally overwriting the remote ref and lose other peoples' commits from there\&.
+
+
+With \-\-force, the fast forward check is disabled for all refs\&.
+
+
+Optionally, a <ref> parameter can be prefixed with a plus + sign to disable the fast\-forward check only on that ref\&.
+
+.SH "AUTHOR"
+
+
+Written by Nick Hengeveld <nickh@reactrix\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Nick Hengeveld
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-index-pack.1 b/man1/git-index-pack.1
new file mode 100755 (executable)
index 0000000..27bc5d4
--- /dev/null
@@ -0,0 +1,53 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-INDEX-PACK" 1 "" "" ""
+.SH NAME
+git-index-pack \- Build pack index file for an existing packed archive
+.SH "SYNOPSIS"
+
+
+git\-index\-pack [\-o <index\-file>] <pack\-file>
+
+.SH "DESCRIPTION"
+
+
+Reads a packed archive (\&.pack) from the specified file, and builds a pack index file (\&.idx) for it\&. The packed archive together with the pack index can then be placed in the objects/pack/ directory of a git repository\&.
+
+.SH "OPTIONS"
+
+.TP
+\-o <index\-file>
+Write the generated pack index into the specified file\&. Without this option the name of pack index file is constructed from the name of packed archive file by replacing \&.pack with \&.idx (and the program fails if the name of packed archive does not end with \&.pack)\&.
+
+.SH "AUTHOR"
+
+
+Written by Sergey Vlasov <vsu@altlinux\&.ru>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Sergey Vlasov
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-init-db.1 b/man1/git-init-db.1
new file mode 100755 (executable)
index 0000000..31f92d9
--- /dev/null
@@ -0,0 +1,74 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-INIT-DB" 1 "" "" ""
+.SH NAME
+git-init-db \- Creates an empty git repository
+.SH "SYNOPSIS"
+
+
+git\-init\-db [\-\-template=<template_directory>]
+
+.SH "OPTIONS"
+
+.TP
+\-\-template=<template_directory>
+Provide the directory in from which templates will be used\&.
+
+.SH "DESCRIPTION"
+
+
+This simply creates an empty git repository \- basically a \&.git directory and \&.git/object/??/, \&.git/refs/heads and \&.git/refs/tags directories, and links \&.git/HEAD symbolically to \&.git/refs/heads/master\&.
+
+
+If the $GIT_DIR environment variable is set then it specifies a path to use instead of \&./\&.git for the base of the repository\&.
+
+
+If the object storage directory is specified via the $GIT_OBJECT_DIRECTORY environment variable then the sha1 directories are created underneath \- otherwise the default $GIT_DIR/objects directory is used\&.
+
+
+git\-init\-db won't hurt an existing repository\&.
+
+.SH "EXAMPLES"
+
+.TP
+Start a new git repository for an existing code base
+
+.IP
+$ cd /path/to/my/codebase
+$ git\-init\-db 
+$ git\-add \&. 
+
+ prepare /path/to/my/codebase/\&.git directory
+ add all existing file to the index
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-local-fetch.1 b/man1/git-local-fetch.1
new file mode 100755 (executable)
index 0000000..e56df20
--- /dev/null
@@ -0,0 +1,69 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LOCAL-FETCH" 1 "" "" ""
+.SH NAME
+git-local-fetch \- Duplicates another git repository on a local system
+.SH "SYNOPSIS"
+
+
+git\-local\-fetch [\-c] [\-t] [\-a] [\-d] [\-v] [\-w filename] [\-\-recover] [\-l] [\-s] [\-n] commit\-id path
+
+.SH "DESCRIPTION"
+
+
+Duplicates another git repository on a local system\&.
+
+.SH "OPTIONS"
+
+.TP
+\-c
+Get the commit objects\&.
+
+.TP
+\-t
+Get trees associated with the commit objects\&.
+
+.TP
+\-a
+Get all the objects\&.
+
+.TP
+\-v
+Report what is downloaded\&.
+
+.TP
+\-w <filename>
+Writes the commit\-id into the filename under $GIT_DIR/refs/<filename> on the local end after the transfer is complete\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-log.1 b/man1/git-log.1
new file mode 100755 (executable)
index 0000000..b991139
--- /dev/null
@@ -0,0 +1,78 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LOG" 1 "" "" ""
+.SH NAME
+git-log \- Show commit logs
+.SH "SYNOPSIS"
+
+
+git\-log <option>...
+
+.SH "DESCRIPTION"
+
+
+Shows the commit logs\&. This command internally invokes git\-rev\-list, and the command line options are passed to that command\&.
+
+
+This manual page describes only the most frequently used options\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-pretty=<format>
+Controls the way the commit log is formatted\&.
+
+.TP
+\-\-max\-count=<n>
+Limits the number of commits to show\&.
+
+.TP
+<since>\&.\&.<until>
+Show only commits between the named two commits\&.
+
+.SH "EXAMPLES"
+
+.TP
+git log \-\-no\-merges
+Show the whole commit history, but skip any merges
+
+.TP
+git log v2\&.6\&.12\&.\&. include/scsi drivers/scsi
+Show all commits since version v2\&.6\&.12 that changed any file in the include/scsi or drivers/scsi subdirectories
+
+.TP
+git log \-\-since="2 weeks ago" -- gitk
+Show the changes during the last two weeks to the file gitk\&. The "\-\-" is necessary to avoid confusion with the branch named gitk 
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-lost-found.1 b/man1/git-lost-found.1
new file mode 100755 (executable)
index 0000000..79d6624
--- /dev/null
@@ -0,0 +1,85 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LOST-FOUND" 1 "" "" ""
+.SH NAME
+git-lost-found \- Recover lost refs that luckily have not yet been pruned.
+.SH "SYNOPSIS"
+
+
+git\-lost\-found
+
+.SH "DESCRIPTION"
+
+
+Finds dangling commits and tags from the object database, and creates refs to them in \&.git/lost\-found/ directory\&. Commits and tags that dereference to commits go to \&.git/lost\-found/commit and others are stored in \&.git/lost\-found/other directory\&.
+
+.SH "OUTPUT"
+
+
+One line description from the commit and tag found along with their object name are printed on the standard output\&.
+
+.SH "EXAMPLE"
+
+
+Suppose you run git tag \-f and mistyped the tag to overwrite\&. The ref to your tag is overwritten, but until you run git prune, it is still there\&.
+
+.IP
+$ git lost\-found
+[1ef2b196d909eed523d4f3c9bf54b78cdd6843c6] GIT 0\&.99\&.9c
+\&.\&.\&.
+
+Also you can use gitk to browse how they relate to each other and existing (probably old) tags\&.
+
+.IP
+$ gitk $(cd \&.git/lost\-found/commit && echo ??*)
+
+After making sure that it is the object you are looking for, you can reconnect it to your regular \&.git/refs hierarchy\&.
+
+.IP
+$ git cat\-file \-t 1ef2b196
+tag
+$ git cat\-file tag 1ef2b196
+object fa41bbce8e38c67a218415de6cfa510c7e50032a
+type commit
+tag v0\&.99\&.9c
+tagger Junio C Hamano <junkio@cox\&.net> 1131059594 \-0800
+
+GIT 0\&.99\&.9c
+
+This contains the following changes from the "master" branch, since
+\&.\&.\&.
+$ git update\-ref refs/tags/not\-lost\-anymore 1ef2b196
+$ git rev\-parse not\-lost\-anymore
+1ef2b196d909eed523d4f3c9bf54b78cdd6843c6
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano &#28657;&#37326; &#32020; <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-ls-files.1 b/man1/git-ls-files.1
new file mode 100755 (executable)
index 0000000..b2797e5
--- /dev/null
@@ -0,0 +1,221 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LS-FILES" 1 "" "" ""
+.SH NAME
+git-ls-files \- Information about files in the index/working directory
+.SH "SYNOPSIS"
+
+
+git\-ls\-files [\-z] [\-t] (\-\-[cached|deleted|others|ignored|stage|unmerged|killed|modified])* (\-[c|d|o|i|s|u|k|m])* [\-x <pattern>|\-\-exclude=<pattern>] [\-X <file>|\-\-exclude\-from=<file>] [\-\-exclude\-per\-directory=<file>] [\-\-full\-name] [\-\-] [<file>]*
+
+.SH "DESCRIPTION"
+
+
+This merges the file listing in the directory cache index with the actual working directory list, and shows different combinations of the two\&.
+
+
+One or more of the options below may be used to determine the files shown:
+
+.SH "OPTIONS"
+
+.TP
+\-c|\-\-cached
+Show cached files in the output (default)
+
+.TP
+\-d|\-\-deleted
+Show deleted files in the output
+
+.TP
+\-m|\-\-modified
+Show modified files in the output
+
+.TP
+\-o|\-\-others
+Show other files in the output
+
+.TP
+\-i|\-\-ignored
+Show ignored files in the output Note the this also reverses any exclude list present\&.
+
+.TP
+\-s|\-\-stage
+Show stage files in the output
+
+.TP
+\-u|\-\-unmerged
+Show unmerged files in the output (forces \-\-stage)
+
+.TP
+\-k|\-\-killed
+Show files on the filesystem that need to be removed due to file/directory conflicts for checkout\-index to succeed\&.
+
+.TP
+\-z
+\\0 line termination on output\&.
+
+.TP
+\-x|\-\-exclude=<pattern>
+Skips files matching pattern\&. Note that pattern is a shell wildcard pattern\&.
+
+.TP
+\-X|\-\-exclude\-from=<file>
+exclude patterns are read from <file>; 1 per line\&.
+
+.TP
+\-\-exclude\-per\-directory=<file>
+read additional exclude patterns that apply only to the directory and its subdirectories in <file>\&.
+
+.TP
+\-t
+Identify the file status with the following tags (followed by a space) at the start of each line:
+H
+cached
+M
+unmerged
+R
+removed/deleted
+C
+modifed/changed
+K
+to be killed ? other
+
+.TP
+\-\-full\-name
+When run from a subdirectory, the command usually outputs paths relative to the current directory\&. This option forces paths to be output relative to the project top directory\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.TP
+<file>
+Files to show\&. If no files are given all files which match the other specified criteria are shown\&.
+
+.SH "OUTPUT"
+
+
+show files just outputs the filename unless \-\-stage is specified in which case it outputs:
+
+.nf
+[<tag> ]<mode> <object> <stage> <file>
+.fi
+
+
+"git\-ls\-files \-\-unmerged" and "git\-ls\-files \-\-stage" can be used to examine detailed information on unmerged paths\&.
+
+
+For an unmerged path, instead of recording a single mode/SHA1 pair, the dircache records up to three such pairs; one from tree O in stage 1, A in stage 2, and B in stage 3\&. This information can be used by the user (or the porcelain) to see what should eventually be recorded at the path\&. (see git\-read\-tree for more information on state)
+
+
+When \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "EXCLUDE PATTERNS"
+
+
+git\-ls\-files can use a list of "exclude patterns" when traversing the directory tree and finding files to show when the flags \-\-others or \-\-ignored are specified\&.
+
+
+These exclude patterns come from these places:
+
+.TP 3
+1.
+command line flag \-\-exclude=<pattern> specifies a single pattern\&.
+.TP
+2.
+command line flag \-\-exclude\-from=<file> specifies a list of patterns stored in a file\&.
+.TP
+3.
+command line flag \-\-exclude\-per\-directory=<name> specifies a name of the file in each directory git\-ls\-files examines, and if exists, its contents are used as an additional list of patterns\&.
+.LP
+
+
+An exclude pattern file used by (2) and (3) contains one pattern per line\&. A line that starts with a # can be used as comment for readability\&.
+
+
+There are three lists of patterns that are in effect at a given time\&. They are built and ordered in the following way:
+
+.TP 3
+\(bu
+\-\-exclude=<pattern> from the command line; patterns are ordered in the same order as they appear on the command line\&.
+.TP
+\(bu
+lines read from \-\-exclude\-from=<file>; patterns are ordered in the same order as they appear in the file\&.
+.TP
+\(bu
+When \-\-exclude\-per\-directory=<name> is specified, upon entering a directory that has such a file, its contents are appended at the end of the current "list of patterns"\&. They are popped off when leaving the directory\&.
+.LP
+
+
+Each pattern in the pattern list specifies "a match pattern" and optionally the fate; either a file that matches the pattern is considered excluded or included\&. A filename is matched against the patterns in the three lists; the \-\-exclude\-from list is checked first, then the \-\-exclude\-per\-directory list, and then finally the \-\-exclude list\&. The last match determines its fate\&. If there is no match in the three lists, the fate is "included"\&.
+
+
+A pattern specified on the command line with \-\-exclude or read from the file specified with \-\-exclude\-from is relative to the top of the directory tree\&. A pattern read from a file specified by \-\-exclude\-per\-directory is relative to the directory that the pattern file appears in\&.
+
+
+An exclude pattern is of the following format:
+
+.TP 3
+\(bu
+an optional prefix ! which means that the fate this pattern specifies is "include", not the usual "exclude"; the remainder of the pattern string is interpreted according to the following rules\&.
+.TP
+\(bu
+if it does not contain a slash /, it is a shell glob pattern and used to match against the filename without leading directories (i\&.e\&. the same way as the current implementation)\&.
+.TP
+\(bu
+otherwise, it is a shell glob pattern, suitable for consumption by fnmatch(3) with FNM_PATHNAME flag\&. I\&.e\&. a slash in the pattern must match a slash in the pathname\&. "Documentation/*\&.html" matches "Documentation/git\&.html" but not "ppc/ppc\&.html"\&. As a natural exception, "/*\&.c" matches "cat\-file\&.c" but not "mozilla\-sha1/sha1\&.c"\&.
+.LP
+
+
+An example:
+
+.IP
+    $ cat \&.git/ignore
+    # ignore objects and archives, anywhere in the tree\&.
+    *\&.[oa]
+    $ cat Documentation/\&.gitignore
+    # ignore generated html files,
+    *\&.html
+    # except foo\&.html which is maintained by hand
+    !foo\&.html
+    $ git\-ls\-files \-\-ignored \\
+        \-\-exclude='Documentation/*\&.[0\-9]' \\
+        \-\-exclude\-from=\&.git/ignore \\
+        \-\-exclude\-per\-directory=\&.gitignore
+.SH "SEE ALSO"
+
+
+\fBgit\-read\-tree\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-ls-remote.1 b/man1/git-ls-remote.1
new file mode 100755 (executable)
index 0000000..5fdd83b
--- /dev/null
@@ -0,0 +1,77 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LS-REMOTE" 1 "" "" ""
+.SH NAME
+git-ls-remote \- Look at references other repository has.
+.SH "SYNOPSIS"
+
+
+git\-ls\-remote [\-\-heads] [\-\-tags] <repository> <refs>...
+
+.SH "DESCRIPTION"
+
+
+Displays the references other repository has\&.
+
+.SH "OPTIONS"
+
+.TP
+\-h|\-\-heads, \-t|\-\-tags
+Limit to only refs/heads and refs/tags, respectively\&. These options are _not_ mutually exclusive; when given both, references stored in refs/heads and refs/tags are displayed\&.
+
+.TP
+<repository>
+Location of the repository\&. The shorthand defined in $GIT_DIR/branches/ can be used\&.
+
+.TP
+<refs>...
+When unspecified, all references, after filtering done with \-\-heads and \-\-tags, are shown\&. When <refs>... are specified, only references matching the given patterns are displayed\&.
+
+.SH "EXAMPLES"
+
+.nf
+$ git ls\-remote \-\-tags \&./\&.
+d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0\&.99
+f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0\&.99\&.1
+7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0\&.99\&.3
+c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0\&.99\&.2
+0918385dbd9656cab0d1d81ba7453d49bbc16250        refs/tags/junio\-gpg\-pub
+$ git ls\-remote http://www\&.kernel\&.org/pub/scm/git/git\&.git master pu rc
+5fe978a5381f1fbad26a80e682ddd2a401966740        refs/heads/master
+c781a84b5204fb294c9ccc79f8b3baceeb32c061        refs/heads/pu
+b1d096f2926c4e37c9c0b6a7bf2119bedaa277cb        refs/heads/rc
+$ echo http://www\&.kernel\&.org/pub/scm/git/git\&.git >\&.git/branches/public
+$ git ls\-remote \-\-tags public v\\*
+d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0\&.99
+f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0\&.99\&.1
+c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0\&.99\&.2
+7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0\&.99\&.3
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-ls-tree.1 b/man1/git-ls-tree.1
new file mode 100755 (executable)
index 0000000..7cc011a
--- /dev/null
@@ -0,0 +1,89 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-LS-TREE" 1 "" "" ""
+.SH NAME
+git-ls-tree \- Lists the contents of a tree object.
+.SH "SYNOPSIS"
+
+
+git\-ls\-tree [\-d] [\-r] [\-t] [\-z] [\-\-name\-only] [\-\-name\-status] <tree\-ish> [paths...]
+
+.SH "DESCRIPTION"
+
+
+Lists the contents of a given tree object, like what "/bin/ls \-a" does in the current working directory\&. Note that the usage is subtly different, though \- paths denote just a list of patterns to match, e\&.g\&. so specifying directory name (without \-r) will behave differently, and order of the arguments does not matter\&.
+
+.SH "OPTIONS"
+
+.TP
+<tree\-ish>
+Id of a tree\-ish\&.
+
+.TP
+\-d
+Show only the named tree entry itself, not its children\&.
+
+.TP
+\-r
+Recurse into sub\-trees\&.
+
+.TP
+\-t
+Show tree entries even when going to recurse them\&. Has no effect if \-r was not passed\&. \-d implies \-t\&.
+
+.TP
+\-z
+\\0 line termination on output\&.
+
+.TP
+\-\-name\-only, \-\-name\-status, 
+List only filenames (instead of the "long" output), one per line\&.
+
+.TP
+paths
+When paths are given, show them (note that this isn't really raw pathnames, but rather a list of patterns to match)\&. Otherwise implicitly uses the root level of the tree as the sole path argument\&.
+
+.SH "OUTPUT FORMAT"
+
+.nf
+<mode> SP <type> SP <object> TAB <file>
+.fi
+
+
+When the \-z option is not used, TAB, LF, and backslash characters in pathnames are represented as \\t, \\n, and \\\\, respectively\&.
+
+.SH "AUTHOR"
+
+
+Written by Petr Baudis <pasky@suse\&.cz> Completely rewritten from scratch by Junio C Hamano <junkio@cox\&.net>, another major rewrite by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+
+This manual page is a stub\&. You can help the git documentation by expanding it\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-mailinfo.1 b/man1/git-mailinfo.1
new file mode 100755 (executable)
index 0000000..041074c
--- /dev/null
@@ -0,0 +1,69 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MAILINFO" 1 "" "" ""
+.SH NAME
+git-mailinfo \- Extracts patch from a single e-mail message.
+.SH "SYNOPSIS"
+
+
+git\-mailinfo [\-k] [\-u | \-\-encoding=<encoding>] <msg> <patch>
+
+.SH "DESCRIPTION"
+
+
+Reading a single e\-mail message from the standard input, and writes the commit log message in <msg> file, and the patches in <patch> file\&. The author name, e\-mail and e\-mail subject are written out to the standard output to be used by git\-applypatch to create a commit\&. It is usually not necessary to use this command directly\&.
+
+.SH "OPTIONS"
+
+.TP
+\-k
+Usually the program cleans up the Subject: header line to extract the title line for the commit log message, among which (1) remove Re: or re:, (2) leading whitespaces, (3) [ up to ], typically [PATCH], and then prepends "[PATCH] "\&. This flag forbids this munging, and is most useful when used to read back git format\-patch \-\-mbox output\&.
+
+.TP
+\-u
+By default, the commit log message, author name and author email are taken from the e\-mail without any charset conversion, after minimally decoding MIME transfer encoding\&. This flag causes the resulting commit to be encoded in the encoding specified by i18n\&.commitencoding configuration (defaults to utf\-8) by transliterating them\&. Note that the patch is always used as is without charset conversion, even with this flag\&.
+
+.TP
+\-\-encoding=<encoding>
+Similar to \-u but if the local convention is different from what is specified by i18n\&.commitencoding, this flag can be used to override it\&.
+
+.TP
+<msg>
+The commit log message extracted from e\-mail, usually except the title line which comes from e\-mail Subject\&.
+
+.TP
+<patch>
+The patch extracted from e\-mail\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-mailsplit.1 b/man1/git-mailsplit.1
new file mode 100755 (executable)
index 0000000..18a9a5d
--- /dev/null
@@ -0,0 +1,69 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MAILSPLIT" 1 "" "" ""
+.SH NAME
+git-mailsplit \- Totally braindamaged mbox splitter program.
+.SH "SYNOPSIS"
+
+
+git\-mailsplit [\-b] [\-f<nn>] [\-d<prec>] \-o<directory> [\-\-] [<mbox>...]
+
+.SH "DESCRIPTION"
+
+
+Splits a mbox file into a list of files: "0001" "0002" \&.\&. in the specified directory so you can process them further from there\&.
+
+.SH "OPTIONS"
+
+.TP
+<mbox>
+Mbox file to split\&. If not given, the mbox is read from the standard input\&.
+
+.TP
+<directory>
+Directory in which to place the individual messages\&.
+
+.TP
+\-b
+If any file doesn't begin with a From line, assume it is a single mail message instead of signalling error\&.
+
+.TP
+\-d<prec>
+Instead of the default 4 digits with leading zeros, different precision can be specified for the generated filenames\&.
+
+.TP
+\-f<nn>
+Skip the first <nn> numbers, for example if \-f3 is specified, start the numbering with 0004\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-merge-base.1 b/man1/git-merge-base.1
new file mode 100755 (executable)
index 0000000..6d466c5
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MERGE-BASE" 1 "" "" ""
+.SH NAME
+git-merge-base \- Finds as good a common ancestor as possible for a merge
+.SH "SYNOPSIS"
+
+
+git\-merge\-base <commit> <commit>
+
+.SH "DESCRIPTION"
+
+
+"git\-merge\-base" finds as good a common ancestor as possible\&. Given a selection of equally good common ancestors it should not be relied on to decide in any particular way\&.
+
+
+The "git\-merge\-base" algorithm is still in flux \- use the source...
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-merge-index.1 b/man1/git-merge-index.1
new file mode 100755 (executable)
index 0000000..5d68938
--- /dev/null
@@ -0,0 +1,103 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MERGE-INDEX" 1 "" "" ""
+.SH NAME
+git-merge-index \- Runs a merge for files needing merging
+.SH "SYNOPSIS"
+
+
+git\-merge\-index [\-o] [\-q] <merge\-program> (\-a | -- | <file>*)
+
+.SH "DESCRIPTION"
+
+
+This looks up the <file>(s) in the index and, if there are any merge entries, passes the SHA1 hash for those files as arguments 1, 2, 3 (empty argument if no file), and <file> as argument 4\&. File modes for the three files are passed as arguments 5, 6 and 7\&.
+
+.SH "OPTIONS"
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.TP
+\-a
+Run merge against all files in the index that need merging\&.
+
+.TP
+\-o
+Instead of stopping at the first failed merge, do all of them in one shot \- continue with merging even when previous merges returned errors, and only return the error code after all the merges are over\&.
+
+.TP
+\-q
+Do not complain about failed merge program (the merge program failure usually indicates conflicts during merge)\&. This is for porcelains which might want to emit custom messages\&.
+
+
+If "git\-merge\-index" is called with multiple <file>s (or \-a) then it processes them in turn only stopping if merge returns a non\-zero exit code\&.
+
+
+Typically this is run with the a script calling the merge command from the RCS package\&.
+
+
+A sample script called "git\-merge\-one\-file" is included in the distribution\&.
+
+
+ALERT ALERT ALERT! The git "merge object order" is different from the RCS "merge" program merge object order\&. In the above ordering, the original is first\&. But the argument order to the 3\-way merge program "merge" is to have the original in the middle\&. Don't ask me why\&.
+
+
+Examples:
+
+.nf
+torvalds@ppc970:~/merge\-test> git\-merge\-index cat MM
+This is MM from the original tree\&.                    # original
+This is modified MM in the branch A\&.                  # merge1
+This is modified MM in the branch B\&.                  # merge2
+This is modified MM in the branch B\&.                  # current contents
+.fi
+
+
+or
+
+.nf
+torvalds@ppc970:~/merge\-test> git\-merge\-index cat AA MM
+cat: : No such file or directory
+This is added AA in the branch A\&.
+This is added AA in the branch B\&.
+This is added AA in the branch B\&.
+fatal: merge program failed
+.fi
+
+
+where the latter example shows how "git\-merge\-index" will stop trying to merge once anything has returned an error (ie "cat" returned an error for the AA file, because it didn't exist in the original, and thus "git\-merge\-index" didn't even try to merge the MM thing)\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> One\-shot merge by Petr Baudis <pasky@ucw\&.cz>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-merge-one-file.1 b/man1/git-merge-one-file.1
new file mode 100755 (executable)
index 0000000..9033967
--- /dev/null
@@ -0,0 +1,47 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MERGE-ONE-FILE" 1 "" "" ""
+.SH NAME
+git-merge-one-file \- The standard helper program to use with "git-merge-index"
+.SH "SYNOPSIS"
+
+
+git\-merge\-one\-file
+
+.SH "DESCRIPTION"
+
+
+This is the standard helper program to use with "git\-merge\-index" to resolve a merge after the trivial merge done with "git\-read\-tree \-m"\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>, Junio C Hamano <junkio@cox\&.net> and Petr Baudis <pasky@suse\&.cz>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-merge.1 b/man1/git-merge.1
new file mode 100755 (executable)
index 0000000..1e15151
--- /dev/null
@@ -0,0 +1,169 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MERGE" 1 "" "" ""
+.SH NAME
+git-merge \- Grand Unified Merge Driver
+.SH "SYNOPSIS"
+
+
+git\-merge [\-n] [\-\-no\-commit] [\-s <strategy>]... <msg> <head> <remote> <remote>...
+
+.SH "DESCRIPTION"
+
+
+This is the top\-level user interface to the merge machinery which drives multiple merge strategy scripts\&.
+
+.SH "OPTIONS"
+
+.TP
+\-n, \-\-no\-summary
+Do not show diffstat at the end of the merge\&.
+
+.TP
+\-\-no\-commit
+Perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing\&.
+
+.TP
+\-s <strategy>, \-\-strategy=<strategy>
+Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried\&. If there is no \-s option, a built\-in list of strategies is used instead (git\-merge\-recursive when merging a single head, git\-merge\-octopus otherwise)\&.
+
+.TP
+<msg>
+The commit message to be used for the merge commit (in case it is created)\&. The git\-fmt\-merge\-msg script can be used to give a good default for automated git\-merge invocations\&.
+
+.TP
+<head>
+our branch head commit\&.
+
+.TP
+<remote>
+other branch head merged into our branch\&. You need at least one <remote>\&. Specifying more than one <remote> obviously means you are trying an Octopus\&.
+
+.SH "MERGE STRATEGIES"
+
+.TP
+resolve
+This can only resolve two heads (i\&.e\&. the current branch and another branch you pulled from) using 3\-way merge algorithm\&. It tries to carefully detect criss\-cross merge ambiguities and is considered generally safe and fast\&.
+
+.TP
+recursive
+This can only resolve two heads using 3\-way merge algorithm\&. When there are more than one common ancestors that can be used for 3\-way merge, it creates a merged tree of the common ancestors and uses that as the reference tree for the 3\-way merge\&. This has been reported to result in fewer merge conflicts without causing mis\-merges by tests done on actual merge commits taken from Linux 2\&.6 kernel development history\&. Additionally this can detect and handle merges involving renames\&. This is the default merge strategy when pulling or merging one branch\&.
+
+.TP
+octopus
+This resolves more than two\-head case, but refuses to do complex merge that needs manual resolution\&. It is primarily meant to be used for bundling topic branch heads together\&. This is the default merge strategy when pulling or merging more than one branches\&.
+
+.TP
+ours
+This resolves any number of heads, but the result of the merge is always the current branch head\&. It is meant to be used to supersede old development history of side branches\&.
+
+
+If you tried a merge which resulted in a complex conflicts and would want to start over, you can recover with \fBgit\-reset\fR(1)\&.
+
+.SH "HOW MERGE WORKS"
+
+
+A merge is always between the current HEAD and one or more remote branch heads, and the index file must exactly match the tree of HEAD commit (i\&.e\&. the contents of the last commit) when it happens\&. In other words, git\-diff \-\-cached HEAD must report no changes\&.
+
+.RS
+.Sh "Note"
+
+
+This is a bit of lie\&. In certain special cases, your index are allowed to be different from the tree of HEAD commit\&. The most notable case is when your HEAD commit is already ahead of what is being merged, in which case your index can have arbitrary difference from your HEAD commit\&. Otherwise, your index entries are allowed have differences from your HEAD commit that match the result of trivial merge (e\&.g\&. you received the same patch from external source to produce the same result as what you are merging)\&. For example, if a path did not exist in the common ancestor and your head commit but exists in the tree you are merging into your repository, and if you already happen to have that path exactly in your index, the merge does not have to fail\&.
+
+.RE
+
+
+Otherwise, merge will refuse to do any harm to your repository (that is, it may fetch the objects from remote, and it may even update the local branch used to keep track of the remote branch with git pull remote rbranch:lbranch, but your working tree, \&.git/HEAD pointer and index file are left intact)\&.
+
+
+You may have local modifications in the working tree files\&. In other words, git\-diff is allowed to report changes\&. However, the merge uses your working tree as the working area, and in order to prevent the merge operation from losing such changes, it makes sure that they do not interfere with the merge\&. Those complex tables in read\-tree documentation define what it means for a path to "interfere with the merge"\&. And if your local modifications interfere with the merge, again, it stops before touching anything\&.
+
+
+So in the above two "failed merge" case, you do not have to worry about lossage of data \-\-\- you simply were not ready to do a merge, so no merge happened at all\&. You may want to finish whatever you were in the middle of doing, and retry the same pull after you are done and ready\&.
+
+
+When things cleanly merge, these things happen:
+
+.TP 3
+1.
+the results are updated both in the index file and in your working tree,
+.TP
+2.
+index file is written out as a tree,
+.TP
+3.
+the tree gets committed, and
+.TP
+4.
+the HEAD pointer gets advanced\&.
+.LP
+
+
+Because of 2\&., we require that the original state of the index file to match exactly the current HEAD commit; otherwise we will write out your local changes already registered in your index file along with the merge result, which is not good\&. Because 1\&. involves only the paths different between your branch and the remote branch you are pulling from during the merge (which is typically a fraction of the whole tree), you can have local modifications in your working tree as long as they do not overlap with what the merge updates\&.
+
+
+When there are conflicts, these things happen:
+
+.TP 3
+1.
+ HEAD stays the same\&.
+.TP
+2.
+Cleanly merged paths are updated both in the index file and in your working tree\&.
+.TP
+3.
+For conflicting paths, the index file records up to three versions; stage1 stores the version from the common ancestor, stage2 from HEAD, and stage3 from the remote branch (you can inspect the stages with git\-ls\-files \-u)\&. The working tree files have the result of "merge" program; i\&.e\&. 3\-way merge result with familiar conflict markers <<< === >>>\&.
+.TP
+4.
+No other changes are done\&. In particular, the local modifications you had before you started merge will stay the same and the index entries for them stay as they were, i\&.e\&. matching HEAD\&.
+.LP
+
+
+After seeing a conflict, you can do two things:
+
+.TP 3
+\(bu
+Decide not to merge\&. The only clean\-up you need are to reset the index file to the HEAD commit to reverse 2\&. and to clean up working tree changes made by 2\&. and 3\&.; git\-reset can be used for this\&.
+.TP
+\(bu
+Resolve the conflicts\&. git\-diff would report only the conflicting paths because of the above 2\&. and 3\&.\&. Edit the working tree files into a desirable shape, git\-update\-index them, to make the index file contain what the merge result should be, and run git\-commit to commit the result\&.
+.LP
+
+.SH "SEE ALSO"
+
+
+\fBgit\-fmt\-merge\-msg\fR(1), \fBgit\-pull\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-mktag.1 b/man1/git-mktag.1
new file mode 100755 (executable)
index 0000000..60758bc
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MKTAG" 1 "" "" ""
+.SH NAME
+git-mktag \- Creates a tag object
+.SH "SYNOPSIS"
+
+
+git\-mktag < signature_file
+
+.SH "DESCRIPTION"
+
+
+Reads a tag contents on standard input and creates a tag object that can also be used to sign other objects\&.
+
+
+The output is the new tag's <object> identifier\&.
+
+.SH "TAG FORMAT"
+
+
+A tag signature file has a very simple fixed format: three lines of
+
+.nf
+object <sha1>
+type <typename>
+tag <tagname>
+.fi
+
+
+followed by some optional free\-form signature that git itself doesn't care about, but that can be verified with gpg or similar\&.
+
+
+The size of the full object is artificially limited to 8kB\&. (Just because I'm a lazy bastard, and if you can't fit a signature in that size, you're doing something wrong)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-mv.1 b/man1/git-mv.1
new file mode 100755 (executable)
index 0000000..e2b0d90
--- /dev/null
@@ -0,0 +1,72 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-MV" 1 "" "" ""
+.SH NAME
+git-mv \- Script used to move or rename a file, directory or symlink.
+.SH "SYNOPSIS"
+
+
+git\-mv <options>... <args>...
+
+.SH "DESCRIPTION"
+
+
+This script is used to move or rename a file, directory or symlink\&.
+
+.nf
+git\-mv [\-f] [\-n] <source> <destination>
+git\-mv [\-f] [\-n] [\-k] <source> \&.\&.\&. <destination directory>
+.fi
+
+
+In the first form, it renames <source>, which must exist and be either a file, symlink or directory, to <destination>\&. In the second form, the last argument has to be an existing directory; the given sources will be moved into this directory\&.
+
+
+The index is updated after successful completion, but the change must still be committed\&.
+
+.SH "OPTIONS"
+
+.TP
+\-f
+Force renaming or moving of a file even if the target exists
+
+.TP
+\-k
+Skip move or rename actions which would lead to an error condition\&. An error happens when a source is neither existing nor controlled by GIT, or when it would overwrite an existing file unless \-f is given\&.
+
+.TP
+\-n
+Do nothing; only show what would happen
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> Rewritten by Ryan Anderson <ryan@michonline\&.com> Move functionality added by Josef Weidendorfer <Josef\&.Weidendorfer@gmx\&.de>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-name-rev.1 b/man1/git-name-rev.1
new file mode 100755 (executable)
index 0000000..f5caa9e
--- /dev/null
@@ -0,0 +1,79 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-NAME-REV" 1 "" "" ""
+.SH NAME
+git-name-rev \- Find symbolic names for given revs.
+.SH "SYNOPSIS"
+
+
+git\-name\-rev [\-\-tags] ( \-\-all | \-\-stdin | <commitish>... )
+
+.SH "DESCRIPTION"
+
+
+Finds symbolic names suitable for human digestion for revisions given in any format parsable by git\-rev\-parse\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-tags
+Do not use branch names, but only tags to name the commits
+
+.TP
+\-\-all
+List all commits reachable from all refs
+
+.TP
+\-\-stdin
+Read from stdin, append "(<rev_name>)" to all sha1's of name'able commits, and pass to stdout
+
+.SH "EXAMPLE"
+
+
+Given a commit, find out where it is relative to the local refs\&. Say somebody wrote you about that phantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a\&. Of course, you look into the commit, but that only tells you what happened, but not the context\&.
+
+
+Enter git\-name\-rev:
+
+.IP
+% git name\-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
+
+Now you are wiser, because you know that it happened 940 revisions before v0\&.99\&.
+
+
+Another nice thing you can do is:
+
+.IP
+% git log | git name\-rev \-\-stdin
+.SH "AUTHOR"
+
+
+Written by Johannes Schindelin <Johannes\&.Schindelin@gmx\&.de>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Johannes Schindelin\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-pack-objects.1 b/man1/git-pack-objects.1
new file mode 100755 (executable)
index 0000000..e3019ac
--- /dev/null
@@ -0,0 +1,87 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PACK-OBJECTS" 1 "" "" ""
+.SH NAME
+git-pack-objects \- Create a packed archive of objects.
+.SH "SYNOPSIS"
+
+
+git\-pack\-objects [\-\-non\-empty] [\-\-local] [\-\-incremental] [\-\-window=N] [\-\-depth=N] {\-\-stdout | base\-name} < object\-list
+
+.SH "DESCRIPTION"
+
+
+Reads list of objects from the standard input, and writes a packed archive with specified base\-name, or to the standard output\&.
+
+
+A packed archive is an efficient way to transfer set of objects between two repositories, and also is an archival format which is efficient to access\&. The packed archive format (\&.pack) is designed to be unpackable without having anything else, but for random access, accompanied with the pack index file (\&.idx)\&.
+
+
+git\-unpack\-objects command can read the packed archive and expand the objects contained in the pack into "one\-file one\-object" format; this is typically done by the smart\-pull commands when a pack is created on\-the\-fly for efficient network transport by their peers\&.
+
+
+Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES) enables git to read from such an archive\&.
+
+.SH "OPTIONS"
+
+.TP
+base\-name
+Write into a pair of files (\&.pack and \&.idx), using <base\-name> to determine the name of the created file\&. When this option is used, the two files are written in <base\-name>\-<SHA1>\&.{pack,idx} files\&. <SHA1> is a hash of object names (currently in random order so it does not have any useful meaning) to make the resulting filename reasonably unique, and written to the standard output of the command\&.
+
+.TP
+\-\-stdout
+Write the pack contents (what would have been writtin to \&.pack file) out to the standard output\&.
+
+.TP
+\-\-window and \-\-depth
+These two options affects how the objects contained in the pack are stored using delta compression\&. The objects are first internally sorted by type, size and optionally names and compared against the other objects within \-\-window to see if using delta compression saves space\&. \-\-depth limits the maximum delta depth; making it too deep affects the performance on the unpacker side, because delta data needs to be applied that many times to get to the necessary object\&.
+
+.TP
+\-\-incremental
+This flag causes an object already in a pack ignored even if it appears in the standard input\&.
+
+.TP
+\-\-local
+This flag is similar to \-\-incremental; instead of ignoring all packed objects, it only ignores objects that are packed and not in the local object store (i\&.e\&. borrowed from an alternate)\&.
+
+.TP
+\-\-non\-empty
+Only create a packed archive if it would contain at least one object\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano
+
+.SH "SEE-ALSO"
+
+
+\fBgit\-repack\fR(1) \fBgit\-prune\-packed\fR(1)
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-pack-redundant.1 b/man1/git-pack-redundant.1
new file mode 100755 (executable)
index 0000000..58e2ed4
--- /dev/null
@@ -0,0 +1,72 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PACK-REDUNDANT" 1 "" "" ""
+.SH NAME
+git-pack-redundant \- Program used to find redundant pack files.
+.SH "SYNOPSIS"
+
+
+git\-pack\-redundant [ \-\-verbose ] [ \-\-alt\-odb ] < \-\-all | \&.pack filename ... >
+
+.SH "DESCRIPTION"
+
+
+This program computes which packs in your repository are redundant\&. The output is suitable for piping to xargs rm if you are in the root of the repository\&.
+
+
+git\-pack\-redundant accepts a list of objects on standard input\&. Any objects given will be ignored when checking which packs are required\&. This makes the following command useful when wanting to remove packs which contain unreachable objects\&.
+
+
+git\-fsck\-objects \-\-full \-\-unreachable | cut \-d \-f3 | git\-pack\-redundant \-\-all | xargs rm
+
+.SH "OPTIONS"
+
+.TP
+\-\-all
+Processes all packs\&. Any filenames on the commandline are ignored\&.
+
+.TP
+\-\-alt\-odb
+Don't require objects present in packs from alternate object directories to be present in local packs\&.
+
+.TP
+\-\-verbose
+Outputs some statistics to stderr\&. Has a small performance penalty\&.
+
+.SH "AUTHOR"
+
+
+Written by Lukas Sandstr&#246;m <lukass@etek\&.chalmers\&.se>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Lukas Sandstr&#246;m <lukass@etek\&.chalmers\&.se>
+
+.SH "SEE-ALSO"
+
+
+\fBgit\-pack\-objects\fR(1) \fBgit\-repack\fR(1) \fBgit\-prune\-packed\fR(1)
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-parse-remote.1 b/man1/git-parse-remote.1
new file mode 100755 (executable)
index 0000000..de19a93
--- /dev/null
@@ -0,0 +1,58 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PARSE-REMOTE" 1 "" "" ""
+.SH NAME
+git-parse-remote \- Routines to help parsing $GIT_DIR/remotes/
+.SH "SYNOPSIS"
+
+
+\&. git\-parse\-remote
+
+.SH "DESCRIPTION"
+
+
+This script is included in various scripts to supply routines to parse files under $GIT_DIR/remotes/ and $GIT_DIR/branches/\&.
+
+
+The primary entry points are:
+
+.TP
+get_remote_refs_for_fetch
+Given the list of user\-supplied <repo> <refspec>..., return the list of refs to fetch after canonicalizing them into $GIT_DIR relative paths (e\&.g\&. refs/heads/foo)\&. When <refspec>... is empty the returned list of refs consists of the defaults for the given <repo>, if specified in $GIT_DIR/remotes/ or $GIT_DIR/branches/\&.
+
+.TP
+get_remote_refs_for_push
+Given the list of user\-supplied <repo> <refspec>..., return the list of refs to push in a form suitable to be fed to the git\-send\-pack command\&. When <refspec>... is empty the returned list of refs consists of the defaults for the given <repo>, if specified in $GIT_DIR/remotes/\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-patch-id.1 b/man1/git-patch-id.1
new file mode 100755 (executable)
index 0000000..af97afb
--- /dev/null
@@ -0,0 +1,59 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PATCH-ID" 1 "" "" ""
+.SH NAME
+git-patch-id \- Generate a patch ID.
+.SH "SYNOPSIS"
+
+
+git\-patch\-id < <patch>
+
+.SH "DESCRIPTION"
+
+
+A "patch ID" is nothing but a SHA1 of the diff associated with a patch, with whitespace and line numbers ignored\&. As such, it's "reasonably stable", but at the same time also reasonably unique, ie two patches that have the same "patch ID" are almost guaranteed to be the same thing\&.
+
+
+IOW, you can use this thing to look for likely duplicate commits\&.
+
+
+When dealing with git\-diff\-tree output, it takes advantage of the fact that the patch is prefixed with the object name of the commit, and outputs two 40\-byte hexadecimal string\&. The first string is the patch ID, and the second string is the commit ID\&. This can be used to make a mapping from patch ID to commit ID\&.
+
+.SH "OPTIONS"
+
+.TP
+<patch>
+The diff to create the ID of\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-peek-remote.1 b/man1/git-peek-remote.1
new file mode 100755 (executable)
index 0000000..86b6185
--- /dev/null
@@ -0,0 +1,61 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PEEK-REMOTE" 1 "" "" ""
+.SH NAME
+git-peek-remote \- Lists the references in a remote repository.
+.SH "SYNOPSIS"
+
+
+git\-peek\-remote [\-\-exec=<git\-upload\-pack>] [<host>:]<directory>
+
+.SH "DESCRIPTION"
+
+
+Lists the references the remote repository has, and optionally stores them in the local repository under the same name\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-exec=<git\-upload\-pack>
+Use this to specify the path to git\-upload\-pack on the remote side, if it is not found on your $PATH\&. Some installations of sshd ignores the user's environment setup scripts for login shells (e\&.g\&. \&.bash_profile) and your privately installed git may not be found on the system default $PATH\&. Another workaround suggested is to set up your $PATH in "\&.bashrc", but this flag is for people who do not want to pay the overhead for non\-interactive shells, but prefer having a lean \&.bashrc file (they set most of the things up in \&.bash_profile)\&.
+
+.TP
+<host>
+A remote host that houses the repository\&. When this part is specified, git\-upload\-pack is invoked via ssh\&.
+
+.TP
+<directory>
+The repository to sync from\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-prune-packed.1 b/man1/git-prune-packed.1
new file mode 100755 (executable)
index 0000000..dacb090
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PRUNE-PACKED" 1 "" "" ""
+.SH NAME
+git-prune-packed \- Program used to remove the extra object files that are now residing in a pack file.
+.SH "SYNOPSIS"
+
+
+git\-prune\-packed [\-n]
+
+.SH "DESCRIPTION"
+
+
+This program search the $GIT_OBJECT_DIR for all objects that currently exist in a pack file as well as the independent object directories\&.
+
+
+All such extra objects are removed\&.
+
+
+A pack is a collection of objects, individually compressed, with delta compression applied, stored in a single file, with an associated index file\&.
+
+
+Packs are used to reduce the load on mirror systems, backup engines, disk storage, etc\&.
+
+.SH "OPTIONS"
+
+.TP
+\-n
+Don't actually remove any objects, only show those that would have been removed\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Ryan Anderson <ryan@michonline\&.com>
+
+.SH "SEE-ALSO"
+
+
+\fBgit\-pack\-objects\fR(1) \fBgit\-repack\fR(1)
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-prune.1 b/man1/git-prune.1
new file mode 100755 (executable)
index 0000000..a3abd84
--- /dev/null
@@ -0,0 +1,68 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PRUNE" 1 "" "" ""
+.SH NAME
+git-prune \- Prunes all unreachable objects from the object database
+.SH "SYNOPSIS"
+
+
+git\-prune [\-n] [\-\-] [<head>...]
+
+.SH "DESCRIPTION"
+
+
+This runs git\-fsck\-objects \-\-unreachable using all the refs available in $GIT_DIR/refs, optionally with additional set of objects specified on the command line, and prunes all objects unreachable from any of these head objects from the object database\&. In addition, it prunes the unpacked objects that are also found in packs by running git prune\-packed\&.
+
+.SH "OPTIONS"
+
+.TP
+\-n
+Do not remove anything; just report what it would remove\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.TP
+<head>...
+In addition to objects reachable from any of our references, keep objects reachable from listed <head>s\&.
+
+.SH "EXAMPLE"
+
+
+To prune objects not used by your repository nor another that borrows from your repository via its \&.git/objects/info/alternates:
+
+.IP
+$ git prune $(cd \&.\&./another && $(git\-rev\-parse \-\-all))
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-pull.1 b/man1/git-pull.1
new file mode 100755 (executable)
index 0000000..e42911f
--- /dev/null
@@ -0,0 +1,281 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PULL" 1 "" "" ""
+.SH NAME
+git-pull \- Pull and merge from another repository.
+.SH "SYNOPSIS"
+
+
+git\-pull <options> <repository> <refspec>...
+
+.SH "DESCRIPTION"
+
+
+Runs git\-fetch with the given parameters, and calls git\-merge to merge the retrieved head(s) into the current branch\&.
+
+
+Note that you can use \&. (current directory) as the <repository> to pull from the local repository -- this is useful when merging local branches into the current branch\&.
+
+.SH "OPTIONS"
+
+.TP
+\-n, \-\-no\-summary
+Do not show diffstat at the end of the merge\&.
+
+.TP
+\-\-no\-commit
+Perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing\&.
+
+.TP
+\-s <strategy>, \-\-strategy=<strategy>
+Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried\&. If there is no \-s option, a built\-in list of strategies is used instead (git\-merge\-recursive when merging a single head, git\-merge\-octopus otherwise)\&.
+
+.TP
+\-a, \-\-append
+Append ref names and object names of fetched refs to the existing contents of \&.git/FETCH_HEAD\&. Without this option old data in \&.git/FETCH_HEAD will be overwritten\&.
+
+.TP
+\-f, \-\-force
+When git\-fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>\&. This option overrides that check\&.
+
+.TP
+\-t, \-\-tags
+By default, the git core utilities will not fetch and store tags under the same name as the remote repository; ask it to do so using \-\-tags\&. Using this option will bound the list of objects pulled to the remote tags\&. Commits in branches beyond the tags will be ignored\&.
+
+.TP
+\-u, \-\-update\-head\-ok
+By default git\-fetch refuses to update the head which corresponds to the current branch\&. This flag disables the check\&. Note that fetching into the current branch will not update the index and working directory, so use it with care\&.
+
+.TP
+<repository>
+The "remote" repository that is the source of a fetch or pull operation, or the destination of a push operation\&. One of the following notations can be used to name the remote repository:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+rsync://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+http://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+https://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~/path/to/repo\&.git
+.LP
+.RE
+.IP
+SSH Is the default transport protocol and also supports an scp\-like syntax\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:path/to/repo\&.git
+.LP
+.RE
+.IP
+To sync with a local directory, use:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+.RE
+.IP
+In addition to the above, as a short\-hand, the name of a file in $GIT_DIR/remotes directory can be given; the named file should be in the following format:
+
+
+.nf
+URL: one of the above URL format
+Push: <refspec>
+Pull: <refspec>
+.fi
+When such a short\-hand is specified in place of <repository> without <refspec> parameters on the command line, <refspec> specified on Push: lines or Pull: lines are used for git\-push and git\-fetch/git\-pull, respectively\&. Multiple Push: and and Pull: lines may be specified for additional branch mappings\&.
+
+The name of a file in $GIT_DIR/branches directory can be specified as an older notation short\-hand; the named file should contain a single line, a URL in one of the above formats, optionally followed by a hash # and the name of remote head (URL fragment notation)\&. $GIT_DIR/branches/<remote> file that stores a <url> without the fragment is equivalent to have this in the corresponding file in the $GIT_DIR/remotes/ directory\&.
+
+
+.nf
+URL: <url>
+Pull: refs/heads/master:<remote>
+.fi
+while having <url>#<head> is equivalent to
+
+.nf
+URL: <url>
+Pull: refs/heads/<head>:<remote>
+.fi
+
+.TP
+<refspec>
+The canonical format of a <refspec> parameter is +?<src>:<dst>; that is, an optional plus +, followed by the source ref, followed by a colon :, followed by the destination ref\&.
+
+When used in git\-push, the <src> side can be an arbitrary "SHA1 expression" that can be used as an argument to git\-cat\-file \-t\&. E\&.g\&. master~4 (push four parents before the current master head)\&.
+
+For git\-push, the local ref that matches <src> is used to fast forward the remote ref that matches <dst>\&. If the optional plus + is used, the remote ref is updated even if it does not result in a fast forward update\&.
+
+For git\-fetch and git\-pull, the remote ref that matches <src> is fetched, and if <dst> is not empty string, the local ref that matches it is fast forwarded using <src>\&. Again, if the optional plus + is used, the local ref is updated even if it does not result in a fast forward update\&.
+
+
+.RS
+.Sh "Note"
+If the remote branch from which you want to pull is modified in non\-linear ways such as being rewound and rebased frequently, then a pull will attempt a merge with an older version of itself, likely conflict, and fail\&. It is under these conditions that you would want to use the + sign to indicate non\-fast\-forward updates will be needed\&. There is currently no easy way to determine or declare that a branch will be made available in a repository with this behavior; the pulling user simply must know this is the expected usage pattern for a branch\&.
+
+.RE
+
+.RS
+.Sh "Note"
+You never do your own development on branches that appear on the right hand side of a <refspec> colon on Pull: lines; they are to be updated by git\-fetch\&. If you intend to do development derived from a remote branch B, have a Pull: line to track it (i\&.e\&. Pull: B:remote\-B), and have a separate branch my\-B to do your development on top of it\&. The latter is created by git branch my\-B remote\-B (or its equivalent git checkout \-b my\-B remote\-B)\&. Run git fetch to keep track of the progress of the remote side, and when you see something new on the remote branch, merge it into your development branch with git pull \&. remote\-B, while you are on my\-B branch\&. The common Pull: master:origin mapping of a remote master branch to a local origin branch, which is then merged to a local development branch, again typically named master, is made when you run git clone for you to follow this pattern\&.
+
+.RE
+
+.RS
+.Sh "Note"
+There is a difference between listing multiple <refspec> directly on git\-pull command line and having multiple Pull: <refspec> lines for a <repository> and running git\-pull command without any explicit <refspec> parameters\&. <refspec> listed explicitly on the command line are always merged into the current branch after fetching\&. In other words, if you list more than one remote refs, you would be making an Octopus\&. While git\-pull run without any explicit <refspec> parameter takes default <refspec>s from Pull: lines, it merges only the first <refspec> found into the current branch, after fetching all the remote refs\&. This is because making an Octopus from remote refs is rarely done, while keeping track of multiple remote heads in one\-go by fetching more than one is often useful\&.
+
+.RE
+Some short\-cut notations are also supported\&.
+
+.RS
+.TP 3
+\(bu
+For backward compatibility, tag is almost ignored; it just makes the following parameter <tag> to mean a refspec refs/tags/<tag>:refs/tags/<tag>\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, and <ref>:<ref> when pushing\&. That is, do not store it locally if fetching, and update the same name if pushing\&.
+.LP
+.RE
+.IP
+
+.SH "MERGE STRATEGIES"
+
+.TP
+resolve
+This can only resolve two heads (i\&.e\&. the current branch and another branch you pulled from) using 3\-way merge algorithm\&. It tries to carefully detect criss\-cross merge ambiguities and is considered generally safe and fast\&.
+
+.TP
+recursive
+This can only resolve two heads using 3\-way merge algorithm\&. When there are more than one common ancestors that can be used for 3\-way merge, it creates a merged tree of the common ancestors and uses that as the reference tree for the 3\-way merge\&. This has been reported to result in fewer merge conflicts without causing mis\-merges by tests done on actual merge commits taken from Linux 2\&.6 kernel development history\&. Additionally this can detect and handle merges involving renames\&. This is the default merge strategy when pulling or merging one branch\&.
+
+.TP
+octopus
+This resolves more than two\-head case, but refuses to do complex merge that needs manual resolution\&. It is primarily meant to be used for bundling topic branch heads together\&. This is the default merge strategy when pulling or merging more than one branches\&.
+
+.TP
+ours
+This resolves any number of heads, but the result of the merge is always the current branch head\&. It is meant to be used to supersede old development history of side branches\&.
+
+.SH "EXAMPLES"
+
+.TP
+git pull, git pull origin
+Fetch the default head from the repository you cloned from and merge it into your current branch\&.
+
+.TP
+git pull \-s ours \&. obsolete
+Merge local branch obsolete into the current branch, using ours merge strategy\&.
+
+.TP
+git pull \&. fixes enhancements
+Bundle local branch fixes and enhancements on top of the current branch, making an Octopus merge\&.
+
+.TP
+git pull \-\-no\-commit \&. maint
+Merge local branch maint into the current branch, but do not make a commit automatically\&. This can be used when you want to include further changes to the merge, or want to write your own merge commit message\&.
+
+You should refrain from abusing this option to sneak substantial changes into a merge commit\&. Small fixups like bumping release/version name would be acceptable\&.
+
+.TP
+Command line pull of multiple branches from one repository
+
+.IP
+$ cat \&.git/remotes/origin
+URL: git://git\&.kernel\&.org/pub/scm/git/git\&.git
+Pull: master:origin
+
+$ git checkout master
+$ git fetch origin master:origin +pu:pu maint:maint
+$ git pull \&. originHere, a typical \&.git/remotes/origin file from a git\-clone operation is used in combination with command line options to git\-fetch to first update multiple branches of the local repository and then to merge the remote origin branch into the local master branch\&. The local pu branch is updated even if it does not result in a fast forward update\&. Here, the pull can obtain its objects from the local repository using \&., as the previous git\-fetch is known to have already obtained and made available all the necessary objects\&.
+
+.TP
+Pull of multiple branches from one repository using \&.git/remotes file
+
+.IP
+$ cat \&.git/remotes/origin
+URL: git://git\&.kernel\&.org/pub/scm/git/git\&.git
+Pull: master:origin
+Pull: +pu:pu
+Pull: maint:maint
+
+$ git checkout master
+$ git pull originHere, a typical \&.git/remotes/origin file from a git\-clone operation has been hand\-modified to include the branch\-mapping of additional remote and local heads directly\&. A single git\-pull operation while in the master branch will fetch multiple heads and merge the remote origin head into the current, local master branch\&.
+
+
+If you tried a pull which resulted in a complex conflicts and would want to start over, you can recover with \fBgit\-reset\fR(1)\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-fetch\fR(1), \fBgit\-merge\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Jon Loeliger, David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-push.1 b/man1/git-push.1
new file mode 100755 (executable)
index 0000000..937de99
--- /dev/null
@@ -0,0 +1,190 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-PUSH" 1 "" "" ""
+.SH NAME
+git-push \- Update remote refs along with associated objects.
+.SH "SYNOPSIS"
+
+
+git\-push [\-\-all] [\-\-force] <repository> <refspec>...
+
+.SH "DESCRIPTION"
+
+
+Updates remote refs using local refs, while sending objects necessary to complete the given refs\&.
+
+
+You can make "interesting" things to happen on the repository every time you push into it, by setting up hooks there\&. See documentation for \fBgit\-receive\-pack\fR(1)\&.
+
+.SH "OPTIONS"
+
+.TP
+<repository>
+The "remote" repository that is the source of a fetch or pull operation, or the destination of a push operation\&. One of the following notations can be used to name the remote repository:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+rsync://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+http://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+https://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+git://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://host\&.xz/~/path/to/repo\&.git
+.LP
+.RE
+.IP
+SSH Is the default transport protocol and also supports an scp\-like syntax\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+host\&.xz:path/to/repo\&.git
+.LP
+.RE
+.IP
+To sync with a local directory, use:
+
+
+.IP
+
+.RS
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+.RE
+.IP
+In addition to the above, as a short\-hand, the name of a file in $GIT_DIR/remotes directory can be given; the named file should be in the following format:
+
+
+.nf
+URL: one of the above URL format
+Push: <refspec>
+Pull: <refspec>
+.fi
+When such a short\-hand is specified in place of <repository> without <refspec> parameters on the command line, <refspec> specified on Push: lines or Pull: lines are used for git\-push and git\-fetch/git\-pull, respectively\&. Multiple Push: and and Pull: lines may be specified for additional branch mappings\&.
+
+The name of a file in $GIT_DIR/branches directory can be specified as an older notation short\-hand; the named file should contain a single line, a URL in one of the above formats, optionally followed by a hash # and the name of remote head (URL fragment notation)\&. $GIT_DIR/branches/<remote> file that stores a <url> without the fragment is equivalent to have this in the corresponding file in the $GIT_DIR/remotes/ directory\&.
+
+
+.nf
+URL: <url>
+Pull: refs/heads/master:<remote>
+.fi
+while having <url>#<head> is equivalent to
+
+.nf
+URL: <url>
+Pull: refs/heads/<head>:<remote>
+.fi
+
+.TP
+<refspec>
+The canonical format of a <refspec> parameter is +?<src>:<dst>; that is, an optional plus +, followed by the source ref, followed by a colon :, followed by the destination ref\&.
+
+When used in git\-push, the <src> side can be an arbitrary "SHA1 expression" that can be used as an argument to git\-cat\-file \-t\&. E\&.g\&. master~4 (push four parents before the current master head)\&.
+
+For git\-push, the local ref that matches <src> is used to fast forward the remote ref that matches <dst>\&. If the optional plus + is used, the remote ref is updated even if it does not result in a fast forward update\&.
+
+For git\-fetch and git\-pull, the remote ref that matches <src> is fetched, and if <dst> is not empty string, the local ref that matches it is fast forwarded using <src>\&. Again, if the optional plus + is used, the local ref is updated even if it does not result in a fast forward update\&.
+
+
+.RS
+.Sh "Note"
+If the remote branch from which you want to pull is modified in non\-linear ways such as being rewound and rebased frequently, then a pull will attempt a merge with an older version of itself, likely conflict, and fail\&. It is under these conditions that you would want to use the + sign to indicate non\-fast\-forward updates will be needed\&. There is currently no easy way to determine or declare that a branch will be made available in a repository with this behavior; the pulling user simply must know this is the expected usage pattern for a branch\&.
+
+.RE
+
+.RS
+.Sh "Note"
+You never do your own development on branches that appear on the right hand side of a <refspec> colon on Pull: lines; they are to be updated by git\-fetch\&. If you intend to do development derived from a remote branch B, have a Pull: line to track it (i\&.e\&. Pull: B:remote\-B), and have a separate branch my\-B to do your development on top of it\&. The latter is created by git branch my\-B remote\-B (or its equivalent git checkout \-b my\-B remote\-B)\&. Run git fetch to keep track of the progress of the remote side, and when you see something new on the remote branch, merge it into your development branch with git pull \&. remote\-B, while you are on my\-B branch\&. The common Pull: master:origin mapping of a remote master branch to a local origin branch, which is then merged to a local development branch, again typically named master, is made when you run git clone for you to follow this pattern\&.
+
+.RE
+
+.RS
+.Sh "Note"
+There is a difference between listing multiple <refspec> directly on git\-pull command line and having multiple Pull: <refspec> lines for a <repository> and running git\-pull command without any explicit <refspec> parameters\&. <refspec> listed explicitly on the command line are always merged into the current branch after fetching\&. In other words, if you list more than one remote refs, you would be making an Octopus\&. While git\-pull run without any explicit <refspec> parameter takes default <refspec>s from Pull: lines, it merges only the first <refspec> found into the current branch, after fetching all the remote refs\&. This is because making an Octopus from remote refs is rarely done, while keeping track of multiple remote heads in one\-go by fetching more than one is often useful\&.
+
+.RE
+Some short\-cut notations are also supported\&.
+
+.RS
+.TP 3
+\(bu
+For backward compatibility, tag is almost ignored; it just makes the following parameter <tag> to mean a refspec refs/tags/<tag>:refs/tags/<tag>\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, and <ref>:<ref> when pushing\&. That is, do not store it locally if fetching, and update the same name if pushing\&.
+.LP
+.RE
+.IP
+
+.TP
+\-\-all
+Instead of naming each ref to push, specifies all refs to be pushed\&.
+
+.TP
+\-f, \-\-force
+Usually, the command refuses to update a local ref that is not an ancestor of the remote ref used to overwrite it\&. This flag disables the check\&. What this means is that the local repository can lose commits; use it with care\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-read-tree.1 b/man1/git-read-tree.1
new file mode 100755 (executable)
index 0000000..caa4af6
--- /dev/null
@@ -0,0 +1,268 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-READ-TREE" 1 "" "" ""
+.SH NAME
+git-read-tree \- Reads tree information into the index
+.SH "SYNOPSIS"
+
+
+git\-read\-tree (<tree\-ish> | [[\-m | \-\-reset] [\-u | \-i]] <tree\-ish1> [<tree\-ish2> [<tree\-ish3>]])
+
+.SH "DESCRIPTION"
+
+
+Reads the tree information given by <tree\-ish> into the index, but does not actually update any of the files it "caches"\&. (see: \fBgit\-checkout\-index\fR(1))
+
+
+Optionally, it can merge a tree into the index, perform a fast\-forward (i\&.e\&. 2\-way) merge, or a 3\-way merge, with the \-m flag\&. When used with \-m, the \-u flag causes it to also update the files in the work tree with the result of the merge\&.
+
+
+Trivial merges are done by git\-read\-tree itself\&. Only conflicting paths will be in unmerged state when git\-read\-tree returns\&.
+
+.SH "OPTIONS"
+
+.TP
+\-m
+Perform a merge, not just a read\&. The command will refuse to run if your index file has unmerged entries, indicating that you have not finished previous merge you started\&.
+
+.TP
+\-\-reset
+Same as \-m, except that unmerged entries are discarded instead of failing\&.
+
+.TP
+\-u
+After a successful merge, update the files in the work tree with the result of the merge\&.
+
+.TP
+\-i
+Usually a merge requires the index file as well as the files in the working tree are up to date with the current head commit, in order not to lose local changes\&. This flag disables the check with the working tree and is meant to be used when creating a merge of trees that are not directly related to the current working tree status into a temporary index file\&.
+
+.TP
+<tree\-ish#>
+The id of the tree object(s) to be read/merged\&.
+
+.SH "MERGING"
+
+
+If \-m is specified, git\-read\-tree can perform 3 kinds of merge, a single tree merge if only 1 tree is given, a fast\-forward merge with 2 trees, or a 3\-way merge if 3 trees are provided\&.
+
+.SS "Single Tree Merge"
+
+
+If only 1 tree is specified, git\-read\-tree operates as if the user did not specify \-m, except that if the original index has an entry for a given pathname, and the contents of the path matches with the tree being read, the stat info from the index is used\&. (In other words, the index's stat()s take precedence over the merged tree's)\&.
+
+
+That means that if you do a git\-read\-tree \-m <newtree> followed by a git\-checkout\-index \-f \-u \-a, the git\-checkout\-index only checks out the stuff that really changed\&.
+
+
+This is used to avoid unnecessary false hits when git\-diff\-files is run after git\-read\-tree\&.
+
+.SS "Two Tree Merge"
+
+
+Typically, this is invoked as git\-read\-tree \-m $H $M, where $H is the head commit of the current repository, and $M is the head of a foreign tree, which is simply ahead of $H (i\&.e\&. we are in a fast forward situation)\&.
+
+
+When two trees are specified, the user is telling git\-read\-tree the following:
+
+.TP 3
+1.
+The current index and work tree is derived from $H, but the user may have local changes in them since $H;
+.TP
+2.
+The user wants to fast\-forward to $M\&.
+.LP
+
+
+In this case, the git\-read\-tree \-m $H $M command makes sure that no local change is lost as the result of this "merge"\&. Here are the "carry forward" rules:
+
+.nf
+  I (index)           H        M        Result
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+0 nothing             nothing  nothing  (does not happen)
+1 nothing             nothing  exists   use M
+2 nothing             exists   nothing  remove path from index
+3 nothing             exists   exists   use M
+.fi
+
+.nf
+  clean I==H  I==M
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+4 yes   N/A   N/A     nothing  nothing  keep index
+5 no    N/A   N/A     nothing  nothing  keep index
+.fi
+
+.nf
+6 yes   N/A   yes     nothing  exists   keep index
+7 no    N/A   yes     nothing  exists   keep index
+8 yes   N/A   no      nothing  exists   fail
+9 no    N/A   no      nothing  exists   fail
+.fi
+
+.nf
+10 yes   yes   N/A     exists   nothing  remove path from index
+11 no    yes   N/A     exists   nothing  fail
+12 yes   no    N/A     exists   nothing  fail
+13 no    no    N/A     exists   nothing  fail
+.fi
+
+.nf
+   clean (H=M)
+  \-\-\-\-\-\-
+14 yes                 exists   exists   keep index
+15 no                  exists   exists   keep index
+.fi
+
+.nf
+   clean I==H  I==M (H!=M)
+  \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+16 yes   no    no      exists   exists   fail
+17 no    no    no      exists   exists   fail
+18 yes   no    yes     exists   exists   keep index
+19 no    no    yes     exists   exists   keep index
+20 yes   yes   no      exists   exists   use M
+21 no    yes   no      exists   exists   fail
+.fi
+
+
+In all "keep index" cases, the index entry stays as in the original index file\&. If the entry were not up to date, git\-read\-tree keeps the copy in the work tree intact when operating under the \-u flag\&.
+
+
+When this form of git\-read\-tree returns successfully, you can see what "local changes" you made are carried forward by running git\-diff\-index \-\-cached $M\&. Note that this does not necessarily match git\-diff\-index \-\-cached $H would have produced before such a two tree merge\&. This is because of cases 18 and 19 \-\-\- if you already had the changes in $M (e\&.g\&. maybe you picked it up via e\-mail in a patch form), git\-diff\-index \-\-cached $H would have told you about the change before this merge, but it would not show in git\-diff\-index \-\-cached $M output after two\-tree merge\&.
+
+.SS "3-Way Merge"
+
+
+Each "index" entry has two bits worth of "stage" state\&. stage 0 is the normal one, and is the only one you'd see in any kind of normal use\&.
+
+
+However, when you do git\-read\-tree with three trees, the "stage" starts out at 1\&.
+
+
+This means that you can do
+
+.IP
+$ git\-read\-tree \-m <tree1> <tree2> <tree3>
+
+and you will end up with an index with all of the <tree1> entries in "stage1", all of the <tree2> entries in "stage2" and all of the <tree3> entries in "stage3"\&. When performing a merge of another branch into the current branch, we use the common ancestor tree as <tree1>, the current branch head as <tree2>, and the other branch head as <tree3>\&.
+
+
+Furthermore, git\-read\-tree has special\-case logic that says: if you see a file that matches in all respects in the following states, it "collapses" back to "stage0":
+
+.TP 3
+\(bu
+stage 2 and 3 are the same; take one or the other (it makes no difference \- the same work has been done on our branch in stage 2 and their branch in stage 3)
+.TP
+\(bu
+stage 1 and stage 2 are the same and stage 3 is different; take stage 3 (our branch in stage 2 did not do anything since the ancestor in stage 1 while their branch in stage 3 worked on it)
+.TP
+\(bu
+stage 1 and stage 3 are the same and stage 2 is different take stage 2 (we did something while they did nothing)
+.LP
+
+
+The git\-write\-tree command refuses to write a nonsensical tree, and it will complain about unmerged entries if it sees a single entry that is not stage 0\&.
+
+
+Ok, this all sounds like a collection of totally nonsensical rules, but it's actually exactly what you want in order to do a fast merge\&. The different stages represent the "result tree" (stage 0, aka "merged"), the original tree (stage 1, aka "orig"), and the two trees you are trying to merge (stage 2 and 3 respectively)\&.
+
+
+The order of stages 1, 2 and 3 (hence the order of three <tree\-ish> command line arguments) are significant when you start a 3\-way merge with an index file that is already populated\&. Here is an outline of how the algorithm works:
+
+.TP 3
+\(bu
+if a file exists in identical format in all three trees, it will automatically collapse to "merged" state by git\-read\-tree\&.
+.TP
+\(bu
+a file that has _any_ difference what\-so\-ever in the three trees will stay as separate entries in the index\&. It's up to "porcelain policy" to determine how to remove the non\-0 stages, and insert a merged version\&.
+.TP
+\(bu
+the index file saves and restores with all this information, so you can merge things incrementally, but as long as it has entries in stages 1/2/3 (ie "unmerged entries") you can't write the result\&. So now the merge algorithm ends up being really simple:
+
+.RS
+.TP 3
+\(bu
+you walk the index in order, and ignore all entries of stage 0, since they've already been done\&.
+.TP
+\(bu
+if you find a "stage1", but no matching "stage2" or "stage3", you know it's been removed from both trees (it only existed in the original tree), and you remove that entry\&.
+.TP
+\(bu
+if you find a matching "stage2" and "stage3" tree, you remove one of them, and turn the other into a "stage0" entry\&. Remove any matching "stage1" entry if it exists too\&. \&.\&. all the normal trivial rules \&.\&.
+.LP
+.RE
+.IP
+.LP
+
+
+You would normally use git\-merge\-index with supplied git\-merge\-one\-file to do this last step\&. The script updates the files in the working tree as it merges each path and at the end of a successful merge\&.
+
+
+When you start a 3\-way merge with an index file that is already populated, it is assumed that it represents the state of the files in your work tree, and you can even have files with changes unrecorded in the index file\&. It is further assumed that this state is "derived" from the stage 2 tree\&. The 3\-way merge refuses to run if it finds an entry in the original index file that does not match stage 2\&.
+
+
+This is done to prevent you from losing your work\-in\-progress changes, and mixing your random changes in an unrelated merge commit\&. To illustrate, suppose you start from what has been commited last to your repository:
+
+.IP
+$ JC=`git\-rev\-parse \-\-verify "HEAD^0"`
+$ git\-checkout\-index \-f \-u \-a $JC
+
+You do random edits, without running git\-update\-index\&. And then you notice that the tip of your "upstream" tree has advanced since you pulled from him:
+
+.IP
+$ git\-fetch git://\&.\&.\&.\&. linus
+$ LT=`cat \&.git/FETCH_HEAD`
+
+Your work tree is still based on your HEAD ($JC), but you have some edits since\&. Three\-way merge makes sure that you have not added or modified index entries since $JC, and if you haven't, then does the right thing\&. So with the following sequence:
+
+.IP
+$ git\-read\-tree \-m \-u `git\-merge\-base $JC $LT` $JC $LT
+$ git\-merge\-index git\-merge\-one\-file \-a
+$ echo "Merge with Linus" | \\
+  git\-commit\-tree `git\-write\-tree` \-p $JC \-p $LT
+
+what you would commit is a pure merge between $JC and $LT without your work\-in\-progress changes, and your work tree would be updated to the result of the merge\&.
+
+
+However, if you have local changes in the working tree that would be overwritten by this merge,git\-read\-tree will refuse to run to prevent your changes from being lost\&.
+
+
+In other words, there is no need to worry about what exists only in the working tree\&. When you have local changes in a part of the project that is not involved in the merge, your changes do not interfere with the merge, and are kept intact\&. When they do interfere, the merge does not even start (git\-read\-tree complains loudly and fails without modifying anything)\&. In such a case, you can simply continue doing what you were in the middle of doing, and when your working tree is ready (i\&.e\&. you have finished your work\-in\-progress), attempt the merge again\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-write\-tree\fR(1); \fBgit\-ls\-files\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-rebase.1 b/man1/git-rebase.1
new file mode 100755 (executable)
index 0000000..88be8f9
--- /dev/null
@@ -0,0 +1,57 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REBASE" 1 "" "" ""
+.SH NAME
+git-rebase \- Rebase local commits to new upstream head.
+.SH "SYNOPSIS"
+
+
+git\-rebase <upstream> [<head>]
+
+.SH "DESCRIPTION"
+
+
+Rebases local commits to the new head of the upstream tree\&.
+
+.SH "OPTIONS"
+
+.TP
+<upstream>
+Upstream branch to compare against\&.
+
+.TP
+<head>
+Working branch; defaults to HEAD\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-receive-pack.1 b/man1/git-receive-pack.1
new file mode 100755 (executable)
index 0000000..579eec8
--- /dev/null
@@ -0,0 +1,106 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-RECEIVE-PACK" 1 "" "" ""
+.SH NAME
+git-receive-pack \- Receive what is pushed into it
+.SH "SYNOPSIS"
+
+
+git\-receive\-pack <directory>
+
+.SH "DESCRIPTION"
+
+
+Invoked by git\-send\-pack and updates the repository with the information fed from the remote end\&.
+
+
+This command is usually not invoked directly by the end user\&. The UI for the protocol is on the git\-send\-pack side, and the program pair is meant to be used to push updates to remote repository\&. For pull operations, see git\-fetch\-pack and git\-clone\-pack\&.
+
+
+The command allows for creation and fast forwarding of sha1 refs (heads/tags) on the remote end (strictly speaking, it is the local end receive\-pack runs, but to the user who is sitting at the send\-pack end, it is updating the remote\&. Confused?)
+
+
+Before each ref is updated, if $GIT_DIR/hooks/update file exists and executable, it is called with three parameters:
+
+.nf
+$GIT_DIR/hooks/update refname sha1\-old sha1\-new
+.fi
+
+
+The refname parameter is relative to $GIT_DIR; e\&.g\&. for the master head this is "refs/heads/master"\&. Two sha1 are the object names for the refname before and after the update\&. Note that the hook is called before the refname is updated, so either should match what is recorded in refname\&.
+
+
+The hook should exit with non\-zero status if it wants to disallow updating the named ref\&. Otherwise it should exit with zero\&.
+
+
+Using this hook, it is easy to generate mails on updates to the local repository\&. This example script sends a mail with the commits pushed to the repository:
+
+.nf
+#!/bin/sh
+# mail out commit update information\&.
+if expr "$2" : '0*$' >/dev/null
+then
+        echo "Created a new ref, with the following commits:"
+        git\-rev\-list \-\-pretty "$2"
+else
+        echo "New commits:"
+        git\-rev\-list \-\-pretty "$3" "^$2"
+fi |
+mail \-s "Changes to ref $1" commit\-list@mydomain
+exit 0
+.fi
+
+
+Another hook $GIT_DIR/hooks/post\-update, if exists and executable, is called with the list of refs that have been updated\&. This can be used to implement repository wide cleanup task if needed\&. The exit code from this hook invocation is ignored; the only thing left for git\-receive\-pack to do at that point is to exit itself anyway\&. This hook can be used, for example, to run "git\-update\-server\-info" if the repository is packed and is served via a dumb transport\&.
+
+.nf
+#!/bin/sh
+exec git\-update\-server\-info
+.fi
+
+
+There are other real\-world examples of using update and post\-update hooks found in the Documentation/howto directory\&.
+
+.SH "OPTIONS"
+
+.TP
+<directory>
+The repository to sync into\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-send\-pack\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-relink.1 b/man1/git-relink.1
new file mode 100755 (executable)
index 0000000..bef642c
--- /dev/null
@@ -0,0 +1,57 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-RELINK" 1 "" "" ""
+.SH NAME
+git-relink \- Hardlink common objects in local repositories.
+.SH "SYNOPSIS"
+
+
+git\-relink [\-\-safe] <dir> <dir> [<dir>]*
+
+.SH "DESCRIPTION"
+
+
+This will scan 2 or more object repositories and look for common objects, check if they are hardlinked, and replace one with a hardlink to the other if not\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-safe
+Stops if two objects with the same hash exist but have different sizes\&. Default is to warn and continue\&.
+
+.TP
+<dir>
+Directories containing a \&.git/objects/ subdirectory\&.
+
+.SH "AUTHOR"
+
+
+Written by Ryan Anderson <ryan@michonline\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-repack.1 b/man1/git-repack.1
new file mode 100755 (executable)
index 0000000..615246c
--- /dev/null
@@ -0,0 +1,76 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REPACK" 1 "" "" ""
+.SH NAME
+git-repack \- Script used to pack a repository from a collection of objects into pack files.
+.SH "SYNOPSIS"
+
+
+git\-repack [\-a] [\-d] [\-l] [\-n]
+
+.SH "DESCRIPTION"
+
+
+This script is used to combine all objects that do not currently reside in a "pack", into a pack\&.
+
+
+A pack is a collection of objects, individually compressed, with delta compression applied, stored in a single file, with an associated index file\&.
+
+
+Packs are used to reduce the load on mirror systems, backup engines, disk storage, etc\&.
+
+.SH "OPTIONS"
+
+.TP
+\-a
+Instead of incrementally packing the unpacked objects, pack everything available into a single pack\&. Especially useful when packing a repository that is used for a private development and there no need to worry about people fetching via dumb protocols from it\&. Use with \-d\&.
+
+.TP
+\-d
+After packing, if the newly created packs make some existing packs redundant, remove the redundant packs\&.
+
+.TP
+\-l
+Pass the \-\-local option to git pack\-objects, see \fBgit\-pack\-objects\fR(1)\&.
+
+.TP
+\-n
+Do not update the server information with git update\-server\-info\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Ryan Anderson <ryan@michonline\&.com>
+
+.SH "SEE-ALSO"
+
+
+\fBgit\-pack\-objects\fR(1) \fBgit\-prune\-packed\fR(1)
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-repo-config.1 b/man1/git-repo-config.1
new file mode 100755 (executable)
index 0000000..aac546a
--- /dev/null
@@ -0,0 +1,187 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REPO-CONFIG" 1 "" "" ""
+.SH NAME
+git-repo-config \- Get and set options in .git/config.
+.SH "SYNOPSIS"
+
+
+git\-repo\-config name [value [value_regex]] git\-repo\-config \-\-replace\-all name [value [value_regex]] git\-repo\-config \-\-get name [value_regex] git\-repo\-config \-\-get\-all name [value_regex] git\-repo\-config \-\-unset name [value_regex] git\-repo\-config \-\-unset\-all name [value_regex]
+
+.SH "DESCRIPTION"
+
+
+You can query/set/replace/unset options with this command\&. The name is actually the section and the key separated by a dot, and the value will be escaped\&.
+
+
+If you want to set/unset an option which can occor on multiple lines, you should provide a POSIX regex for the value\&. If you want to handle the lines not matching the regex, just prepend a single exlamation mark in front (see EXAMPLES)\&.
+
+
+This command will fail if
+
+.TP 3
+1.
+\&.git/config is invalid,
+.TP
+2.
+\&.git/config can not be written to,
+.TP
+3.
+no section was provided,
+.TP
+4.
+the section or key is invalid,
+.TP
+5.
+you try to unset an option which does not exist, or
+.TP
+6.
+you try to unset/set an option for which multiple lines match\&.
+.LP
+
+.SH "OPTIONS"
+
+.TP
+\-\-replace\-all
+Default behaviour is to replace at most one line\&. This replaces all lines matching the key (and optionally the value_regex)
+
+.TP
+\-\-get
+Get the value for a given key (optionally filtered by a regex matching the value)\&.
+
+.TP
+\-\-get\-all
+Like get, but does not fail if the number of values for the key is not exactly one\&.
+
+.TP
+\-\-unset
+Remove the line matching the key from \&.git/config\&.
+
+.TP
+\-\-unset\-all
+Remove all matching lines from \&.git/config\&.
+
+.SH "EXAMPLE"
+
+
+Given a \&.git/config like this:
+
+.nf
+#
+# This is the config file, and
+# a '#' or ';' character indicates
+# a comment
+#
+.fi
+
+.nf
+; core variables
+[core]
+        ; Don't trust file modes
+        filemode = false
+.fi
+
+.nf
+; Our diff algorithm
+[diff]
+        external = "/usr/local/bin/gnu\-diff \-u"
+        renames = true
+.fi
+
+.nf
+; Proxy settings
+[proxy]
+        command="ssh" for "ssh://kernel\&.org/"
+        command="proxy\-command" for kernel\&.org
+        command="myprotocol\-command" for "my://"
+        command=default\-proxy ; for all the rest
+.fi
+
+
+you can set the filemode to true with
+
+.IP
+% git repo\-config core\&.filemode true
+
+The hypothetic proxy command entries actually have a postfix to discern to what URL they apply\&. Here is how to change the entry for kernel\&.org to "ssh"\&.
+
+.IP
+% git repo\-config proxy\&.command '"ssh" for kernel\&.org' 'for kernel\&.org$'
+
+This makes sure that only the key/value pair for kernel\&.org is replaced\&.
+
+
+To delete the entry for renames, do
+
+.IP
+% git repo\-config \-\-unset diff\&.renames
+
+If you want to delete an entry for a multivar (like proxy\&.command above), you have to provide a regex matching the value of exactly one line\&.
+
+
+To query the value for a given key, do
+
+.IP
+% git repo\-config \-\-get core\&.filemode
+
+or
+
+.IP
+% git repo\-config core\&.filemode
+
+or, to query a multivar:
+
+.IP
+% git repo\-config \-\-get proxy\&.command "for kernel\&.org$"
+
+If you want to know all the values for a multivar, do:
+
+.IP
+% git repo\-config \-\-get\-all proxy\&.command
+
+If you like to live dangerous, you can replace all proxy\&.commands by a new one with
+
+.IP
+% git repo\-config \-\-replace\-all proxy\&.command ssh
+
+However, if you really only want to replace the line for the default proxy, i\&.e\&. the one without a "for ..." postfix, do something like this:
+
+.IP
+% git repo\-config proxy\&.command ssh '! for '
+
+To actually match only values with an exclamation mark, you have to
+
+.IP
+% git repo\-config section\&.key value '[!]'
+.SH "AUTHOR"
+
+
+Written by Johannes Schindelin <Johannes\&.Schindelin@gmx\&.de>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Johannes Schindelin\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-request-pull.1 b/man1/git-request-pull.1
new file mode 100755 (executable)
index 0000000..3d2bd93
--- /dev/null
@@ -0,0 +1,61 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REQUEST-PULL" 1 "" "" ""
+.SH NAME
+git-request-pull \- Generates a summary of pending changes.
+.SH "SYNOPSIS"
+
+
+git\-request\-pull <start> <url> [<end>]
+
+.SH "DESCRIPTION"
+
+
+Summarizes the changes between two commits to the standard output, and includes the given URL in the generated summary\&.
+
+.SH "OPTIONS"
+
+.TP
+<start>
+Commit to start at\&.
+
+.TP
+<url>
+URL to include in the summary\&.
+
+.TP
+<end>
+Commit to send at; defaults to HEAD\&.
+
+.SH "AUTHOR"
+
+
+Written by Ryan Anderson <ryan@michonline\&.com> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-reset.1 b/man1/git-reset.1
new file mode 100755 (executable)
index 0000000..8c8a232
--- /dev/null
@@ -0,0 +1,168 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-RESET" 1 "" "" ""
+.SH NAME
+git-reset \- Reset current HEAD to the specified state.
+.SH "SYNOPSIS"
+
+
+git\-reset [\-\-mixed | \-\-soft | \-\-hard] [<commit\-ish>]
+
+.SH "DESCRIPTION"
+
+
+Sets the current head to the specified commit and optionally resets the index and working tree to match\&.
+
+
+This command is useful if you notice some small error in a recent commit (or set of commits) and want to redo that part without showing the undo in the history\&.
+
+
+If you want to undo a commit other than the latest on a branch, \fBgit\-revert\fR(1) is your friend\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-mixed
+Resets the index but not the working tree (ie, the changed files are preserved but not marked for commit) and reports what has not been updated\&. This is the default action\&.
+
+.TP
+\-\-soft
+Does not touch the index file nor the working tree at all, but requires them to be in a good order\&. This leaves all your changed files "Updated but not checked in", as \fBgit\-status\fR(1) would put it\&.
+
+.TP
+\-\-hard
+Matches the working tree and index to that of the tree being switched to\&. Any changes to tracked files in the working tree since <commit\-ish> are lost\&.
+
+.TP
+<commit\-ish>
+Commit to make the current HEAD\&.
+
+.SS "Examples"
+
+.TP
+Undo a commit and redo
+
+.IP
+$ git commit \&.\&.\&.
+$ git reset \-\-soft HEAD^ 
+$ edit 
+$ git commit \-a \-c ORIG_HEAD 
+
+ This is most often done when you remembered what you
+just committed is incomplete, or you misspelled your commit
+message, or both\&.  Leaves working tree as it was before "reset"\&.
+ make corrections to working tree files\&.
+ "reset" copies the old head to \&.git/ORIG_HEAD; redo the
+commit by starting with its log message\&.  If you do not need to
+edit the message further, you can give \-C option instead\&.
+.TP
+Undo commits permanently
+
+.IP
+$ git commit \&.\&.\&.
+$ git reset \-\-hard HEAD~3 
+
+ The last three commits (HEAD, HEAD^, and HEAD~2) were bad
+and you do not want to ever see them again\&.  Do *not* do this if
+you have already given these commits to somebody else\&.
+.TP
+Undo a commit, making it a topic branch
+
+.IP
+$ git branch topic/wip 
+$ git reset \-\-hard HEAD~3 
+$ git checkout topic/wip 
+
+ You have made some commits, but realize they were premature
+to be in the "master" branch\&.  You want to continue polishing
+them in a topic branch, so create "topic/wip" branch off of the
+current HEAD\&.
+ Rewind the master branch to get rid of those three commits\&.
+ Switch to "topic/wip" branch and keep working\&.
+.TP
+Undo update\-index
+
+.IP
+$ edit 
+$ git\-update\-index frotz\&.c filfre\&.c
+$ mailx 
+$ git reset 
+$ git pull git://info\&.example\&.com/ nitfol 
+
+ you are happily working on something, and find the changes
+in these files are in good order\&.  You do not want to see them
+when you run "git diff", because you plan to work on other files
+and changes with these files are distracting\&.
+ somebody asks you to pull, and the changes sounds worthy of merging\&.
+ however, you already dirtied the index (i\&.e\&. your index does
+not match the HEAD commit)\&.  But you know the pull you are going
+to make does not affect frotz\&.c nor filfre\&.c, so you revert the
+index changes for these two files\&.  Your changes in working tree
+remain there\&.
+ then you can pull and merge, leaving frotz\&.c and filfre\&.c
+changes still in the working tree\&.
+.TP
+Undo a merge or pull
+
+.IP
+$ git pull 
+Trying really trivial in\-index merge\&.\&.\&.
+fatal: Merge requires file\-level merging
+Nope\&.
+\&.\&.\&.
+Auto\-merging nitfol
+CONFLICT (content): Merge conflict in nitfol
+Automatic merge failed/prevented; fix up by hand
+$ git reset \-\-hard 
+
+ try to update from the upstream resulted in a lot of
+conflicts; you were not ready to spend a lot of time merging
+right now, so you decide to do that later\&.
+ "pull" has not made merge commit, so "git reset \-\-hard"
+which is a synonym for "git reset \-\-hard HEAD" clears the mess
+from the index file and the working tree\&.
+
+$ git pull \&. topic/branch 
+Updating from 41223\&.\&.\&. to 13134\&.\&.\&.
+Fast forward
+$ git reset \-\-hard ORIG_HEAD 
+
+ merge a topic branch into the current branch, which resulted
+in a fast forward\&.
+ but you decided that the topic branch is not ready for public
+consumption yet\&.  "pull" or "merge" always leaves the original
+tip of the current branch in ORIG_HEAD, so resetting hard to it
+brings your index file and the working tree back to that state,
+and resets the tip of the branch to that commit\&.
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net> and Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-resolve.1 b/man1/git-resolve.1
new file mode 100755 (executable)
index 0000000..c3a2100
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-RESOLVE" 1 "" "" ""
+.SH NAME
+git-resolve \- Merge two commits
+.SH "SYNOPSIS"
+
+
+git\-resolve <current> <merged> <message>
+
+.SH "DESCRIPTION"
+
+
+Given two commits and a merge message, merge the <merged> commit into <current> commit, with the commit log message <message>\&.
+
+
+When <current> is a descendant of <merged>, or <current> is an ancestor of <merged>, no new commit is created and the <message> is ignored\&. The former is informally called "already up to date", and the latter is often called "fast forward"\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Dan Holmsand <holmsand@gmail\&.com>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-rev-list.1 b/man1/git-rev-list.1
new file mode 100755 (executable)
index 0000000..a059d99
--- /dev/null
@@ -0,0 +1,133 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REV-LIST" 1 "" "" ""
+.SH NAME
+git-rev-list \- Lists commit objects in reverse chronological order
+.SH "SYNOPSIS"
+
+
+git\-rev\-list [ \-\-max\-count=number ] [ \-\-max\-age=timestamp ] [ \-\-min\-age=timestamp ] [ \-\-sparse ] [ \-\-no\-merges ] [ \-\-all ] [ [ \-\-merge\-order [ \-\-show\-breaks ] ] | [ \-\-topo\-order ] | ] [ \-\-parents ] [ \-\-objects [ \-\-unpacked ] ] [ \-\-pretty | \-\-header | ] [ \-\-bisect ] <commit>... [ \-\- <paths>... ]
+
+.SH "DESCRIPTION"
+
+
+Lists commit objects in reverse chronological order starting at the given commit(s), taking ancestry relationship into account\&. This is useful to produce human\-readable log output\&.
+
+
+Commits which are stated with a preceding ^ cause listing to stop at that point\&. Their parents are implied\&. "git\-rev\-list foo bar ^baz" thus means "list all the commits which are included in foo and bar, but not in baz"\&.
+
+
+A special notation <commit1>\&.\&.<commit2> can be used as a short\-hand for ^<commit1> <commit2>\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-pretty
+Print the contents of the commit changesets in human\-readable form\&.
+
+.TP
+\-\-header
+Print the contents of the commit in raw\-format; each record is separated with a NUL character\&.
+
+.TP
+\-\-objects
+Print the object IDs of any object referenced by the listed commits\&. git\-rev\-list \-\-objects foo ^bar thus means "send me all object IDs which I need to download if I have the commit object bar, but not foo"\&.
+
+.TP
+\-\-unpacked
+Only useful with \-\-objects; print the object IDs that are not in packs\&.
+
+.TP
+\-\-bisect
+Limit output to the one commit object which is roughly halfway between the included and excluded commits\&. Thus, if git\-rev\-list \-\-bisect foo bar baz outputs midpoint, the output of git\-rev\-list foo ^midpoint and git\-rev\-list midpoint bar baz would be of roughly the same length\&. Finding the change which introduces a regression is thus reduced to a binary search: repeatedly generate and test new 'midpoint's until the commit chain is of length one\&.
+
+.TP
+\-\-max\-count
+Limit the number of commits output\&.
+
+.TP
+\-\-max\-age=timestamp, \-\-min\-age=timestamp
+Limit the commits output to specified time range\&.
+
+.TP
+\-\-sparse
+When optional paths are given, the command outputs only the commits that changes at least one of them, and also ignores merges that do not touch the given paths\&. This flag makes the command output all eligible commits (still subject to count and age limitation), but apply merge simplification nevertheless\&.
+
+.TP
+\-\-all
+Pretend as if all the refs in $GIT_DIR/refs/ are listed on the command line as <commit>\&.
+
+.TP
+\-\-topo\-order
+By default, the commits are shown in reverse chronological order\&. This option makes them appear in topological order (i\&.e\&. descendant commits are shown before their parents)\&.
+
+.TP
+\-\-merge\-order
+When specified the commit history is decomposed into a unique sequence of minimal, non\-linear epochs and maximal, linear epochs\&. Non\-linear epochs are then linearised by sorting them into merge order, which is described below\&.
+
+Maximal, linear epochs correspond to periods of sequential development\&. Minimal, non\-linear epochs correspond to periods of divergent development followed by a converging merge\&. The theory of epochs is described in more detail at http://blackcubes\&.dyndns\&.org/epoch/: \fIhttp://blackcubes.dyndns.org/epoch/\fR\&.
+
+The merge order for a non\-linear epoch is defined as a linearisation for which the following invariants are true:
+
+.RS
+.TP 3
+1.
+if a commit P is reachable from commit N, commit P sorts after commit N in the linearised list\&.
+.TP
+2.
+if Pi and Pj are any two parents of a merge M (with i < j), then any commit N, such that N is reachable from Pj but not reachable from Pi, sorts before all commits reachable from Pi\&.
+
+Invariant 1 states that later commits appear before earlier commits they are derived from\&.
+
+Invariant 2 states that commits unique to "later" parents in a merge, appear before all commits from "earlier" parents of a merge\&.
+.LP
+.RE
+.IP
+
+.TP
+\-\-show\-breaks
+Each item of the list is output with a 2\-character prefix consisting of one of: (|), (^), (=) followed by a space\&.
+
+Commits marked with (=) represent the boundaries of minimal, non\-linear epochs and correspond either to the start of a period of divergent development or to the end of such a period\&.
+
+Commits marked with (|) are direct parents of commits immediately preceding the marked commit in the list\&.
+
+Commits marked with (^) are not parents of the immediately preceding commit\&. These "breaks" represent necessary discontinuities implied by trying to represent an arbtirary DAG in a linear form\&.
+
+\-\-show\-breaks is only valid if \-\-merge\-order is also specified\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+
+Original \-\-merge\-order logic by Jon Seymour <jon\&.seymour@gmail\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-rev-parse.1 b/man1/git-rev-parse.1
new file mode 100755 (executable)
index 0000000..cf912cc
--- /dev/null
@@ -0,0 +1,166 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REV-PARSE" 1 "" "" ""
+.SH NAME
+git-rev-parse \- Pick out and massage parameters.
+.SH "SYNOPSIS"
+
+
+git\-rev\-parse [ \-\-option ] <args>...
+
+.SH "DESCRIPTION"
+
+
+Many git Porcelainish commands take mixture of flags (i\&.e\&. parameters that begin with a dash \-) and parameters meant for underlying git\-rev\-list command they use internally and flags and parameters for other commands they use as the downstream of git\-rev\-list\&. This command is used to distinguish between them\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-revs\-only
+Do not output flags and parameters not meant for git\-rev\-list command\&.
+
+.TP
+\-\-no\-revs
+Do not output flags and parameters meant for git\-rev\-list command\&.
+
+.TP
+\-\-flags
+Do not output non\-flag parameters\&.
+
+.TP
+\-\-no\-flags
+Do not output flag parameters\&.
+
+.TP
+\-\-default <arg>
+If there is no parameter given by the user, use <arg> instead\&.
+
+.TP
+\-\-verify
+The parameter given must be usable as a single, valid object name\&. Otherwise barf and abort\&.
+
+.TP
+\-\-sq
+Usually the output is made one line per flag and parameter\&. This option makes output a single line, properly quoted for consumption by shell\&. Useful when you expect your parameter to contain whitespaces and newlines (e\&.g\&. when using pickaxe \-S with git\-diff\-*)\&.
+
+.TP
+\-\-not
+When showing object names, prefix them with ^ and strip ^ prefix from the object names that already have one\&.
+
+.TP
+\-\-symbolic
+Usually the object names are output in SHA1 form (with possible ^ prefix); this option makes them output in a form as close to the original input as possible\&.
+
+.TP
+\-\-all
+Show all refs found in $GIT_DIR/refs\&.
+
+.TP
+\-\-show\-prefix
+When the command is invoked from a subdirectory, show the path of the current directory relative to the top\-level directory\&.
+
+.TP
+\-\-show\-cdup
+When the command is invoked from a subdirectory, show the path of the top\-level directory relative to the current directory (typically a sequence of "\&.\&./", or an empty string)\&.
+
+.TP
+\-\-since=datestring, \-\-after=datestring
+Parses the date string, and outputs corresponding \-\-max\-age= parameter for git\-rev\-list command\&.
+
+.TP
+\-\-until=datestring, \-\-before=datestring
+Parses the date string, and outputs corresponding \-\-min\-age= parameter for git\-rev\-list command\&.
+
+.TP
+<args>...
+Flags and parameters to be parsed\&.
+
+.SH "SPECIFYING REVISIONS"
+
+
+A revision parameter typically, but not necessarily, names a commit object\&. They use what is called an extended SHA1 syntax\&.
+
+.TP 3
+\(bu
+The full SHA1 object name (40\-byte hexadecimal string), or a substring of such that is unique within the repository\&. E\&.g\&. dae86e1950b1277e545cee180551750029cfe735 and dae86e both name the same commit object if there are no other object in your repository whose object name starts with dae86e\&.
+.TP
+\(bu
+A symbolic ref name\&. E\&.g\&. master typically means the commit object referenced by $GIT_DIR/refs/heads/master\&. If you happen to have both heads/master and tags/master, you can explicitly say heads/master to tell git which one you mean\&.
+.TP
+\(bu
+A suffix ^ to a revision parameter means the first parent of that commit object\&. ^<n> means the <n>th parent (i\&.e\&. rev^ is equivalent to rev^1)\&. As a special rule, rev^0 means the commit itself and is used when rev is the object name of a tag object that refers to a commit object\&.
+.TP
+\(bu
+A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation grand\-parent of the named commit object, following only the first parent\&. I\&.e\&. rev~3 is equivalent to rev^^^ which is equivalent to rev^1^1^1\&.
+.TP
+\(bu
+A suffix ^ followed by an object type name enclosed in brace pair (e\&.g\&. v0\&.99\&.8^{commit}) means the object could be a tag, and dereference the tag recursively until an object of that type is found or the object cannot be dereferenced anymore (in which case, barf)\&. rev^0 introduced earlier is a short\-hand for rev^{commit}\&.
+.TP
+\(bu
+A suffix ^ followed by an empty brace pair (e\&.g\&. v0\&.99\&.8^{}) means the object could be a tag, and dereference the tag recursively until a non\-tag object is found\&.
+.LP
+
+
+git\-rev\-parse also accepts a prefix ^ to revision parameter, which is passed to git\-rev\-list\&. Two revision parameters concatenated with \&.\&. is a short\-hand for writing a range between them\&. I\&.e\&. r1\&.\&.r2 is equivalent to saying ^r1 r2
+
+
+Here is an illustration, by Jon Loeliger\&. Both node B and C are a commit parents of commit node A\&. Parent commits are ordered left\-to\-right\&.
+
+.nf
+G   H   I   J
+ \\ /     \\ /
+  D   E   F
+   \\  |  /
+    \\ | /
+     \\|/
+      B     C
+       \\   /
+        \\ /
+         A
+.fi
+
+.nf
+A =      = A^0
+B = A^   = A^1     = A~1
+C = A^2  = A^2
+D = A^^  = A^1^1   = A~2
+E = B^2  = A^^2
+F = B^3  = A^^3
+G = A^^^ = A^1^1^1 = A~3
+H = D^2  = B^^2    = A^^^2  = A~2^2
+I = F^   = B^3^    = A^^3^
+J = F^2  = B^3^2   = A^^3^2
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-revert.1 b/man1/git-revert.1
new file mode 100755 (executable)
index 0000000..357f081
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-REVERT" 1 "" "" ""
+.SH NAME
+git-revert \- Revert an existing commit.
+.SH "SYNOPSIS"
+
+
+git\-revert [\-\-edit | \-\-no\-edit] [\-n] <commit>
+
+.SH "DESCRIPTION"
+
+
+Given one existing commit, revert the change the patch introduces, and record a new commit that records it\&. This requires your working tree to be clean (no modifications from the HEAD commit)\&.
+
+.SH "OPTIONS"
+
+.TP
+<commit>
+Commit to revert\&.
+
+.TP
+\-e|\-\-edit
+With this option, git\-revert will let you edit the commit message prior committing the revert\&. This is the default if you run the command from a terminal\&.
+
+.TP
+\-\-no\-edit
+With this option, git\-revert will not start the commit message editor\&.
+
+.TP
+\-n|\-\-no\-commit
+Usually the command automatically creates a commit with a commit log message stating which commit was reverted\&. This flag applies the change necessary to revert the named commit to your working tree, but does not make the commit\&. In addition, when this option is used, your working tree does not have to match the HEAD commit\&. The revert is done against the beginning state of your working tree\&.
+
+This is useful when reverting more than one commits' effect to your working tree in a row\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-send-email.1 b/man1/git-send-email.1
new file mode 100755 (executable)
index 0000000..4b00932
--- /dev/null
@@ -0,0 +1,86 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SEND-EMAIL" 1 "" "" ""
+.SH NAME
+git-send-email \- Send a collection of patches as emails
+.SH "SYNOPSIS"
+
+
+git\-send\-email [options] <file|directory> [... file|directory]
+
+.SH "DESCRIPTION"
+
+
+Takes the patches given on the command line and emails them out\&.
+
+
+The header of the email is configurable by command line options\&. If not specified on the command line, the user will be prompted with a ReadLine enabled interface to provide the necessary information\&.
+
+.SH "OPTIONS"
+
+
+The options available are:
+
+.TP
+\-\-to
+Specify the primary recipient of the emails generated\&. Generally, this will be the upstream maintainer of the project involved\&.
+
+.TP
+\-\-from
+Specify the sender of the emails\&. This will default to the value GIT_COMMITTER_IDENT, as returned by "git\-var \-l"\&. The user will still be prompted to confirm this entry\&.
+
+.TP
+\-\-compose
+Use \\$EDITOR to edit an introductory message for the patch series\&.
+
+.TP
+\-\-subject
+Specify the initial subject of the email thread\&. Only necessary if \-\-compose is also set\&. If \-\-compose is not set, this will be prompted for\&.
+
+.TP
+\-\-in\-reply\-to
+Specify the contents of the first In\-Reply\-To header\&. Subsequent emails will refer to the previous email instead of this if \-\-chain\-reply\-to is set (the default) Only necessary if \-\-compose is also set\&. If \-\-compose is not set, this will be prompted for\&.
+
+.TP
+\-\-chain\-reply\-to, \-\-no\-chain\-reply\-to
+If this is set, each email will be sent as a reply to the previous email sent\&. If disabled with "\-\-no\-chain\-reply\-to", all emails after the first will be sent as replies to the first email sent\&. When using this, it is recommended that the first file given be an overview of the entire patch series\&. Default is \-\-chain\-reply\-to
+
+.TP
+\-\-smtp\-server
+If set, specifies the outgoing SMTP server to use\&. Defaults to localhost\&.
+
+.SH "AUTHOR"
+
+
+Written by Ryan Anderson <ryan@michonline\&.com>
+
+
+git\-send\-email is originally based upon send_lots_of_email\&.pl by Greg Kroah\-Hartman\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Ryan Anderson
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-send-pack.1 b/man1/git-send-pack.1
new file mode 100755 (executable)
index 0000000..6d73698
--- /dev/null
@@ -0,0 +1,120 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SEND-PACK" 1 "" "" ""
+.SH NAME
+git-send-pack \- Push missing objects packed.
+.SH "SYNOPSIS"
+
+
+git\-send\-pack [\-\-all] [\-\-force] [\-\-exec=<git\-receive\-pack>] [<host>:]<directory> [<ref>...]
+
+.SH "DESCRIPTION"
+
+
+Invokes git\-receive\-pack on a possibly remote repository, and updates it from the current repository, sending named refs\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-exec=<git\-receive\-pack>
+Path to the git\-receive\-pack program on the remote end\&. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH\&.
+
+.TP
+\-\-all
+Instead of explicitly specifying which refs to update, update all refs that locally exist\&.
+
+.TP
+\-\-force
+Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it\&. This flag disables the check\&. What this means is that the remote repository can lose commits; use it with care\&.
+
+.TP
+<host>
+A remote host to house the repository\&. When this part is specified, git\-receive\-pack is invoked via ssh\&.
+
+.TP
+<directory>
+The repository to update\&.
+
+
+<ref>...: The remote refs to update\&.
+
+.SH "SPECIFYING THE REFS"
+
+
+There are three ways to specify which refs to update on the remote end\&.
+
+
+With \-\-all flag, all refs that exist locally are transfered to the remote side\&. You cannot specify any <ref> if you use this flag\&.
+
+
+Without \-\-all and without any <ref>, the refs that exist both on the local side and on the remote side are updated\&.
+
+
+When one or more <ref> are specified explicitly, it can be either a single pattern, or a pair of such pattern separated by a colon ":" (this means that a ref name cannot have a colon in it)\&. A single pattern <name> is just a shorthand for <name>:<name>\&.
+
+
+Each pattern pair consists of the source side (before the colon) and the destination side (after the colon)\&. The ref to be pushed is determined by finding a match that matches the source side, and where it is pushed is determined by using the destination side\&.
+
+.TP 3
+\(bu
+It is an error if <src> does not match exactly one of the local refs\&.
+.TP
+\(bu
+It is an error if <dst> matches more than one remote refs\&.
+.TP
+\(bu
+If <dst> does not match any remote ref, either
+
+.RS
+.TP 3
+\(bu
+it has to start with "refs/"; <dst> is used as the destination literally in this case\&.
+.TP
+\(bu
+<src> == <dst> and the ref that matched the <src> must not exist in the set of remote refs; the ref matched <src> locally is used as the name of the destination\&.
+.LP
+.RE
+.IP
+.LP
+
+
+Without \-\-force, the <src> ref is stored at the remote only if <dst> does not exist, or <dst> is a proper subset (i\&.e\&. an ancestor) of <src>\&. This check, known as "fast forward check", is performed in order to avoid accidentally overwriting the remote ref and lose other peoples' commits from there\&.
+
+
+With \-\-force, the fast forward check is disabled for all refs\&.
+
+
+Optionally, a <ref> parameter can be prefixed with a plus + sign to disable the fast\-forward check only on that ref\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-sh-setup.1 b/man1/git-sh-setup.1
new file mode 100755 (executable)
index 0000000..6ab2913
--- /dev/null
@@ -0,0 +1,49 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SH-SETUP" 1 "" "" ""
+.SH NAME
+git-sh-setup \- Common git shell script setup code.
+.SH "SYNOPSIS"
+
+
+git\-sh\-setup
+
+.SH "DESCRIPTION"
+
+
+Sets up the normal git environment variables and a few helper functions (currently just "die()"), and returns ok if it all looks like a git archive\&. So, to make the rest of the git scripts more careful and readable, use it as follows:
+
+.IP
+\&. git\-sh\-setup || die "Not a git archive"
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-shell.1 b/man1/git-shell.1
new file mode 100755 (executable)
index 0000000..2af6b3f
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SHELL" 1 "" "" ""
+.SH NAME
+git-shell \- Restricted login shell for GIT over SSH only
+.SH "SYNOPSIS"
+
+
+git\-shell \-c <command> <argument>
+
+.SH "DESCRIPTION"
+
+
+This is meant to be used as a login shell for SSH accounts you want to restrict to GIT pull/push access only\&. It permits execution only of server\-side GIT commands implementing the pull/push functionality\&. The commands can be executed only by the \-c option; the shell is not interactive\&.
+
+
+Currently, only the git\-receive\-pack and git\-upload\-pack commands are permitted to be called, with a single required argument\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Petr Baudis and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-shortlog.1 b/man1/git-shortlog.1
new file mode 100755 (executable)
index 0000000..bc41da1
--- /dev/null
@@ -0,0 +1,47 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SHORTLOG" 1 "" "" ""
+.SH NAME
+git-shortlog \- Summarize 'git log' output.
+.SH "SYNOPSIS"
+
+
+git\-log \-\-pretty=short | git shortlog
+
+.SH "DESCRIPTION"
+
+
+Summarizes git log output in a format suitable for inclusion in release announcements\&.
+
+.SH "AUTHOR"
+
+
+Written by Jeff Garzik <jgarzik@pobox\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-show-branch.1 b/man1/git-show-branch.1
new file mode 100755 (executable)
index 0000000..e6b65a3
--- /dev/null
@@ -0,0 +1,126 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SHOW-BRANCH" 1 "" "" ""
+.SH NAME
+git-show-branch \- Show branches and their commits.
+.SH "SYNOPSIS"
+
+
+git\-show\-branch [\-\-all] [\-\-heads] [\-\-tags] [\-\-topo\-order] [\-\-more=<n> | \-\-list | \-\-independent | \-\-merge\-base] [\-\-no\-name | \-\-sha1\-name] [<rev> | <glob>]...
+
+.SH "DESCRIPTION"
+
+
+Shows the commit ancestry graph starting from the commits named with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads and/or $GIT_DIR/refs/tags) semi\-visually\&.
+
+
+It cannot show more than 29 branches and commits at a time\&.
+
+.SH "OPTIONS"
+
+.TP
+<rev>
+Arbitrary extended SHA1 expression (see git\-rev\-parse) that typically names a branch HEAD or a tag\&.
+
+.TP
+<glob>
+A glob pattern that matches branch or tag names under $GIT_DIR/refs\&. For example, if you have many topic branches under $GIT_DIR/refs/heads/topic, giving topic/* would show all of them\&.
+
+.TP
+\-\-all \-\-heads \-\-tags
+Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads, and $GIT_DIR/refs/tags, respectively\&.
+
+.TP
+\-\-topo\-order
+By default, the branches and their commits are shown in reverse chronological order\&. This option makes them appear in topological order (i\&.e\&., descendant commits are shown before their parents)\&.
+
+.TP
+\-\-more=<n>
+Usually the command stops output upon showing the commit that is the common ancestor of all the branches\&. This flag tells the command to go <n> more common commits beyond that\&. When <n> is negative, display only the <reference>s given, without showing the commit ancestry tree\&.
+
+.TP
+\-\-list
+Synomym to \-\-more=\-1 
+
+.TP
+\-\-merge\-base
+Instead of showing the commit list, just act like the git\-merge\-base \-a command, except that it can accept more than two heads\&.
+
+.TP
+\-\-independent
+Among the <reference>s given, display only the ones that cannot be reached from any other <reference>\&.
+
+.TP
+\-\-no\-name
+Do not show naming strings for each commit\&.
+
+.TP
+\-\-sha1\-name
+Instead of naming the commits using the path to reach them from heads (e\&.g\&. "master~2" to mean the grandparent of "master"), name them with the unique prefix of their object names\&.
+
+
+Note that \-\-more, \-\-list, \-\-independent and \-\-merge\-base options are mutually exclusive\&.
+
+.SH "OUTPUT"
+
+
+Given N <references>, the first N lines are the one\-line description from their commit message\&. The branch head that is pointed at by $GIT_DIR/HEAD is prefixed with an asterisk * character while other heads are prefixed with a ! character\&.
+
+
+Following these N lines, one\-line log for each commit is displayed, indented N places\&. If a commit is on the I\-th branch, the I\-th indentation character shows a + sign; otherwise it shows a space\&. Each commit shows a short name that can be used as an exended SHA1 to name that commit\&.
+
+
+The following example shows three branches, "master", "fixes" and "mhf":
+
+.IP
+$ git show\-branch master fixes mhf
+! [master] Add 'git show\-branch'\&.
+ ! [fixes] Introduce "reset type" flag to "git reset"
+  ! [mhf] Allow "+remote:local" refspec to cause \-\-force when fetching\&.
+\-\-\-
+  + [mhf] Allow "+remote:local" refspec to cause \-\-force when fetching\&.
+  + [mhf~1] Use git\-octopus when pulling more than one heads\&.
+ +  [fixes] Introduce "reset type" flag to "git reset"
+  + [mhf~2] "git fetch \-\-force"\&.
+  + [mhf~3] Use \&.git/remote/origin, not \&.git/branches/origin\&.
+  + [mhf~4] Make "git pull" and "git fetch" default to origin
+  + [mhf~5] Infamous 'octopus merge'
+  + [mhf~6] Retire git\-parse\-remote\&.
+  + [mhf~7] Multi\-head fetch\&.
+  + [mhf~8] Start adding the $GIT_DIR/remotes/ support\&.
++++ [master] Add 'git show\-branch'\&.
+
+These three branches all forked from a common commit, [master], whose commit message is "Add git show\-branch\&. "fixes" branch adds one commit Introduce "reset type"\&. "mhf" branch has many other commits\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-show-index.1 b/man1/git-show-index.1
new file mode 100755 (executable)
index 0000000..e807ace
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SHOW-INDEX" 1 "" "" ""
+.SH NAME
+git-show-index \- Show packed archive index
+.SH "SYNOPSIS"
+
+
+git\-show\-index < idx\-file
+
+.SH "DESCRIPTION"
+
+
+Reads given idx file for packed git archive created with git\-pack\-objects command, and dumps its contents\&.
+
+
+The information it outputs is subset of what you can get from git\-verify\-pack \-v; this command only shows the packfile offset and SHA1 of each object\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-ssh-fetch.1 b/man1/git-ssh-fetch.1
new file mode 100755 (executable)
index 0000000..0eee592
--- /dev/null
@@ -0,0 +1,73 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SSH-FETCH" 1 "" "" ""
+.SH NAME
+git-ssh-fetch \- Pulls from a remote repository over ssh connection
+.SH "SYNOPSIS"
+
+
+git\-ssh\-fetch [\-c] [\-t] [\-a] [\-d] [\-v] [\-w filename] [\-\-recover] commit\-id url
+
+.SH "DESCRIPTION"
+
+
+Pulls from a remote repository over ssh connection, invoking git\-ssh\-upload on the other end\&. It functions identically to git\-ssh\-upload, aside from which end you run it on\&.
+
+.SH "OPTIONS"
+
+.TP
+commit\-id
+Either the hash or the filename under [URL]/refs/ to pull\&.
+
+.TP
+\-c
+Get the commit objects\&.
+
+.TP
+\-t
+Get trees associated with the commit objects\&.
+
+.TP
+\-a
+Get all the objects\&.
+
+.TP
+\-v
+Report what is downloaded\&.
+
+.TP
+\-w
+Writes the commit\-id into the filename under $GIT_DIR/refs/ on the local end after the transfer is complete\&.
+
+.SH "AUTHOR"
+
+
+Written by Daniel Barkalow <barkalow@iabervon\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-ssh-upload.1 b/man1/git-ssh-upload.1
new file mode 100755 (executable)
index 0000000..ec1cc06
--- /dev/null
@@ -0,0 +1,73 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SSH-UPLOAD" 1 "" "" ""
+.SH NAME
+git-ssh-upload \- Pushes to a remote repository over ssh connection
+.SH "SYNOPSIS"
+
+
+git\-ssh\-upload [\-c] [\-t] [\-a] [\-d] [\-v] [\-w filename] [\-\-recover] commit\-id url
+
+.SH "DESCRIPTION"
+
+
+Pushes from a remote repository over ssh connection, invoking git\-ssh\-fetch on the other end\&. It functions identically to git\-ssh\-fetch, aside from which end you run it on\&.
+
+.SH "OPTIONS"
+
+.TP
+commit\-id
+Id of commit to push\&.
+
+.TP
+\-c
+Get the commit objects\&.
+
+.TP
+\-t
+Get tree associated with the requested commit object\&.
+
+.TP
+\-a
+Get all the objects\&.
+
+.TP
+\-v
+Report what is uploaded\&.
+
+.TP
+\-w
+Writes the commit\-id into the filename under [URL]/refs/ on the remote end after the transfer is complete\&.
+
+.SH "AUTHOR"
+
+
+Written by Daniel Barkalow <barkalow@iabervon\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Daniel Barkalow
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-status.1 b/man1/git-status.1
new file mode 100755 (executable)
index 0000000..d9fb861
--- /dev/null
@@ -0,0 +1,55 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-STATUS" 1 "" "" ""
+.SH NAME
+git-status \- Show working tree status.
+.SH "SYNOPSIS"
+
+
+git\-status
+
+.SH "DESCRIPTION"
+
+
+Examines paths in the working tree that has changes unrecorded to the index file, and changes between the index file and the current HEAD commit\&. The former paths are what you _could_ commit by running git\-update\-index before running git commit, and the latter paths are what you _would_ commit by running git commit\&.
+
+
+If there is no path that is different between the index file and the current HEAD commit, the command exits with non\-zero status\&.
+
+.SH "OUTPUT"
+
+
+The output from this command is designed to be used as a commit template comments, and all the output lines are prefixed with #\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-stripspace.1 b/man1/git-stripspace.1
new file mode 100755 (executable)
index 0000000..879b826
--- /dev/null
@@ -0,0 +1,53 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-STRIPSPACE" 1 "" "" ""
+.SH NAME
+git-stripspace \- Filter out empty lines.
+.SH "SYNOPSIS"
+
+
+git\-stripspace < <stream>
+
+.SH "DESCRIPTION"
+
+
+Remove multiple empty lines, and empty lines at beginning and end\&.
+
+.SH "OPTIONS"
+
+.TP
+<stream>
+Byte stream to act on\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-svnimport.1 b/man1/git-svnimport.1
new file mode 100755 (executable)
index 0000000..71fcbc7
--- /dev/null
@@ -0,0 +1,150 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SVNIMPORT" 1 "" "" ""
+.SH NAME
+git-svnimport \- Import a SVN repository into git
+.SH "SYNOPSIS"
+
+
+git\-svnimport [ \-o <branch\-for\-HEAD> ] [ \-h ] [ \-v ] [ \-d | \-D ] [ \-C <GIT_repository> ] [ \-i ] [ \-u ] [\-l limit_rev] [ \-b branch_subdir ] [ \-t trunk_subdir ] [ \-T tag_subdir ] [ \-s start_chg ] [ \-m ] [ \-M regex ] <SVN_repository_URL> [ <path> ]
+
+.SH "DESCRIPTION"
+
+
+Imports a SVN repository into git\&. It will either create a new repository, or incrementally import into an existing one\&.
+
+
+SVN access is done by the SVN
+
+
+Perl module\&.
+
+
+git\-svnimport assumes that SVN repositories are organized into one "trunk" directory where the main development happens, "branch/FOO" directories for branches, and "/tags/FOO" directories for tags\&. Other subdirectories are ignored\&.
+
+
+git\-svnimport creates a file "\&.git/svn2git", which is required for incremental SVN imports\&.
+
+.SH "OPTIONS"
+
+.TP
+\-C <target\-dir>
+The GIT repository to import to\&. If the directory doesn't exist, it will be created\&. Default is the current directory\&.
+
+.TP
+\-s <start_rev>
+Start importing at this SVN change number\&. The default is 1\&.
+
+When importing incementally, you might need to edit the \&.git/svn2git file\&.
+
+.TP
+\-i
+Import\-only: don't perform a checkout after importing\&. This option ensures the working directory and index remain untouched and will not create them if they do not exist\&.
+
+.TP
+\-t <trunk_subdir>
+Name the SVN trunk\&. Default "trunk"\&.
+
+.TP
+\-T <tag_subdir>
+Name the SVN subdirectory for tags\&. Default "tags"\&.
+
+.TP
+\-b <branch_subdir>
+Name the SVN subdirectory for branches\&. Default "branches"\&.
+
+.TP
+\-o <branch\-for\-HEAD>
+The trunk branch from SVN is imported to the origin branch within the git repository\&. Use this option if you want to import into a different branch\&.
+
+.TP
+\-m
+Attempt to detect merges based on the commit message\&. This option will enable default regexes that try to capture the name source branch name from the commit message\&.
+
+.TP
+\-M <regex>
+Attempt to detect merges based on the commit message with a custom regex\&. It can be used with \-m to also see the default regexes\&. You must escape forward slashes\&.
+
+.TP
+\-l <max_rev>
+Specify a maximum revision number to pull\&.
+
+.nf
+Formerly, this option controlled how many revisions to pull, due to
+SVN memory leaks\&. (These have been worked around\&.)
+.fi
+
+.TP
+\-v
+Verbosity: let svnimport report what it is doing\&.
+
+.TP
+\-d
+Use direct HTTP requests if possible\&. The "<path>" argument is used only for retrieving the SVN logs; the path to the contents is included in the SVN log\&.
+
+.TP
+\-D
+Use direct HTTP requests if possible\&. The "<path>" argument is used for retrieving the logs, as well as for the contents\&.
+
+There's no safe way to automatically find out which of these options to use, so you need to try both\&. Usually, the one that's wrong will die with a 40x error pretty quickly\&.
+
+.TP
+<SVN_repository_URL>
+The URL of the SVN module you want to import\&. For local repositories, use "file:///absolute/path"\&.
+
+If you're using the "\-d" or "\-D" option, this is the URL of the SVN repository itself; it usually ends in "/svn"\&.
+
+.TP
+<SVN_repository_URL>
+The URL of the SVN module you want to import\&. For local repositories, use "file:///absolute/path"\&.
+
+
+<path> The path to the module you want to check out\&.
+
+.TP
+\-h
+Print a short usage message and exit\&.
+
+.SH "OUTPUT"
+
+
+If \-v is specified, the script reports what it is doing\&.
+
+
+Otherwise, success is indicated the Unix way, i\&.e\&. by simply exiting with a zero exit status\&.
+
+.SH "AUTHOR"
+
+
+Written by Matthias Urlichs <smurf@smurf\&.noris\&.de>, with help from various participants of the git\-list <git@vger\&.kernel\&.org>\&.
+
+
+Based on a cvs2git script by the same author\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Matthias Urlichs <smurf@smurf\&.noris\&.de>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-symbolic-ref.1 b/man1/git-symbolic-ref.1
new file mode 100755 (executable)
index 0000000..4306071
--- /dev/null
@@ -0,0 +1,54 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-SYMBOLIC-REF" 1 "" "" ""
+.SH NAME
+git-symbolic-ref \- read and modify symbolic refs
+.SH "SYNOPSIS"
+
+
+git\-symbolic\-ref <name> [<ref>]
+
+.SH "DESCRIPTION"
+
+
+Given one argument, reads which branch head the given symbolic ref refers to and outputs its path, relative to the \&.git/ directory\&. Typically you would give HEAD as the <name> argument to see on which branch your working tree is on\&.
+
+
+Give two arguments, create or update a symbolic ref <name> to point at the given branch <ref>\&.
+
+
+Traditionally, \&.git/HEAD is a symlink pointing at refs/heads/master\&. When we want to switch to another branch, we did ln \-sf refs/heads/newbranch \&.git/HEAD, and when we want to find out which branch we are on, we did readlink \&.git/HEAD\&. This was fine, and internally that is what still happens by default, but on platforms that do not have working symlinks, or that do not have the readlink(1) command, this was a bit cumbersome\&. On some platforms, ln \-sf does not even work as advertised (horrors)\&.
+
+
+A symbolic ref can be a regular file that stores a string that begins with ref: refs/\&. For example, your \&.git/HEAD can be a regular file whose contents is ref: refs/heads/master\&. This can be used on a filesystem that does not support symbolic links\&. Instead of doing readlink \&.git/HEAD, git\-symbolic\-ref HEAD can be used to find out which branch we are on\&. To point the HEAD to newbranch, instead of ln \-sf refs/heads/newbranch \&.git/HEAD, git\-symbolic\-ref HEAD refs/heads/newbranch can be used\&.
+
+
+Currently, \&.git/HEAD uses a regular file symbolic ref on Cygwin, and everywhere else it is implemented as a symlink\&. This can be changed at compilation time\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-tag.1 b/man1/git-tag.1
new file mode 100755 (executable)
index 0000000..5ccbfa3
--- /dev/null
@@ -0,0 +1,88 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-TAG" 1 "" "" ""
+.SH NAME
+git-tag \- Create a tag object signed with GPG
+.SH "SYNOPSIS"
+
+
+git\-tag [\-a | \-s | \-u <key\-id>] [\-f | \-d] [\-m <msg>] <name> [<head>]
+
+.SH "DESCRIPTION"
+
+
+Adds a tag reference in \&.git/refs/tags/
+
+
+Unless \-f is given, the tag must not yet exist in \&.git/refs/tags/ directory\&.
+
+
+If one of \-a, \-s, or \-u <key\-id> is passed, the command creates a tag object, and requires the tag message\&. Unless \-m <msg> is given, an editor is started for the user to type in the tag message\&.
+
+
+Otherwise just the SHA1 object name of the commit object is written (i\&.e\&. a lightweight tag)\&.
+
+
+A GnuPG signed tag object will be created when \-s or \-u <key\-id> is used\&. When \-u <key\-id> is not used, the committer identity for the current user is used to find the GnuPG key for signing\&.
+
+
+\-d <tag> deletes the tag\&.
+
+.SH "OPTIONS"
+
+.TP
+\-a
+Make an unsigned, annotated tag object
+
+.TP
+\-s
+Make a GPG\-signed tag, using the default e\-mail address's key
+
+.TP
+\-u <key\-id>
+Make a GPG\-signed tag, using the given key
+
+.TP
+\-f
+Replace an existing tag with the given name (instead of failing)
+
+.TP
+\-d
+Delete an existing tag with the given name
+
+.TP
+\-m <msg>
+Use the given tag message (instead of prompting)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>, Junio C Hamano <junkio@cox\&.net> and Chris Wright <chrisw@osdl\&.org>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-tar-tree.1 b/man1/git-tar-tree.1
new file mode 100755 (executable)
index 0000000..8e9f629
--- /dev/null
@@ -0,0 +1,50 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-TAR-TREE" 1 "" "" ""
+.SH NAME
+git-tar-tree \- Creates a tar archive of the files in the named tree
+.SH "SYNOPSIS"
+
+
+git\-tar\-tree <tree\-ish> [ <base> ]
+
+.SH "DESCRIPTION"
+
+
+Creates a tar archive containing the tree structure for the named tree\&. When <base> is specified it is added as a leading path to the files in the generated tar archive\&.
+
+
+git\-tar\-tree behaves differently when given a tree ID versus when given a commit ID or tag ID\&. In the first case the current time is used as modification time of each file in the archive\&. In the latter case the commit time as recorded in the referenced commit object is used instead\&. Additionally the commit ID is stored in a global extended pax header\&. It can be extracted using git\-get\-tar\-commit\-id\&.
+
+.SH "AUTHOR"
+
+
+Written by Rene Scharfe\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-unpack-file.1 b/man1/git-unpack-file.1
new file mode 100755 (executable)
index 0000000..5d6104b
--- /dev/null
@@ -0,0 +1,53 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UNPACK-FILE" 1 "" "" ""
+.SH NAME
+git-unpack-file \- Creates a temporary file with a blob's contents
+.SH "SYNOPSIS"
+
+
+git\-unpack\-file <blob>
+
+.SH "DESCRIPTION"
+
+
+Creates a file holding the contents of the blob specified by sha1\&. It returns the name of the temporary file in the following format: \&.merge_file_XXXXX
+
+.SH "OPTIONS"
+
+.TP
+<blob>
+Must be a blob id
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-unpack-objects.1 b/man1/git-unpack-objects.1
new file mode 100755 (executable)
index 0000000..c821501
--- /dev/null
@@ -0,0 +1,57 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UNPACK-OBJECTS" 1 "" "" ""
+.SH NAME
+git-unpack-objects \- Unpack objects from a packed archive.
+.SH "SYNOPSIS"
+
+
+git\-unpack\-objects [\-n] [\-q] <pack\-file
+
+.SH "DESCRIPTION"
+
+
+Reads a packed archive (\&.pack) from the standard input, and expands the objects contained in the pack into "one\-file one\-object" format in $GIT_OBJECT_DIRECTORY\&.
+
+.SH "OPTIONS"
+
+.TP
+\-n
+Only list the objects that would be unpacked, don't actually unpack them\&.
+
+.TP
+\-q
+The command usually shows percentage progress\&. This flag suppresses it\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-update-index.1 b/man1/git-update-index.1
new file mode 100755 (executable)
index 0000000..61096d3
--- /dev/null
@@ -0,0 +1,207 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UPDATE-INDEX" 1 "" "" ""
+.SH NAME
+git-update-index \- Modifies the index or directory cache
+.SH "SYNOPSIS"
+
+
+git\-update\-index [\-\-add] [\-\-remove | \-\-force\-remove] [\-\-replace] [\-\-refresh [\-q] [\-\-unmerged] [\-\-ignore\-missing]] [\-\-cacheinfo <mode> <object> <file>]* [\-\-chmod=(+|\-)x] [\-\-info\-only] [\-\-index\-info] [\-z] [\-\-stdin] [\-\-verbose] [\-\-] [<file>]*
+
+.SH "DESCRIPTION"
+
+
+Modifies the index or directory cache\&. Each file mentioned is updated into the index and any unmerged or needs updating state is cleared\&.
+
+
+The way "git\-update\-index" handles files it is told about can be modified using the various options:
+
+.SH "OPTIONS"
+
+.TP
+\-\-add
+If a specified file isn't in the index already then it's added\&. Default behaviour is to ignore new files\&.
+
+.TP
+\-\-remove
+If a specified file is in the index but is missing then it's removed\&. Default behaviour is to ignore removed file\&.
+
+.TP
+\-\-refresh
+Looks at the current index and checks to see if merges or updates are needed by checking stat() information\&.
+
+.TP
+\-q
+Quiet\&. If \-\-refresh finds that the index needs an update, the default behavior is to error out\&. This option makes git\-update\-index continue anyway\&.
+
+.TP
+\-\-unmerged
+If \-\-refresh finds unmerged changes in the index, the default behavior is to error out\&. This option makes git\-update\-index continue anyway\&.
+
+.TP
+\-\-ignore\-missing
+Ignores missing files during a \-\-refresh
+
+.TP
+\-\-cacheinfo <mode> <object> <path>
+Directly insert the specified info into the index\&.
+
+.TP
+\-\-index\-info
+Read index information from stdin\&.
+
+.TP
+\-\-chmod=(+|\-)x
+Set the execute permissions on the updated files\&.
+
+.TP
+\-\-info\-only
+Do not create objects in the object database for all <file> arguments that follow this flag; just insert their object IDs into the index\&.
+
+.TP
+\-\-force\-remove
+Remove the file from the index even when the working directory still has such a file\&. (Implies \-\-remove\&.)
+
+.TP
+\-\-replace
+By default, when a file path exists in the index, git\-update\-index refuses an attempt to add path/file\&. Similarly if a file path/file exists, a file path cannot be added\&. With \-\-replace flag, existing entries that conflicts with the entry being added are automatically removed with warning messages\&.
+
+.TP
+\-\-stdin
+Instead of taking list of paths from the command line, read list of paths from the standard input\&. Paths are separated by LF (i\&.e\&. one path per line) by default\&.
+
+.TP
+\-\-verbose
+Report what is being added and removed from index\&.
+
+.TP
+\-z
+Only meaningful with \-\-stdin; paths are separated with NUL character instead of LF\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.TP
+<file>
+Files to act on\&. Note that files beginning with \&. are discarded\&. This includes \&./file and dir/\&./file\&. If you don't want this, then use cleaner names\&. The same applies to directories ending / and paths with // 
+
+.SH "USING --REFRESH"
+
+
+\-\-refresh does not calculate a new sha1 file or bring the index up\-to\-date for mode/content changes\&. But what it does do is to "re\-match" the stat information of a file with the index, so that you can refresh the index for a file that hasn't been changed but where the stat entry is out of date\&.
+
+
+For example, you'd want to do this after doing a "git\-read\-tree", to link up the stat index details with the proper files\&.
+
+.SH "USING --CACHEINFO OR --INFO-ONLY"
+
+
+\-\-cacheinfo is used to register a file that is not in the current working directory\&. This is useful for minimum\-checkout merging\&.
+
+
+To pretend you have a file with mode and sha1 at path, say:
+
+.IP
+$ git\-update\-index \-\-cacheinfo mode sha1 path
+
+\-\-info\-only is used to register files without placing them in the object database\&. This is useful for status\-only repositories\&.
+
+
+Both \-\-cacheinfo and \-\-info\-only behave similarly: the index is updated but the object database isn't\&. \-\-cacheinfo is useful when the object is in the database but the file isn't available locally\&. \-\-info\-only is useful when the file is available, but you do not wish to update the object database\&.
+
+.SH "USING --INDEX-INFO"
+
+
+\-\-index\-info is a more powerful mechanism that lets you feed multiple entry definitions from the standard input, and designed specifically for scripts\&. It can take inputs of three formats:
+
+.TP 3
+1.
+mode SP sha1 TAB path
+
+The first format is what "git\-apply \-\-index\-info" reports, and used to reconstruct a partial tree that is used for phony merge base tree when falling back on 3\-way merge\&.
+.TP
+2.
+mode SP type SP sha1 TAB path
+
+The second format is to stuff git\-ls\-tree output into the index file\&.
+.TP
+3.
+mode SP sha1 SP stage TAB path
+
+This format is to put higher order stages into the index file and matches git\-ls\-files \-\-stage output\&.
+.LP
+
+
+To place a higher stage entry to the index, the path should first be removed by feeding a mode=0 entry for the path, and then feeding necessary input lines in the third format\&.
+
+
+For example, starting with this index:
+
+.IP
+$ git ls\-files \-s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz
+
+you can feed the following input to \-\-index\-info:
+
+.IP
+$ git update\-index \-\-index\-info
+0 0000000000000000000000000000000000000000      frotz
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
+
+The first line of the input feeds 0 as the mode to remove the path; the SHA1 does not matter as long as it is well formatted\&. Then the second and third line feeds stage 1 and stage 2 entries for that path\&. After the above, we would end up with this:
+
+.IP
+$ git ls\-files \-s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
+.SH "EXAMPLES"
+
+
+To update and refresh only the files already checked out:
+
+.IP
+$ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
+.SH "CONFIGURATION"
+
+
+The command honors core\&.filemode configuration variable\&. If your repository is on an filesystem whose executable bits are unreliable, this should be set to false (see \fBgit\-repo\-config\fR(1))\&. This causes the command to ignore differences in file modes recorded in the index and the file mode on the filesystem if they differ only on executable bit\&. On such an unfortunate filesystem, you may need to use git\-update\-index \-\-chmod=\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-repo\-config\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-update-ref.1 b/man1/git-update-ref.1
new file mode 100755 (executable)
index 0000000..ed1d730
--- /dev/null
@@ -0,0 +1,68 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UPDATE-REF" 1 "" "" ""
+.SH NAME
+git-update-ref \- update the object name stored in a ref safely
+.SH "SYNOPSIS"
+
+
+git\-update\-ref <ref> <newvalue> [<oldvalue>]
+
+.SH "DESCRIPTION"
+
+
+Given two arguments, stores the <newvalue> in the <ref>, possibly dereferencing the symbolic refs\&. E\&.g\&. git\-update\-ref HEAD <newvalue> updates the current branch head to the new object\&.
+
+
+Given three arguments, stores the <newvalue> in the <ref>, possibly dereferencing the symbolic refs, after verifying that the current value of the <ref> matches <oldvalue>\&. E\&.g\&. git\-update\-ref refs/heads/master <newvalue> <oldvalue> updates the master branch head to <newvalue> only if its current value is <oldvalue>\&.
+
+
+It also allows a "ref" file to be a symbolic pointer to another ref file by starting with the four\-byte header sequence of "ref:"\&.
+
+
+More importantly, it allows the update of a ref file to follow these symbolic pointers, whether they are symlinks or these "regular file symbolic refs"\&. It follows real symlinks only if they start with "refs/": otherwise it will just try to read them and update them as a regular file (i\&.e\&. it will allow the filesystem to follow them, but will overwrite such a symlink to somewhere else with a regular filename)\&.
+
+
+In general, using
+
+.nf
+git\-update\-ref HEAD "$head"
+.fi
+
+
+should be a _lot_ safer than doing
+
+.nf
+echo "$head" > "$GIT_DIR/HEAD"
+.fi
+
+
+both from a symlink following standpoint and an error checking standpoint\&. The "refs/" rule for symlinks means that symlinks that point to "outside" the tree are safe: they'll be followed for reading but not for writing (so we'll never write through a ref symlink to some other tree, if you have copied a whole archive by creating a symlink tree)\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-update-server-info.1 b/man1/git-update-server-info.1
new file mode 100755 (executable)
index 0000000..b727b97
--- /dev/null
@@ -0,0 +1,71 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UPDATE-SERVER" 1 "" "" ""
+.SH NAME
+git-update-server-info \- Update auxiliary info file to help dumb servers
+.SH "SYNOPSIS"
+
+
+git\-update\-server\-info [\-\-force]
+
+.SH "DESCRIPTION"
+
+
+A dumb server that does not do on\-the\-fly pack generations must have some auxiliary information files in $GIT_DIR/info and $GIT_OBJECT_DIRECTORY/info directories to help clients discover what references and packs the server has\&. This command generates such auxiliary files\&.
+
+.SH "OPTIONS"
+
+.TP
+\-f|\-\-force
+Update the info files from scratch\&.
+
+.SH "OUTPUT"
+
+
+Currently the command updates the following files\&. Please see repository\-layout: \fIrepository-layout.html\fR for description of what they are for:
+
+.TP 3
+\(bu
+objects/info/packs
+.TP
+\(bu
+info/refs
+.LP
+
+.SH "BUGS"
+
+
+When you remove an existing ref, the command fails to update info/refs file unless \-\-force flag is given\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-upload-pack.1 b/man1/git-upload-pack.1
new file mode 100755 (executable)
index 0000000..a4f3275
--- /dev/null
@@ -0,0 +1,56 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-UPLOAD-PACK" 1 "" "" ""
+.SH NAME
+git-upload-pack \- Send missing objects packed.
+.SH "SYNOPSIS"
+
+
+git\-upload\-pack <directory>
+
+.SH "DESCRIPTION"
+
+
+Invoked by git\-clone\-pack and/or git\-fetch\-pack, learns what objects the other side is missing, and sends them after packing\&.
+
+
+This command is usually not invoked directly by the end user\&. The UI for the protocol is on the git\-fetch\-pack side, and the program pair is meant to be used to pull updates from a remote repository\&. For push operations, see git\-send\-pack\&.
+
+.SH "OPTIONS"
+
+.TP
+<directory>
+The repository to sync from\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-var.1 b/man1/git-var.1
new file mode 100755 (executable)
index 0000000..8d960ed
--- /dev/null
@@ -0,0 +1,89 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-VAR" 1 "" "" ""
+.SH NAME
+git-var \- Print the git users identity
+.SH "SYNOPSIS"
+
+
+git\-var [ \-l | <variable> ]
+
+.SH "DESCRIPTION"
+
+
+Prints a git logical variable\&.
+
+.SH "OPTIONS"
+
+.TP
+\-l
+Cause the logical variables to be listed\&.
+
+.SH "EXAMPLE"
+
+.nf
+$ git\-var GIT_AUTHOR_IDENT
+Eric W\&. Biederman <ebiederm@lnxi\&.com> 1121223278 \-0600
+.fi
+
+.SH "VARIABLES"
+
+.TP
+GIT_AUTHOR_IDENT
+The author of a piece of code\&.
+
+.TP
+GIT_COMMITTER_IDENT
+The person who put a piece of code into git\&.
+
+.SH "DIAGNOSTICS"
+
+.TP
+You don't exist\&. Go away!
+The passwd(5) gecos field couldn't be read
+
+.TP
+Your parents must have hated you!
+The password(5) gecos field is longer than a giant static buffer\&.
+
+.TP
+Your sysadmin must hate you!
+The password(5) name field is longer than a giant static buffer\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-commit\-tree\fR(1) \fBgit\-tag\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Eric Biederman <ebiederm@xmission\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Eric Biederman and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-verify-pack.1 b/man1/git-verify-pack.1
new file mode 100755 (executable)
index 0000000..58a43a8
--- /dev/null
@@ -0,0 +1,80 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-VERIFY-PACK" 1 "" "" ""
+.SH NAME
+git-verify-pack \- Validate packed git archive files.
+.SH "SYNOPSIS"
+
+
+git\-verify\-pack [\-v] [\-\-] <pack>\&.idx ...
+
+.SH "DESCRIPTION"
+
+
+Reads given idx file for packed git archive created with git\-pack\-objects command and verifies idx file and the corresponding pack file\&.
+
+.SH "OPTIONS"
+
+.TP
+<pack>\&.idx ...
+The idx files to verify\&.
+
+.TP
+\-v
+After verifying the pack, show list of objects contained in the pack\&.
+
+.TP
+--
+Do not interpret any more arguments as options\&.
+
+.SH "OUTPUT FORMAT"
+
+
+When specifying the \-v option the format used is:
+
+.nf
+SHA1 type size offset\-in\-packfile
+.fi
+
+
+for objects that are not deltified in the pack, and
+
+.nf
+SHA1 type size offset\-in\-packfile depth base\-SHA1
+.fi
+
+
+for objects that are deltified\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-verify-tag.1 b/man1/git-verify-tag.1
new file mode 100755 (executable)
index 0000000..576d6e3
--- /dev/null
@@ -0,0 +1,53 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-VERIFY-TAG" 1 "" "" ""
+.SH NAME
+git-verify-tag \- Check the GPG signature of tag.
+.SH "SYNOPSIS"
+
+
+git\-verify\-tag <tag>
+
+.SH "DESCRIPTION"
+
+
+Validates the gpg signature created by git\-tag\&.
+
+.SH "OPTIONS"
+
+.TP
+<tag>
+SHA1 identifier of a git tag object\&.
+
+.SH "AUTHOR"
+
+
+Written by Jan Harkes <jaharkes@cs\&.cmu\&.edu> and Eric W\&. Biederman <ebiederm@xmission\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-whatchanged.1 b/man1/git-whatchanged.1
new file mode 100755 (executable)
index 0000000..57b2af7
--- /dev/null
@@ -0,0 +1,91 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-WHATCHANGED" 1 "" "" ""
+.SH NAME
+git-whatchanged \- Show logs with difference each commit introduces.
+.SH "SYNOPSIS"
+
+
+git\-whatchanged <option>...
+
+.SH "DESCRIPTION"
+
+
+Shows commit logs and diff output each commit introduces\&. The command internally invokes git\-rev\-list piped to git\-diff\-tree, and takes command line options for both of these commands\&.
+
+
+This manual page describes only the most frequently used options\&.
+
+.SH "OPTIONS"
+
+.TP
+\-p
+Show textual diffs, instead of the git internal diff output format that is useful only to tell the changed paths and their nature of changes\&.
+
+.TP
+\-\-max\-count=<n>
+Limit output to <n> commits\&.
+
+.TP
+<since>\&.\&.<until>
+Limit output to between the two named commits (bottom exclusive, top inclusive)\&.
+
+.TP
+\-r
+Show git internal diff output, but for the whole tree, not just the top level\&.
+
+.TP
+\-\-pretty=<format>
+Controls the output format for the commit logs\&. <format> can be one of raw, medium, short, full, and oneline\&.
+
+.TP
+\-m
+By default, differences for merge commits are not shown\&. With this flag, show differences to that commit from all of its parents\&.
+
+.nf
+However, it is not very useful in general, although it
+*is* useful on a file\-by\-file basis\&.
+.fi
+
+.SH "EXAMPLES"
+
+.TP
+git\-whatchanged \-p v2\&.6\&.12\&.\&. include/scsi drivers/scsi
+Show as patches the commits since version v2\&.6\&.12 that changed any file in the include/scsi or drivers/scsi subdirectories
+
+.TP
+git\-whatchanged \-\-since="2 weeks ago" -- gitk
+Show the changes during the last two weeks to the file gitk\&. The "\-\-" is necessary to avoid confusion with the branch named gitk 
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/git-write-tree.1 b/man1/git-write-tree.1
new file mode 100755 (executable)
index 0000000..2b1aeb9
--- /dev/null
@@ -0,0 +1,59 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT-WRITE-TREE" 1 "" "" ""
+.SH NAME
+git-write-tree \- Creates a tree object from the current index
+.SH "SYNOPSIS"
+
+
+git\-write\-tree [\-\-missing\-ok]
+
+.SH "DESCRIPTION"
+
+
+Creates a tree object using the current index\&.
+
+
+The index must be in a fully merged state\&.
+
+
+Conceptually, git\-write\-tree sync()s the current index contents into a set of tree files\&. In order to have that match what is actually in your directory right now, you need to have done a git\-update\-index phase before you did the git\-write\-tree\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-missing\-ok
+Normally git\-write\-tree ensures that the objects referenced by the directory exist in the object database\&. This option disables this check\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man1/gitk.1 b/man1/gitk.1
new file mode 100755 (executable)
index 0000000..2e3aabb
--- /dev/null
@@ -0,0 +1,67 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GITK" 1 "" "" ""
+.SH NAME
+gitk \- Some git command not yet documented.
+.SH "SYNOPSIS"
+
+
+gitk [ \-\-option ] <args>...
+
+.SH "DESCRIPTION"
+
+
+Does something not yet documented\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-option
+Some option not yet documented\&.
+
+.TP
+<args>...
+Some argument not yet documented\&.
+
+.SH "EXAMPLES"
+
+.TP
+gitk v2\&.6\&.12\&.\&. include/scsi drivers/scsi
+Show as the changes since version v2\&.6\&.12 that changed any file in the include/scsi or drivers/scsi subdirectories
+
+.TP
+gitk \-\-since="2 weeks ago" -- gitk
+Show the changes during the last two weeks to the file gitk\&. The "\-\-" is necessary to avoid confusion with the branch named gitk 
+
+.SH "AUTHOR"
+
+
+Written by Paul Mackerras <paulus@samba\&.org>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+
diff --git a/man7/git.7 b/man7/git.7
new file mode 100755 (executable)
index 0000000..ffe9465
--- /dev/null
@@ -0,0 +1,1076 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "GIT" 7 "" "" ""
+.SH NAME
+git \- the stupid content tracker
+.SH "SYNOPSIS"
+
+
+git [\-\-version] [\-\-exec\-path[=GIT_EXEC_PATH]] [\-\-help] COMMAND [ARGS]
+
+.SH "DESCRIPTION"
+
+
+git is both a program and a directory content tracker system\&. The program git is just a wrapper to reach the core git programs (or a potty if you like, as it's not exactly porcelain but still brings your stuff to the plumbing)\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-version
+prints the git suite version that the git program came from\&.
+
+.TP
+\-\-help
+prints the synopsis and a list of available commands\&. If a git command is named this option will bring up the man\-page for that command\&.
+
+.TP
+\-\-exec\-path
+path to wherever your core git programs are installed\&. This can also be controlled by setting the GIT_EXEC_PATH environment variable\&. If no path is given git will print the current setting and then exit\&.
+
+.SH "NOT LEARNING CORE GIT COMMANDS"
+
+
+This manual is intended to give complete background information and internal workings of git, which may be too much for most people\&. The [xref to anchor] section below contains much useful definition and clarification \- read that first\&.
+
+
+If you are interested in using git to manage (version control) projects, use Everyday GIT: \fIeveryday.html\fR as a guide to the minimum set of commands you need to know for day\-to\-day work\&. Most likely, that will get you started, and you can go a long way without knowing the low level details too much\&.
+
+
+The tutorial: \fItutorial.html\fR document covers how things internally work\&.
+
+
+If you are migrating from CVS, cvs migration: \fIcvs-migration.html\fR document may be helpful after you finish the tutorial\&.
+
+
+After you get the general feel from the tutorial and this overview page, you may want to take a look at the howto: \fIhowto-index.html\fR documents\&.
+
+.SH "CORE GIT COMMANDS"
+
+
+If you are writing your own Porcelain, you need to be familiar with most of the low level commands \-\-\- I suggest starting from \fBgit\-update\-index\fR(1) and \fBgit\-read\-tree\fR(1)\&.
+
+.SH "COMMANDS OVERVIEW"
+
+
+The git commands can helpfully be split into those that manipulate the repository, the index and the files in the working tree, those that interrogate and compare them, and those that moves objects and references between repositories\&.
+
+
+In addition, git itself comes with a spartan set of porcelain commands\&. They are usable but are not meant to compete with real Porcelains\&.
+
+
+There are also some ancillary programs that can be viewed as useful aids for using the core commands but which are unlikely to be used by SCMs layered over git\&.
+
+.SS "Manipulation commands"
+
+.TP
+\fBgit\-apply\fR(1)
+Reads a "diff \-up1" or git generated patch file and applies it to the working tree\&.
+
+.TP
+\fBgit\-checkout\-index\fR(1)
+Copy files from the index to the working tree\&.
+
+.TP
+\fBgit\-commit\-tree\fR(1)
+Creates a new commit object\&.
+
+.TP
+\fBgit\-hash\-object\fR(1)
+Computes the object ID from a file\&.
+
+.TP
+\fBgit\-index\-pack\fR(1)
+Build pack idx file for an existing packed archive\&.
+
+.TP
+\fBgit\-init\-db\fR(1)
+Creates an empty git object database, or reinitialize an existing one\&.
+
+.TP
+\fBgit\-merge\-index\fR(1)
+Runs a merge for files needing merging\&.
+
+.TP
+\fBgit\-mktag\fR(1)
+Creates a tag object\&.
+
+.TP
+\fBgit\-pack\-objects\fR(1)
+Creates a packed archive of objects\&.
+
+.TP
+\fBgit\-prune\-packed\fR(1)
+Remove extra objects that are already in pack files\&.
+
+.TP
+\fBgit\-read\-tree\fR(1)
+Reads tree information into the index\&.
+
+.TP
+\fBgit\-repo\-config\fR(1)
+Get and set options in \&.git/config\&.
+
+.TP
+\fBgit\-unpack\-objects\fR(1)
+Unpacks objects out of a packed archive\&.
+
+.TP
+\fBgit\-update\-index\fR(1)
+Registers files in the working tree to the index\&.
+
+.TP
+\fBgit\-write\-tree\fR(1)
+Creates a tree from the index\&.
+
+.SS "Interrogation commands"
+
+.TP
+\fBgit\-cat\-file\fR(1)
+Provide content or type/size information for repository objects\&.
+
+.TP
+\fBgit\-diff\-index\fR(1)
+Compares content and mode of blobs between the index and repository\&.
+
+.TP
+\fBgit\-diff\-files\fR(1)
+Compares files in the working tree and the index\&.
+
+.TP
+\fBgit\-diff\-stages\fR(1)
+Compares two "merge stages" in the index\&.
+
+.TP
+\fBgit\-diff\-tree\fR(1)
+Compares the content and mode of blobs found via two tree objects\&.
+
+.TP
+\fBgit\-fsck\-objects\fR(1)
+Verifies the connectivity and validity of the objects in the database\&.
+
+.TP
+\fBgit\-ls\-files\fR(1)
+Information about files in the index and the working tree\&.
+
+.TP
+\fBgit\-ls\-tree\fR(1)
+Displays a tree object in human readable form\&.
+
+.TP
+\fBgit\-merge\-base\fR(1)
+Finds as good common ancestors as possible for a merge\&.
+
+.TP
+\fBgit\-name\-rev\fR(1)
+Find symbolic names for given revs\&.
+
+.TP
+\fBgit\-pack\-redundant\fR(1)
+Find redundant pack files\&.
+
+.TP
+\fBgit\-rev\-list\fR(1)
+Lists commit objects in reverse chronological order\&.
+
+.TP
+\fBgit\-show\-index\fR(1)
+Displays contents of a pack idx file\&.
+
+.TP
+\fBgit\-tar\-tree\fR(1)
+Creates a tar archive of the files in the named tree object\&.
+
+.TP
+\fBgit\-unpack\-file\fR(1)
+Creates a temporary file with a blob's contents\&.
+
+.TP
+\fBgit\-var\fR(1)
+Displays a git logical variable\&.
+
+.TP
+\fBgit\-verify\-pack\fR(1)
+Validates packed git archive files\&.
+
+
+In general, the interrogate commands do not touch the files in the working tree\&.
+
+.SS "Synching repositories"
+
+.TP
+\fBgit\-clone\-pack\fR(1)
+Clones a repository into the current repository (engine for ssh and local transport)\&.
+
+.TP
+\fBgit\-fetch\-pack\fR(1)
+Updates from a remote repository (engine for ssh and local transport)\&.
+
+.TP
+\fBgit\-http\-fetch\fR(1)
+Downloads a remote git repository via HTTP by walking commit chain\&.
+
+.TP
+\fBgit\-local\-fetch\fR(1)
+Duplicates another git repository on a local system by walking commit chain\&.
+
+.TP
+\fBgit\-peek\-remote\fR(1)
+Lists references on a remote repository using upload\-pack protocol (engine for ssh and local transport)\&.
+
+.TP
+\fBgit\-receive\-pack\fR(1)
+Invoked by git\-send\-pack to receive what is pushed to it\&.
+
+.TP
+\fBgit\-send\-pack\fR(1)
+Pushes to a remote repository, intelligently\&.
+
+.TP
+\fBgit\-http\-push\fR(1)
+Push missing objects using HTTP/DAV\&.
+
+.TP
+\fBgit\-shell\fR(1)
+Restricted shell for GIT\-only SSH access\&.
+
+.TP
+\fBgit\-ssh\-fetch\fR(1)
+Pulls from a remote repository over ssh connection by walking commit chain\&.
+
+.TP
+\fBgit\-ssh\-upload\fR(1)
+Helper "server\-side" program used by git\-ssh\-fetch\&.
+
+.TP
+\fBgit\-update\-server\-info\fR(1)
+Updates auxiliary information on a dumb server to help clients discover references and packs on it\&.
+
+.TP
+\fBgit\-upload\-pack\fR(1)
+Invoked by git\-clone\-pack and git\-fetch\-pack to push what are asked for\&.
+
+.SH "PORCELAIN-ISH COMMANDS"
+
+.TP
+\fBgit\-add\fR(1)
+Add paths to the index\&.
+
+.TP
+\fBgit\-am\fR(1)
+Apply patches from a mailbox, but cooler\&.
+
+.TP
+\fBgit\-applymbox\fR(1)
+Apply patches from a mailbox, original version by Linus\&.
+
+.TP
+\fBgit\-bisect\fR(1)
+Find the change that introduced a bug by binary search\&.
+
+.TP
+\fBgit\-branch\fR(1)
+Create and Show branches\&.
+
+.TP
+\fBgit\-checkout\fR(1)
+Checkout and switch to a branch\&.
+
+.TP
+\fBgit\-cherry\-pick\fR(1)
+Cherry\-pick the effect of an existing commit\&.
+
+.TP
+\fBgit\-clone\fR(1)
+Clones a repository into a new directory\&.
+
+.TP
+\fBgit\-commit\fR(1)
+Record changes to the repository\&.
+
+.TP
+\fBgit\-diff\fR(1)
+Show changes between commits, commit and working tree, etc\&.
+
+.TP
+\fBgit\-fetch\fR(1)
+Download from a remote repository via various protocols\&.
+
+.TP
+\fBgit\-format\-patch\fR(1)
+Prepare patches for e\-mail submission\&.
+
+.TP
+\fBgit\-grep\fR(1)
+Print lines matching a pattern\&.
+
+.TP
+\fBgit\-log\fR(1)
+Shows commit logs\&.
+
+.TP
+\fBgit\-ls\-remote\fR(1)
+Shows references in a remote or local repository\&.
+
+.TP
+\fBgit\-merge\fR(1)
+Grand unified merge driver\&.
+
+.TP
+\fBgit\-mv\fR(1)
+Move or rename a file, a directory, or a symlink\&.
+
+.TP
+\fBgit\-pull\fR(1)
+Fetch from and merge with a remote repository\&.
+
+.TP
+\fBgit\-push\fR(1)
+Update remote refs along with associated objects\&.
+
+.TP
+\fBgit\-rebase\fR(1)
+Rebase local commits to the updated upstream head\&.
+
+.TP
+\fBgit\-repack\fR(1)
+Pack unpacked objects in a repository\&.
+
+.TP
+\fBgit\-reset\fR(1)
+Reset current HEAD to the specified state\&.
+
+.TP
+\fBgit\-resolve\fR(1)
+Merge two commits\&.
+
+.TP
+\fBgit\-revert\fR(1)
+Revert an existing commit\&.
+
+.TP
+\fBgit\-shortlog\fR(1)
+Summarizes git log output\&.
+
+.TP
+\fBgit\-show\-branch\fR(1)
+Show branches and their commits\&.
+
+.TP
+\fBgit\-status\fR(1)
+Shows the working tree status\&.
+
+.TP
+\fBgit\-verify\-tag\fR(1)
+Check the GPG signature of tag\&.
+
+.TP
+\fBgit\-whatchanged\fR(1)
+Shows commit logs and differences they introduce\&.
+
+.SH "ANCILLARY COMMANDS"
+
+
+Manipulators:
+
+.TP
+\fBgit\-applypatch\fR(1)
+Apply one patch extracted from an e\-mail\&.
+
+.TP
+\fBgit\-archimport\fR(1)
+Import an arch repository into git\&.
+
+.TP
+\fBgit\-convert\-objects\fR(1)
+Converts old\-style git repository\&.
+
+.TP
+\fBgit\-cvsimport\fR(1)
+Salvage your data out of another SCM people love to hate\&.
+
+.TP
+\fBgit\-cvsexportcommit\fR(1)
+Export a single commit to a CVS checkout\&.
+
+.TP
+\fBgit\-lost\-found\fR(1)
+Recover lost refs that luckily have not yet been pruned\&.
+
+.TP
+\fBgit\-merge\-one\-file\fR(1)
+The standard helper program to use with git\-merge\-index\&.
+
+.TP
+\fBgit\-prune\fR(1)
+Prunes all unreachable objects from the object database\&.
+
+.TP
+\fBgit\-relink\fR(1)
+Hardlink common objects in local repositories\&.
+
+.TP
+\fBgit\-svnimport\fR(1)
+Import a SVN repository into git\&.
+
+.TP
+\fBgit\-sh\-setup\fR(1)
+Common git shell script setup code\&.
+
+.TP
+\fBgit\-symbolic\-ref\fR(1)
+Read and modify symbolic refs\&.
+
+.TP
+\fBgit\-tag\fR(1)
+An example script to create a tag object signed with GPG\&.
+
+.TP
+\fBgit\-update\-ref\fR(1)
+Update the object name stored in a ref safely\&.
+
+
+Interrogators:
+
+.TP
+\fBgit\-check\-ref\-format\fR(1)
+Make sure ref name is well formed\&.
+
+.TP
+\fBgit\-cherry\fR(1)
+Find commits not merged upstream\&.
+
+.TP
+\fBgit\-count\-objects\fR(1)
+Count unpacked number of objects and their disk consumption\&.
+
+.TP
+\fBgit\-daemon\fR(1)
+A really simple server for git repositories\&.
+
+.TP
+\fBgit\-get\-tar\-commit\-id\fR(1)
+Extract commit ID from an archive created using git\-tar\-tree\&.
+
+.TP
+\fBgit\-mailinfo\fR(1)
+Extracts patch and authorship information from a single e\-mail message, optionally transliterating the commit message into utf\-8\&.
+
+.TP
+\fBgit\-mailsplit\fR(1)
+A stupid program to split UNIX mbox format mailbox into individual pieces of e\-mail\&.
+
+.TP
+\fBgit\-patch\-id\fR(1)
+Compute unique ID for a patch\&.
+
+.TP
+\fBgit\-parse\-remote\fR(1)
+Routines to help parsing $GIT_DIR/remotes/ files\&.
+
+.TP
+\fBgit\-request\-pull\fR(1)
+git\-request\-pull\&.
+
+.TP
+\fBgit\-rev\-parse\fR(1)
+Pick out and massage parameters\&.
+
+.TP
+\fBgit\-send\-email\fR(1)
+Send patch e\-mails out of "format\-patch \-\-mbox" output\&.
+
+.TP
+\fBgit\-symbolic\-refs\fR(1)
+Read and modify symbolic refs\&.
+
+.TP
+\fBgit\-stripspace\fR(1)
+Filter out empty lines\&.
+
+.SH "COMMANDS NOT YET DOCUMENTED"
+
+.TP
+\fBgitk\fR(1)
+The gitk repository browser\&.
+
+.SH "CONFIGURATION MECHANISM"
+
+
+Starting from 0\&.99\&.9 (actually mid 0\&.99\&.8\&.GIT), \&.git/config file is used to hold per\-repository configuration options\&. It is a simple text file modelled after \&.ini format familiar to some people\&. Here is an example:
+
+.IP
+#
+# A '#' or ';' character indicates a comment\&.
+#
+
+; core variables
+[core]
+        ; Don't trust file modes
+        filemode = false
+
+; user identity
+[user]
+        name = "Junio C Hamano"
+        email = "junkio@twinsun\&.com"
+
+
+Various commands read from the configuration file and adjust their operation accordingly\&.
+
+.SH "IDENTIFIER TERMINOLOGY"
+
+.TP
+<object>
+Indicates the object name for any type of object\&.
+
+.TP
+<blob>
+Indicates a blob object name\&.
+
+.TP
+<tree>
+Indicates a tree object name\&.
+
+.TP
+<commit>
+Indicates a commit object name\&.
+
+.TP
+<tree\-ish>
+Indicates a tree, commit or tag object name\&. A command that takes a <tree\-ish> argument ultimately wants to operate on a <tree> object but automatically dereferences <commit> and <tag> objects that point at a <tree>\&.
+
+.TP
+<type>
+Indicates that an object type is required\&. Currently one of: blob, tree, commit, or tag\&.
+
+.TP
+<file>
+Indicates a filename \- almost always relative to the root of the tree structure GIT_INDEX_FILE describes\&.
+
+.SH "SYMBOLIC IDENTIFIERS"
+
+
+Any git command accepting any <object> can also use the following symbolic notation:
+
+.TP
+HEAD
+indicates the head of the current branch (i\&.e\&. the contents of $GIT_DIR/HEAD)\&.
+
+.TP
+<tag>
+a valid tag name (i\&.e\&. the contents of $GIT_DIR/refs/tags/<tag>)\&.
+
+.TP
+<head>
+a valid head name (i\&.e\&. the contents of $GIT_DIR/refs/heads/<head>)\&.
+
+.TP
+<snap>
+a valid snapshot name (i\&.e\&. the contents of $GIT_DIR/refs/snap/<snap>)\&.
+
+.SH "FILE/DIRECTORY STRUCTURE"
+
+
+Please see repository layout: \fIrepository-layout.html\fR document\&.
+
+
+Higher level SCMs may provide and manage additional information in the $GIT_DIR\&.
+
+.SH "TERMINOLOGY"
+
+
+Please see glossary: \fIglossary.html\fR document\&.
+
+.SH "ENVIRONMENT VARIABLES"
+
+
+Various git commands use the following environment variables:
+
+.SS "The git Repository"
+
+
+These environment variables apply to all core git commands\&. Nb: it is worth noting that they may be used/overridden by SCMS sitting above git so take care if using Cogito etc\&.
+
+.TP
+GIT_INDEX_FILE
+This environment allows the specification of an alternate index file\&. If not specified, the default of $GIT_DIR/index is used\&.
+
+.TP
+GIT_OBJECT_DIRECTORY
+If the object storage directory is specified via this environment variable then the sha1 directories are created underneath \- otherwise the default $GIT_DIR/objects directory is used\&.
+
+.TP
+GIT_ALTERNATE_OBJECT_DIRECTORIES
+Due to the immutable nature of git objects, old objects can be archived into shared, read\-only directories\&. This variable specifies a ":" separated list of git object directories which can be used to search for git objects\&. New objects will not be written to these directories\&.
+
+.TP
+GIT_DIR
+If the GIT_DIR environment variable is set then it specifies a path to use instead of the default \&.git for the base of the repository\&.
+
+.SS "git Commits"
+
+.TP
+GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, 
+see \fBgit\-commit\-tree\fR(1) 
+
+.SS "git Diffs"
+
+.TP
+GIT_DIFF_OPTS, GIT_EXTERNAL_DIFF, 
+see the "generating patches" section in : \fBgit\-diff\-index\fR(1); \fBgit\-diff\-files\fR(1); \fBgit\-diff\-tree\fR(1) 
+
+.SH "DISCUSSION"
+
+
+"git" can mean anything, depending on your mood\&.
+
+.TP 3
+\(bu
+random three\-letter combination that is pronounceable, and not actually used by any common UNIX command\&. The fact that it is a mispronunciation of "get" may or may not be relevant\&.
+.TP
+\(bu
+stupid\&. contemptible and despicable\&. simple\&. Take your pick from the dictionary of slang\&.
+.TP
+\(bu
+"global information tracker": you're in a good mood, and it actually works for you\&. Angels sing, and a light suddenly fills the room\&.
+.TP
+\(bu
+"goddamn idiotic truckload of sh*t": when it breaks
+.LP
+
+
+This is a stupid (but extremely fast) directory content manager\&. It doesn't do a whole lot, but what it does do is track directory contents efficiently\&.
+
+
+There are two object abstractions: the "object database", and the "current directory cache" aka "index"\&.
+
+.SS "The Object Database"
+
+
+The object database is literally just a content\-addressable collection of objects\&. All objects are named by their content, which is approximated by the SHA1 hash of the object itself\&. Objects may refer to other objects (by referencing their SHA1 hash), and so you can build up a hierarchy of objects\&.
+
+
+All objects have a statically determined "type" aka "tag", which is determined at object creation time, and which identifies the format of the object (i\&.e\&. how it is used, and how it can refer to other objects)\&. There are currently four different object types: "blob", "tree", "commit" and "tag"\&.
+
+
+A "blob" object cannot refer to any other object, and is, like the type implies, a pure storage object containing some user data\&. It is used to actually store the file data, i\&.e\&. a blob object is associated with some particular version of some file\&.
+
+
+A "tree" object is an object that ties one or more "blob" objects into a directory structure\&. In addition, a tree object can refer to other tree objects, thus creating a directory hierarchy\&.
+
+
+A "commit" object ties such directory hierarchies together into a DAG of revisions \- each "commit" is associated with exactly one tree (the directory hierarchy at the time of the commit)\&. In addition, a "commit" refers to one or more "parent" commit objects that describe the history of how we arrived at that directory hierarchy\&.
+
+
+As a special case, a commit object with no parents is called the "root" object, and is the point of an initial project commit\&. Each project must have at least one root, and while you can tie several different root objects together into one project by creating a commit object which has two or more separate roots as its ultimate parents, that's probably just going to confuse people\&. So aim for the notion of "one root object per project", even if git itself does not enforce that\&.
+
+
+A "tag" object symbolically identifies and can be used to sign other objects\&. It contains the identifier and type of another object, a symbolic name (of course!) and, optionally, a signature\&.
+
+
+Regardless of object type, all objects share the following characteristics: they are all deflated with zlib, and have a header that not only specifies their type, but also provides size information about the data in the object\&. It's worth noting that the SHA1 hash that is used to name the object is the hash of the original data plus this header, so sha1sum file does not match the object name for file\&. (Historical note: in the dawn of the age of git the hash was the sha1 of the compressed object\&.)
+
+
+As a result, the general consistency of an object can always be tested independently of the contents or the type of the object: all objects can be validated by verifying that (a) their hashes match the content of the file and (b) the object successfully inflates to a stream of bytes that forms a sequence of <ascii type without space> + <space> + <ascii decimal size> + <byte\\0> + <binary object data>\&.
+
+
+The structured objects can further have their structure and connectivity to other objects verified\&. This is generally done with the git\-fsck\-objects program, which generates a full dependency graph of all objects, and verifies their internal consistency (in addition to just verifying their superficial consistency through the hash)\&.
+
+
+The object types in some more detail:
+
+.SS "Blob Object"
+
+
+A "blob" object is nothing but a binary blob of data, and doesn't refer to anything else\&. There is no signature or any other verification of the data, so while the object is consistent (it is indexed by its sha1 hash, so the data itself is certainly correct), it has absolutely no other attributes\&. No name associations, no permissions\&. It is purely a blob of data (i\&.e\&. normally "file contents")\&.
+
+
+In particular, since the blob is entirely defined by its data, if two files in a directory tree (or in multiple different versions of the repository) have the same contents, they will share the same blob object\&. The object is totally independent of its location in the directory tree, and renaming a file does not change the object that file is associated with in any way\&.
+
+
+A blob is typically created when \fBgit\-update\-index\fR(1) is run, and its data can be accessed by \fBgit\-cat\-file\fR(1)\&.
+
+.SS "Tree Object"
+
+
+The next hierarchical object type is the "tree" object\&. A tree object is a list of mode/name/blob data, sorted by name\&. Alternatively, the mode data may specify a directory mode, in which case instead of naming a blob, that name is associated with another TREE object\&.
+
+
+Like the "blob" object, a tree object is uniquely determined by the set contents, and so two separate but identical trees will always share the exact same object\&. This is true at all levels, i\&.e\&. it's true for a "leaf" tree (which does not refer to any other trees, only blobs) as well as for a whole subdirectory\&.
+
+
+For that reason a "tree" object is just a pure data abstraction: it has no history, no signatures, no verification of validity, except that since the contents are again protected by the hash itself, we can trust that the tree is immutable and its contents never change\&.
+
+
+So you can trust the contents of a tree to be valid, the same way you can trust the contents of a blob, but you don't know where those contents came from\&.
+
+
+Side note on trees: since a "tree" object is a sorted list of "filename+content", you can create a diff between two trees without actually having to unpack two trees\&. Just ignore all common parts, and your diff will look right\&. In other words, you can effectively (and efficiently) tell the difference between any two random trees by O(n) where "n" is the size of the difference, rather than the size of the tree\&.
+
+
+Side note 2 on trees: since the name of a "blob" depends entirely and exclusively on its contents (i\&.e\&. there are no names or permissions involved), you can see trivial renames or permission changes by noticing that the blob stayed the same\&. However, renames with data changes need a smarter "diff" implementation\&.
+
+
+A tree is created with \fBgit\-write\-tree\fR(1) and its data can be accessed by \fBgit\-ls\-tree\fR(1)\&. Two trees can be compared with \fBgit\-diff\-tree\fR(1)\&.
+
+.SS "Commit Object"
+
+
+The "commit" object is an object that introduces the notion of history into the picture\&. In contrast to the other objects, it doesn't just describe the physical state of a tree, it describes how we got there, and why\&.
+
+
+A "commit" is defined by the tree\-object that it results in, the parent commits (zero, one or more) that led up to that point, and a comment on what happened\&. Again, a commit is not trusted per se: the contents are well\-defined and "safe" due to the cryptographically strong signatures at all levels, but there is no reason to believe that the tree is "good" or that the merge information makes sense\&. The parents do not have to actually have any relationship with the result, for example\&.
+
+
+Note on commits: unlike real SCM's, commits do not contain rename information or file mode change information\&. All of that is implicit in the trees involved (the result tree, and the result trees of the parents), and describing that makes no sense in this idiotic file manager\&.
+
+
+A commit is created with \fBgit\-commit\-tree\fR(1) and its data can be accessed by \fBgit\-cat\-file\fR(1)\&.
+
+.SS "Trust"
+
+
+An aside on the notion of "trust"\&. Trust is really outside the scope of "git", but it's worth noting a few things\&. First off, since everything is hashed with SHA1, you can trust that an object is intact and has not been messed with by external sources\&. So the name of an object uniquely identifies a known state \- just not a state that you may want to trust\&.
+
+
+Furthermore, since the SHA1 signature of a commit refers to the SHA1 signatures of the tree it is associated with and the signatures of the parent, a single named commit specifies uniquely a whole set of history, with full contents\&. You can't later fake any step of the way once you have the name of a commit\&.
+
+
+So to introduce some real trust in the system, the only thing you need to do is to digitally sign just one special note, which includes the name of a top\-level commit\&. Your digital signature shows others that you trust that commit, and the immutability of the history of commits tells others that they can trust the whole history\&.
+
+
+In other words, you can easily validate a whole archive by just sending out a single email that tells the people the name (SHA1 hash) of the top commit, and digitally sign that email using something like GPG/PGP\&.
+
+
+To assist in this, git also provides the tag object...
+
+.SS "Tag Object"
+
+
+Git provides the "tag" object to simplify creating, managing and exchanging symbolic and signed tokens\&. The "tag" object at its simplest simply symbolically identifies another object by containing the sha1, type and symbolic name\&.
+
+
+However it can optionally contain additional signature information (which git doesn't care about as long as there's less than 8k of it)\&. This can then be verified externally to git\&.
+
+
+Note that despite the tag features, "git" itself only handles content integrity; the trust framework (and signature provision and verification) has to come from outside\&.
+
+
+A tag is created with \fBgit\-mktag\fR(1), its data can be accessed by \fBgit\-cat\-file\fR(1), and the signature can be verified by \fBgit\-verify\-tag\fR(1)\&.
+
+.SH "THE "INDEX" AKA "CURRENT DIRECTORY CACHE""
+
+
+The index is a simple binary file, which contains an efficient representation of a virtual directory content at some random time\&. It does so by a simple array that associates a set of names, dates, permissions and content (aka "blob") objects together\&. The cache is always kept ordered by name, and names are unique (with a few very specific rules) at any point in time, but the cache has no long\-term meaning, and can be partially updated at any time\&.
+
+
+In particular, the index certainly does not need to be consistent with the current directory contents (in fact, most operations will depend on different ways to make the index not be consistent with the directory hierarchy), but it has three very important attributes:
+
+
+(a) it can re\-generate the full state it caches (not just the directory structure: it contains pointers to the "blob" objects so that it can regenerate the data too)
+
+
+As a special case, there is a clear and unambiguous one\-way mapping from a current directory cache to a "tree object", which can be efficiently created from just the current directory cache without actually looking at any other data\&. So a directory cache at any one time uniquely specifies one and only one "tree" object (but has additional data to make it easy to match up that tree object with what has happened in the directory)
+
+
+(b) it has efficient methods for finding inconsistencies between that cached state ("tree object waiting to be instantiated") and the current state\&.
+
+
+(c) it can additionally efficiently represent information about merge conflicts between different tree objects, allowing each pathname to be associated with sufficient information about the trees involved that you can create a three\-way merge between them\&.
+
+
+Those are the three ONLY things that the directory cache does\&. It's a cache, and the normal operation is to re\-generate it completely from a known tree object, or update/compare it with a live tree that is being developed\&. If you blow the directory cache away entirely, you generally haven't lost any information as long as you have the name of the tree that it described\&.
+
+
+At the same time, the index is at the same time also the staging area for creating new trees, and creating a new tree always involves a controlled modification of the index file\&. In particular, the index file can have the representation of an intermediate tree that has not yet been instantiated\&. So the index can be thought of as a write\-back cache, which can contain dirty information that has not yet been written back to the backing store\&.
+
+.SH "THE WORKFLOW"
+
+
+Generally, all "git" operations work on the index file\&. Some operations work purely on the index file (showing the current state of the index), but most operations move data to and from the index file\&. Either from the database or from the working directory\&. Thus there are four main combinations:
+
+.SS "1) working directory -> index"
+
+
+You update the index with information from the working directory with the \fBgit\-update\-index\fR(1) command\&. You generally update the index information by just specifying the filename you want to update, like so:
+
+.nf
+git\-update\-index filename
+.fi
+
+
+but to avoid common mistakes with filename globbing etc, the command will not normally add totally new entries or remove old entries, i\&.e\&. it will normally just update existing cache entries\&.
+
+
+To tell git that yes, you really do realize that certain files no longer exist, or that new files should be added, you should use the \-\-remove and \-\-add flags respectively\&.
+
+
+NOTE! A \-\-remove flag does not mean that subsequent filenames will necessarily be removed: if the files still exist in your directory structure, the index will be updated with their new status, not removed\&. The only thing \-\-remove means is that update\-cache will be considering a removed file to be a valid thing, and if the file really does not exist any more, it will update the index accordingly\&.
+
+
+As a special case, you can also do git\-update\-index \-\-refresh, which will refresh the "stat" information of each index to match the current stat information\&. It will not update the object status itself, and it will only update the fields that are used to quickly test whether an object still matches its old backing store object\&.
+
+.SS "2) index -> object database"
+
+
+You write your current index file to a "tree" object with the program
+
+.nf
+git\-write\-tree
+.fi
+
+
+that doesn't come with any options \- it will just write out the current index into the set of tree objects that describe that state, and it will return the name of the resulting top\-level tree\&. You can use that tree to re\-generate the index at any time by going in the other direction:
+
+.SS "3) object database -> index"
+
+
+You read a "tree" file from the object database, and use that to populate (and overwrite \- don't do this if your index contains any unsaved state that you might want to restore later!) your current index\&. Normal operation is just
+
+.nf
+git\-read\-tree <sha1 of tree>
+.fi
+
+
+and your index file will now be equivalent to the tree that you saved earlier\&. However, that is only your index file: your working directory contents have not been modified\&.
+
+.SS "4) index -> working directory"
+
+
+You update your working directory from the index by "checking out" files\&. This is not a very common operation, since normally you'd just keep your files updated, and rather than write to your working directory, you'd tell the index files about the changes in your working directory (i\&.e\&. git\-update\-index)\&.
+
+
+However, if you decide to jump to a new version, or check out somebody else's version, or just restore a previous tree, you'd populate your index file with read\-tree, and then you need to check out the result with
+
+.nf
+git\-checkout\-index filename
+.fi
+
+
+or, if you want to check out all of the index, use \-a\&.
+
+
+NOTE! git\-checkout\-index normally refuses to overwrite old files, so if you have an old version of the tree already checked out, you will need to use the "\-f" flag (before the "\-a" flag or the filename) to force the checkout\&.
+
+
+Finally, there are a few odds and ends which are not purely moving from one representation to the other:
+
+.SS "5) Tying it all together"
+
+
+To commit a tree you have instantiated with "git\-write\-tree", you'd create a "commit" object that refers to that tree and the history behind it \- most notably the "parent" commits that preceded it in history\&.
+
+
+Normally a "commit" has one parent: the previous state of the tree before a certain change was made\&. However, sometimes it can have two or more parent commits, in which case we call it a "merge", due to the fact that such a commit brings together ("merges") two or more previous states represented by other commits\&.
+
+
+In other words, while a "tree" represents a particular directory state of a working directory, a "commit" represents that state in "time", and explains how we got there\&.
+
+
+You create a commit object by giving it the tree that describes the state at the time of the commit, and a list of parents:
+
+.nf
+git\-commit\-tree <tree> \-p <parent> [\-p <parent2> \&.\&.]
+.fi
+
+
+and then giving the reason for the commit on stdin (either through redirection from a pipe or file, or by just typing it at the tty)\&.
+
+
+git\-commit\-tree will return the name of the object that represents that commit, and you should save it away for later use\&. Normally, you'd commit a new HEAD state, and while git doesn't care where you save the note about that state, in practice we tend to just write the result to the file pointed at by \&.git/HEAD, so that we can always see what the last committed state was\&.
+
+
+Here is an ASCII art by Jon Loeliger that illustrates how various pieces fit together\&.
+
+.IP
+
+                     commit\-tree
+                      commit obj
+                       +\-\-\-\-+
+                       |    |
+                       |    |
+                       V    V
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+                    | Object DB |
+                    |  Backing  |
+                    |   Store   |
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+                       ^
+           write\-tree  |     |
+             tree obj  |     |
+                       |     |  read\-tree
+                       |     |  tree obj
+                             V
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+                    |   Index   |
+                    |  "cache"  |
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+         update\-index  ^
+             blob obj  |     |
+                       |     |
+    checkout\-index \-u  |     |  checkout\-index
+             stat      |     |  blob obj
+                             V
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+                    |  Working  |
+                    | Directory |
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+
+.SS "6) Examining the data"
+
+
+You can examine the data represented in the object database and the index with various helper tools\&. For every object, you can use \fBgit\-cat\-file\fR(1) to examine details about the object:
+
+.nf
+git\-cat\-file \-t <objectname>
+.fi
+
+
+shows the type of the object, and once you have the type (which is usually implicit in where you find the object), you can use
+
+.nf
+git\-cat\-file blob|tree|commit|tag <objectname>
+.fi
+
+
+to show its contents\&. NOTE! Trees have binary content, and as a result there is a special helper for showing that content, called git\-ls\-tree, which turns the binary content into a more easily readable form\&.
+
+
+It's especially instructive to look at "commit" objects, since those tend to be small and fairly self\-explanatory\&. In particular, if you follow the convention of having the top commit name in \&.git/HEAD, you can do
+
+.nf
+git\-cat\-file commit HEAD
+.fi
+
+
+to see what the top commit was\&.
+
+.SS "7) Merging multiple trees"
+
+
+Git helps you do a three\-way merge, which you can expand to n\-way by repeating the merge procedure arbitrary times until you finally "commit" the state\&. The normal situation is that you'd only do one three\-way merge (two parents), and commit it, but if you like to, you can do multiple parents in one go\&.
+
+
+To do a three\-way merge, you need the two sets of "commit" objects that you want to merge, use those to find the closest common parent (a third "commit" object), and then use those commit objects to find the state of the directory ("tree" object) at these points\&.
+
+
+To get the "base" for the merge, you first look up the common parent of two commits with
+
+.nf
+git\-merge\-base <commit1> <commit2>
+.fi
+
+
+which will return you the commit they are both based on\&. You should now look up the "tree" objects of those commits, which you can easily do with (for example)
+
+.nf
+git\-cat\-file commit <commitname> | head \-1
+.fi
+
+
+since the tree object information is always the first line in a commit object\&.
+
+
+Once you know the three trees you are going to merge (the one "original" tree, aka the common case, and the two "result" trees, aka the branches you want to merge), you do a "merge" read into the index\&. This will complain if it has to throw away your old index contents, so you should make sure that you've committed those \- in fact you would normally always do a merge against your last commit (which should thus match what you have in your current index anyway)\&.
+
+
+To do the merge, do
+
+.nf
+git\-read\-tree \-m \-u <origtree> <yourtree> <targettree>
+.fi
+
+
+which will do all trivial merge operations for you directly in the index file, and you can just write the result out with git\-write\-tree\&.
+
+
+Historical note\&. We did not have \-u facility when this section was first written, so we used to warn that the merge is done in the index file, not in your working tree, and your working tree will not match your index after this step\&. This is no longer true\&. The above command, thanks to \-u option, updates your working tree with the merge results for paths that have been trivially merged\&.
+
+.SS "8) Merging multiple trees, continued"
+
+
+Sadly, many merges aren't trivial\&. If there are files that have been added\&.moved or removed, or if both branches have modified the same file, you will be left with an index tree that contains "merge entries" in it\&. Such an index tree can NOT be written out to a tree object, and you will have to resolve any such merge clashes using other tools before you can write out the result\&.
+
+
+You can examine such index state with git\-ls\-files \-\-unmerged command\&. An example:
+
+.IP
+$ git\-read\-tree \-m $orig HEAD $target
+$ git\-ls\-files \-\-unmerged
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1       hello\&.c
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2       hello\&.c
+100644 cc44c73eb783565da5831b4d820c962954019b69 3       hello\&.c
+
+Each line of the git\-ls\-files \-\-unmerged output begins with the blob mode bits, blob SHA1, stage number, and the filename\&. The stage number is git's way to say which tree it came from: stage 1 corresponds to $orig tree, stage 2 HEAD tree, and stage3 $target tree\&.
+
+
+Earlier we said that trivial merges are done inside git\-read\-tree \-m\&. For example, if the file did not change from $orig to HEAD nor $target, or if the file changed from $orig to HEAD and $orig to $target the same way, obviously the final outcome is what is in HEAD\&. What the above example shows is that file hello\&.c was changed from $orig to HEAD and $orig to $target in a different way\&. You could resolve this by running your favorite 3\-way merge program, e\&.g\&. diff3 or merge, on the blob objects from these three stages yourself, like this:
+
+.IP
+$ git\-cat\-file blob 263414f\&.\&.\&. >hello\&.c~1
+$ git\-cat\-file blob 06fa6a2\&.\&.\&. >hello\&.c~2
+$ git\-cat\-file blob cc44c73\&.\&.\&. >hello\&.c~3
+$ merge hello\&.c~2 hello\&.c~1 hello\&.c~3
+
+This would leave the merge result in hello\&.c~2 file, along with conflict markers if there are conflicts\&. After verifying the merge result makes sense, you can tell git what the final merge result for this file is by:
+
+.nf
+mv \-f hello\&.c~2 hello\&.c
+git\-update\-index hello\&.c
+.fi
+
+
+When a path is in unmerged state, running git\-update\-index for that path tells git to mark the path resolved\&.
+
+
+The above is the description of a git merge at the lowest level, to help you understand what conceptually happens under the hood\&. In practice, nobody, not even git itself, uses three git\-cat\-file for this\&. There is git\-merge\-index program that extracts the stages to temporary files and calls a "merge" script on it:
+
+.nf
+git\-merge\-index git\-merge\-one\-file hello\&.c
+.fi
+
+
+and that is what higher level git resolve is implemented with\&.
+
+.SH "AUTHORS"
+
+.TP 3
+\(bu
+git's founding father is Linus Torvalds <torvalds@osdl\&.org>\&.
+.TP
+\(bu
+The current git nurse is Junio C Hamano <junkio@cox\&.net>\&.
+.TP
+\(bu
+The git potty was written by Andres Ericsson <ae@op5\&.se>\&.
+.TP
+\(bu
+General upbringing is handled by the git\-list <git@vger\&.kernel\&.org>\&.
+.LP
+
+.SH "DOCUMENTATION"
+
+
+The documentation for git suite was started by David Greaves <david@dgreaves\&.com>, and later enhanced greatly by the contributors on the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "GIT"
+
+
+Part of the \fBgit\fR(7) suite
+