Fix manpage autogeneration.
authorJunio C Hamano <junio@hera.kernel.org>
Wed, 9 Aug 2006 01:17:43 +0000 (01:17 +0000)
committerJunio C Hamano <junio@hera.kernel.org>
Wed, 9 Aug 2006 01:17:43 +0000 (01:17 +0000)
119 files changed:
man1/git-add.1 [new file with mode: 0755]
man1/git-am.1 [new file with mode: 0755]
man1/git-annotate.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-blame.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-clean.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-cvsserver.1 [new file with mode: 0755]
man1/git-daemon.1 [new file with mode: 0755]
man1/git-describe.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-imap-send.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-instaweb.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-tree.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-mktree.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-p4import.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-quiltimport.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-rerere.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-rm.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-show.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-svn.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-upload-tar.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..f75722a
--- /dev/null
@@ -0,0 +1,98 @@
+.\"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"
+
+
+\fIgit\-add\fR [\-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"\&.
+
+
+It only adds non\-ignored files, to add ignored files use "git update\-index \-\-add"\&.
+
+.SH "OPTIONS"
+
+.TP
+<file>...
+Files to add to the index (see \fBgit\-ls\-files\fR(1))\&.
+
+.TP
+\-n
+Don't actually add the file(s), just show if they exist\&.
+
+.TP
+\-v
+Be verbose\&.
+
+.TP
+\-\-
+This option can be used to separate command\-line options from the list of files, (useful when filenames might be mistaken for command\-line options)\&.
+
+.SH "DISCUSSION"
+
+
+The list of <file> given to the command is fed to git\-ls\-files command to list files that are not registered 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 "SEE ALSO"
+
+
+\fBgit\-rm\fR(1) \fBgit\-ls\-files\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-am.1 b/man1/git-am.1
new file mode 100755 (executable)
index 0000000..c9d321d
--- /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-AM" 1 "" "" ""
+.SH NAME
+git-am \- Apply a series of patches in a mailbox
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-am\fR [\-\-signoff] [\-\-dotest=<dir>] [\-\-utf8] [\-\-binary] [\-\-3way]
+         [\-\-interactive] [\-\-whitespace=<option>] <mbox>...
+\fIgit\-am\fR [\-\-skip | \-\-resolved]
+.fi
+
+.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
+\-\-whitespace=<option>
+This flag is passed to the git\-apply program that applies the 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 \fIgit\-applymbox\fR does\&. You can recover from this in one of two ways:
+
+.TP 3
+1.
+skip the current one by re\-running the command with \fI\-\-skip\fR 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 \fI\-\-resolved\fR 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), \fBgit\-apply\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-annotate.1 b/man1/git-annotate.1
new file mode 100755 (executable)
index 0000000..fac1cff
--- /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-ANNOTATE" 1 "" "" ""
+.SH NAME
+git-annotate \- Annotate file lines with commit info
+.SH "SYNOPSIS"
+
+
+git\-annotate [options] file [revision]
+
+.SH "DESCRIPTION"
+
+
+Annotates each line in the given file with information from the commit which introduced the line\&. Optionally annotate from a given revision\&.
+
+.SH "OPTIONS"
+
+.TP
+\-l, \-\-long
+Show long rev (Defaults off)\&.
+
+.TP
+\-t, \-\-time
+Show raw timestamp (Defaults off)\&.
+
+.TP
+\-r, \-\-rename
+Follow renames (Defaults on)\&.
+
+.TP
+\-S, \-\-rev\-file <revs\-file>
+Use revs from revs\-file instead of calling git\-rev\-list\&.
+
+.TP
+\-h, \-\-help
+Show help message\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-blame\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Ryan Anderson <ryan@michonline\&.com>\&.
+
+.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..fbe9a19
--- /dev/null
@@ -0,0 +1,135 @@
+.\"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"
+
+.nf
+\fIgit\-apply\fR [\-\-stat] [\-\-numstat] [\-\-summary] [\-\-check] [\-\-index] [\-\-apply]
+          [\-\-no\-add] [\-\-index\-info] [\-\-allow\-binary\-replacement] [\-z] [\-pNUM]
+          [\-CNUM] [\-\-whitespace=<nowarn|warn|error|error\-all|strip>]
+          [<patch>...]
+.fi
+
+.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\&. \fI\-\fR 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 \fIindex information\fR 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
+\-p<n>
+Remove <n> leading slashes from traditional diff paths\&. The default is 1\&.
+
+.TP
+\-C<n>
+Ensure at least <n> lines of surrounding context match before and after each change\&. When fewer lines of surrounding context exist they all must match\&. By default no context is ever ignored\&.
+
+.TP
+\-\-apply
+If you use any of the options marked “Turns off "apply"” 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\&.
+
+.TP
+\-\-whitespace=<option>
+When applying a patch, detect a new or modified line that ends with trailing whitespaces (this includes a line that solely consists of whitespaces)\&. By default, the command outputs warning messages and applies the patch\&. When git\-apply is used for statistics and not applying a patch, it defaults to nowarn\&. You can use different <option> to control this behavior:
+
+.RS
+.TP 3
+\(bu
+ nowarn turns off the trailing whitespace warning\&.
+.TP
+\(bu
+ warn outputs warnings for a few such errors, but applies the patch (default)\&.
+.TP
+\(bu
+ error outputs warnings for a few such errors, and refuses to apply the patch\&.
+.TP
+\(bu
+ error\-all is similar to error but shows all errors\&.
+.TP
+\(bu
+ strip outputs warnings for a few such errors, strips out the trailing whitespaces and applies the patch\&.
+.LP
+.RE
+.IP
+
+.SH "CONFIGURATION"
+
+.TP
+apply\&.whitespace
+When no \-\-whitespace flag is given from the command line, this configuration item is used as the default\&.
+
+.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..8f4b87c
--- /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"
+
+
+\fIgit\-applymbox\fR [\-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 \fIcleans up\fR the Subject: header line to extract the title line for the commit log message, among which (1) remove \fIRe:\fR or \fIre:\fR, (2) leading whitespaces, (3) \fI[\fR up to \fI]\fR, typically \fI[PATCH]\fR, and then prepends "[PATCH] "\&. This flag forbids this munging, and is most useful when used to read back \fIgit format\-patch \-\-mbox\fR 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 \fIgit applymbox\fR with \fI\-c \&.dotest/<num>\fR 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 \fISubmittingPatches\fR 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 \fISubmittingPatches\fR document to learn what "Signed\-off\-by" line means\&. You can also just say \fIyes\fR, \fItrue\fR, \fIme\fR, or \fIplease\fR 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..6cfd8d3
--- /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"
+
+
+\fIgit\-applypatch\fR <msg> <patch> <info> [<signoff>]
+
+.SH "DESCRIPTION"
+
+
+Takes three files <msg>, <patch>, and <info> prepared from an e\-mail message by \fIgit\-mailinfo\fR, 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..cfcd6e7
--- /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-ARCHIMPORT" 1 "" "" ""
+.SH NAME
+git-archimport \- Import an Arch repository into git
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-archimport\fR [\-h] [\-v] [\-o] [\-a] [\-f] [\-T] [\-D depth] [\-t tempdir]
+               <archive/branch> [ <archive/branch> ]
+.fi
+
+.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 supplied\&. 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 \fIinitial import\fR or \fItag\fR 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..3d6aed3
--- /dev/null
@@ -0,0 +1,148 @@
+.\"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"
+
+
+\fIgit bisect\fR <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 \fIgit\-rev\-list \-\-bisect\fR 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:
+
+.nf
+$ 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
+.fi
+
+
+When you give at least one bad and one good versions, it will bisect the revision tree and say something like:
+
+.nf
+Bisecting: 675 revisions left to test after this
+.fi
+
+
+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
+
+.nf
+$ git bisect good                       # this one is good
+.fi
+
+
+which will now say
+
+.nf
+Bisecting: 337 revisions left to test after this
+.fi
+
+
+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
+
+.nf
+$ git bisect reset
+.fi
+
+
+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
+
+.nf
+$ git bisect visualize
+.fi
+
+
+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
+
+.nf
+$ git bisect replay that\-file
+.fi
+
+
+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:
+
+.nf
+$ 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
+.fi
+
+
+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:
+
+.nf
+$ git bisect start arch/i386 include/asm\-i386
+.fi
+
+.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-blame.1 b/man1/git-blame.1
new file mode 100755 (executable)
index 0000000..e8f5636
--- /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-BLAME" 1 "" "" ""
+.SH NAME
+git-blame \- Blame file lines on commits
+.SH "SYNOPSIS"
+
+
+git\-blame file [options] file [revision]
+
+.SH "DESCRIPTION"
+
+
+Annotates each line in the given file with information from the commit which introduced the line\&. Start annotation from the given revision\&.
+
+.SH "OPTIONS"
+
+.TP
+\-c, \-\-compatibility
+Use the same output mode as git\-annotate (Default: off)\&.
+
+.TP
+\-l, \-\-long
+Show long rev (Default: off)\&.
+
+.TP
+\-t, \-\-time
+Show raw timestamp (Default: off)\&.
+
+.TP
+\-S, \-\-rev\-file <revs\-file>
+Use revs from revs\-file instead of calling git\-rev\-list\&.
+
+.TP
+\-h, \-\-help
+Show help message\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-annotate\fR(1)
+
+.SH "AUTHOR"
+
+
+Written by Fredrik Kuivinen <freku045@student\&.liu\&.se>\&.
+
+.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..b6ac7a0
--- /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-BRANCH" 1 "" "" ""
+.SH NAME
+git-branch \- List, create, or delete branches.
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-branch\fR [\-r]
+\fIgit\-branch\fR [\-l] [\-f] <branchname> [<start\-point>]
+\fIgit\-branch\fR (\-d | \-D) <branchname>...
+.fi
+
+.SH "DESCRIPTION"
+
+
+With no arguments given (or just \-r) a list of available branches will be shown, the current branch will be highlighted with an asterisk\&.
+
+
+In its second form, a new branch named <branchname> will be created\&. It will start out with a head equal to the one given as <start\-point>\&. If no <start\-point> is given, the branch will be created with a head equal to that of the currently checked out branch\&.
+
+
+With a \-d or \-D option, <branchname> will be deleted\&. You may specify more than one branch for deletion\&. If the branch currently has a ref log then the ref log will also be deleted\&.
+
+.SH "OPTIONS"
+
+.TP
+\-d
+Delete a branch\&. The branch must be fully merged\&.
+
+.TP
+\-D
+Delete a branch irrespective of its index status\&.
+
+.TP
+\-l
+Create the branch's ref log\&. This activates recording of all changes to made the branch ref, enabling use of date
+
+.TP
+\-f
+Force the creation of a new branch even if it means deleting a branch that already exists with the same name\&.
+
+.TP
+\-r
+List only the "remote" branches\&.
+
+.TP
+<branchname>
+The name of the branch to create or delete\&. The new branch name must pass all checks defined by \fBgit\-check\-ref\-format\fR(1)\&. Some of these checks may restrict the characters allowed in a branch name\&.
+
+.TP
+<start\-point>
+The new branch will be created with a HEAD equal to this\&. It may be given as a branch name, a commit\-id, or a tag\&. If this option is omitted, the current branch is assumed\&.
+
+.SH "EXAMPLES"
+
+.TP
+Start development off of a known tag
+
+.nf
+$ git clone git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.6 my2\&.6
+$ cd my2\&.6
+$ git branch my2\&.6\&.14 v2\&.6\&.14   \fB(1)\fR
+$ git checkout my2\&.6\&.14
+.fi
+.sp
+\fB1. \fRThis step and the next one could be combined into a single step with "checkout \-b my2\&.6\&.14 v2\&.6\&.14"\&.
+.br
+
+
+.TP
+Delete unneeded branch
+
+.nf
+$ git clone git://git\&.kernel\&.org/\&.\&.\&./git\&.git my\&.git
+$ cd my\&.git
+$ git branch \-D todo    \fB(1)\fR
+.fi
+.sp
+\fB1. \fRdelete todo branch even if the "master" branch does not have all commits from todo branch\&.
+.br
+
+
+.SH "NOTES"
+
+
+If you are creating a branch that you want to immediately checkout, it's easier to use the git checkout command with its \-b option to create a branch and check it out with a single command\&.
+
+.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..3a61268
--- /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-CAT-FILE" 1 "" "" ""
+.SH NAME
+git-cat-file \- Provide content or type information for repository objects
+.SH "SYNOPSIS"
+
+
+\fIgit\-cat\-file\fR [\-t | \-s | \-e | \-p | <type>] <object>
+
+.SH "DESCRIPTION"
+
+
+Provides content or type of objects in the repository\&. The type is required unless \fI\-t\fR or \fI\-p\fR is used to find the object type, or \fI\-s\fR 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
+\-p
+Pretty\-print the contents of <object> based on its type\&.
+
+.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 \fI\-t\fR is specified, one of the <type>\&.
+
+
+If \fI\-s\fR is specified, the size of the <object> in bytes\&.
+
+
+If \fI\-e\fR is specified, no output\&.
+
+
+If \fI\-p\fR is specified, the contents of <object> are pretty\-printed\&.
+
+
+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..ff61111
--- /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"
+
+
+\fIgit\-check\-ref\-format\fR <refname>
+
+.SH "DESCRIPTION"
+
+
+Checks if a given \fIrefname\fR 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 can include slash / for hierarchical (directory) grouping, but no slash\-separated component can 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 \fInth parent\fR and \fIpeel onion\fR 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\&. It may also be used to select a specific object such as with \fBgit\-cat\-file\fR(1) "git\-cat\-file blob v1\&.3\&.3:refs\&.c"\&.
+.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..a2398a6
--- /dev/null
@@ -0,0 +1,176 @@
+.\"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"
+
+.nf
+\fIgit\-checkout\-index\fR [\-u] [\-q] [\-a] [\-f] [\-n] [\-\-prefix=<string>]
+                   [\-\-stage=<number>|all]
+                   [\-\-temp]
+                   [\-z] [\-\-stdin]
+                   [\-\-] [<file>]*
+.fi
+
+.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>|all
+Instead of checking out unmerged entries, copy out the files from named stage\&. <number> must be between 1 and 3\&. Note: \-\-stage=all automatically implies \-\-temp\&.
+
+.TP
+\-\-temp
+Instead of copying the files to the working directory write the content to temporary files\&. The temporary name associations will be written to stdout\&.
+
+.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
+\-z
+Only meaningful with \-\-stdin; paths are separated with NUL character instead of LF\&.
+
+.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:
+
+.nf
+$ find \&. \-name '*\&.h' \-print0 | xargs \-0 git\-checkout\-index \-f \-\-
+.fi
+
+
+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\&. But since git\-checkout\-index accepts \-\-stdin it would be faster to use:
+
+.nf
+$ find \&. \-name '*\&.h' \-print0 | git\-checkout\-index \-f \-z \-\-stdin
+.fi
+
+
+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 "USING --TEMP OR --STAGE=ALL"
+
+
+When \-\-temp is used (or implied by \-\-stage=all) git\-checkout\-index will create a temporary file for each index entry being checked out\&. The index will not be updated with stat information\&. These options can be useful if the caller needs all stages of all unmerged entries so that the unmerged files can be processed by an external merge tool\&.
+
+
+A listing will be written to stdout providing the association of temporary file names to tracked path names\&. The listing format has two variations:
+
+.TP 3
+1.
+tempname TAB path RS
+
+The first format is what gets used when \-\-stage is omitted or is not \-\-stage=all\&. The field tempname is the temporary file name holding the file content and path is the tracked path name in the index\&. Only the requested entries are output\&.
+.TP
+2.
+stage1temp SP stage2temp SP stage3tmp TAB path RS
+
+The second format is what gets used when \-\-stage=all\&. The three stage temporary fields (stage1temp, stage2temp, stage3temp) list the name of the temporary file if there is a stage entry in the index or \&. if there is no stage entry\&. Paths which only have a stage 0 entry will always be omitted from the output\&.
+.LP
+
+
+In both formats RS (the record separator) is newline by default but will be the null byte if \-z was passed on the command line\&. The temporary file names are always safe strings; they will never contain directory separators or whitespace characters\&. The path field is always relative to the current directory and the temporary file names are always relative to the top level directory\&.
+
+
+If the object being copied out to a temporary file is a symbolic link the content of the link will be written to a normal file\&. It is up to the end\-user or the Porcelain to make use of this information\&.
+
+.SH "EXAMPLES"
+
+.TP
+To update and refresh only the files already checked out
+
+.nf
+$ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
+.fi
+
+.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:
+
+
+.nf
+$ git\-checkout\-index \-\-prefix=git\-export\-dir/ \-a
+.fi
+git\-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
+
+.nf
+$ git\-checkout\-index \-\-prefix=\&.merged\- Makefile
+.fi
+This 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..9bdafa5
--- /dev/null
@@ -0,0 +1,149 @@
+.\"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"
+
+.nf
+\fIgit\-checkout\fR [\-f] [\-b <new_branch> [\-l]] [\-m] [<branch>]
+\fIgit\-checkout\fR [\-m] [<branch>] <paths>...
+.fi
+
+.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>\&. Using \-b will cause <new_branch> to be created\&.
+
+
+When <paths> are given, this command does \fInot\fR 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 a re\-read of everything\&.
+
+.TP
+\-b
+Create a new branch named <new_branch> and start it at <branch>\&. The new branch name must pass all checks defined by \fBgit\-check\-ref\-format\fR(1)\&. Some of these checks may restrict the characters allowed in a branch name\&.
+
+.TP
+\-l
+Create the new branch's ref log\&. This activates recording of all changes to made the branch ref, enabling use of date
+
+.TP
+\-m
+If you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context\&. However, with this option, a three\-way merge between the current branch, your working tree contents, and the new branch is done, and you will be on the new branch\&.
+
+When a merge conflict happens, the index entries for conflicting paths are left unmerged, and you need to resolve the conflicts and mark the resolved paths with git update\-index\&.
+
+.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 "EXAMPLES"
+
+.TP 3
+1.
+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\&.
+
+.nf
+$ git checkout master             \fB(1)\fR
+$ git checkout master~2 Makefile  \fB(2)\fR
+$ rm \-f hello\&.c
+$ git checkout hello\&.c            \fB(3)\fR
+.fi
+.sp
+\fB1. \fRswitch branch
+.br
+\fB2. \fRtake out a file out of other commit
+.br
+\fB3. \fRrestore hello\&.c from HEAD of current branch
+
+If you have an unfortunate branch that is named hello\&.c, this step would be confused as an instruction to switch to that branch\&. You should instead write:
+
+.nf
+$ git checkout \-\- hello\&.c
+.fi
+.br
+
+.TP
+2.
+After working in a wrong branch, switching to the correct branch would be done using:
+
+
+.nf
+$ git checkout mytopic
+.fi
+However, your "wrong" branch and correct "mytopic" branch may differ in files that you have locally modified, in which case, the above checkout would fail like this:
+
+
+.nf
+$ git checkout mytopic
+fatal: Entry 'frotz' not uptodate\&. Cannot merge\&.
+.fi
+You can give the \-m flag to the command, which would try a three\-way merge:
+
+
+.nf
+$ git checkout \-m mytopic
+Auto\-merging frotz
+.fi
+After this three\-way merge, the local modifications are _not_ registered in your index file, so git diff would show you what changes you made since the tip of the new branch\&.
+.TP
+3.
+When a merge conflict happens during switching branches with the \-m option, you would see something like this:
+
+
+.nf
+$ git checkout \-m mytopic
+Auto\-merging frotz
+merge: warning: conflicts during merge
+ERROR: Merge conflict in frotz
+fatal: merge program failed
+.fi
+At this point, git diff shows the changes cleanly merged as in the previous example, as well as the changes in the conflicted files\&. Edit and resolve the conflict and mark it resolved with git update\-index as usual:
+
+.nf
+$ edit frotz
+$ git update\-index frotz
+.fi
+.LP
+
+.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..3274834
--- /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"
+
+
+\fIgit\-cherry\-pick\fR [\-\-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, \fI\-\-replay\fR, 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..8d7eb96
--- /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" 1 "" "" ""
+.SH NAME
+git-cherry \- Find commits not merged upstream
+.SH "SYNOPSIS"
+
+
+\fIgit\-cherry\fR [\-v] <upstream> [<head>]
+
+.SH "DESCRIPTION"
+
+
+The changeset (or "diff") of each commit between the fork\-point and <head> is compared against each commit between the fork\-point and <upstream>\&.
+
+
+Every commit with a changeset that doesn't exist in the other branch has its id (sha1) reported, prefixed by a symbol\&. Those existing only in the <upstream> branch are prefixed with a minus (\-) sign, and those that only exist in the <head> branch are prefixed with a plus (+) symbol\&.
+
+
+Because git\-cherry compares the changeset rather than the commit id (sha1), you can use git\-cherry to find out if a commit you made locally has been applied <upstream> under a different commit id\&. For example, this will happen if you're feeding patches <upstream> via email rather than pushing or pulling commits directly\&.
+
+.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-clean.1 b/man1/git-clean.1
new file mode 100755 (executable)
index 0000000..5a5ecea
--- /dev/null
@@ -0,0 +1,65 @@
+.\"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-CLEAN" 1 "" "" ""
+.SH NAME
+git-clean \- Remove untracked files from the working tree
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-clean\fR [\-d] [\-n] [\-q] [\-x | \-X] [\-\-] <paths>...
+.fi
+
+.SH "DESCRIPTION"
+
+
+Removes files unknown to git\&. This allows to clean the working tree from files that are not under version control\&. If the \fI\-x\fR option is specified, ignored files are also removed, allowing to remove all build products\&. When optional <paths>... arguments are given, the paths affected are further limited to those that match them\&.
+
+.SH "OPTIONS"
+
+.TP
+\-d
+Remove untracked directories in addition to untracked files\&.
+
+.TP
+\-n
+Don't actually remove anything, just show what would be done\&.
+
+.TP
+\-q
+Be quiet, only report errors, but not the files that are successfully removed\&.
+
+.TP
+\-x
+Don't use the ignore rules\&. This allows removing all untracked files, including build products\&. This can be used (possibly in conjunction with \fBgit\-reset\fR(1)) to create a pristine working directory to test a clean build\&.
+
+.TP
+\-X
+Remove only files ignored by git\&. This may be useful to rebuild everything from scratch, but keep manually created files\&.
+
+.SH "AUTHOR"
+
+
+Written by Pavel Roskin <proski@gnu\&.org>
+
+.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..fe42614
--- /dev/null
@@ -0,0 +1,155 @@
+.\"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"
+
+.nf
+\fIgit\-clone\fR [\-\-template=<template_directory>] [\-l [\-s]] [\-q] [\-n] [\-\-bare]
+          [\-o <name>] [\-u <upload\-pack>] [\-\-reference <repository>]
+          [\-\-use\-separate\-remote] <repository> [<directory>]
+.fi
+
+.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/alternates to share the objects with the source repository\&. The resulting repository starts out without any object of its own\&.
+
+.TP
+\-\-reference <repository>
+If the reference repository is on the local machine automatically setup \&.git/objects/info/alternates to obtain objects from the reference repository\&. Using an already existing repository as an alternate will require less objects to be copied from the repository being cloned, reducing network and local storage costs\&.
+
+.TP
+\-\-quiet, \-q
+Operate quietly\&. This flag is passed to "rsync" and "git\-fetch\-pack" commands when given\&.
+
+.TP
+\-n
+No checkout of HEAD is performed after the clone is complete\&.
+
+.TP
+\-\-bare
+Make a \fIbare\fR GIT repository\&. That is, instead of creating <directory> and placing the administrative files in <directory>/\&.git, make the <directory> itself the $GIT_DIR\&. This implies \-n option\&. When this option is used, neither the origin branch nor the default remotes/origin file is created\&.
+
+.TP
+\-o <name>
+Instead of using the branch name \fIorigin\fR 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 \fIgit\-fetch\-pack\fR, \fI\-\-exec=<upload\-pack>\fR is passed to the command to specify non\-default path for the command run on the other end\&.
+
+.TP
+\-\-template=<template_directory>
+Specify the directory from which templates will be used; if unset the templates are taken from the installation defined default, typically /usr/share/git\-core/templates\&.
+
+.TP
+\-\-use\-separate\-remote
+Save remotes heads under $GIT_DIR/remotes/origin/ instead of $GIT_DIR/refs/heads/\&. Only the master branch is saved in the latter\&.
+
+.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\&.
+
+.SH "EXAMPLES"
+
+.TP
+Clone from upstream
+
+.nf
+$ git clone git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.6 my2\&.6
+$ cd my2\&.6
+$ make
+.fi
+
+.TP
+Make a local clone that borrows from the current directory, without checking things out
+
+.nf
+$ git clone \-l \-s \-n \&. \&.\&./copy
+$ cd copy
+$ git show\-branch
+.fi
+
+.TP
+Clone from upstream while borrowing from an existing local directory
+
+.nf
+$ git clone \-\-reference my2\&.6 \\
+        git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.7 \\
+        my2\&.7
+$ cd my2\&.7
+.fi
+
+.TP
+Create a bare repository to publish your changes to the public
+
+.nf
+$ git clone \-\-bare \-l /home/proj/\&.git /pub/scm/proj\&.git
+.fi
+
+.TP
+Create a repository on the kernel\&.org machine that borrows from Linus
+
+.nf
+$ git clone \-\-bare \-l \-s /pub/scm/\&.\&.\&./torvalds/linux\-2\&.6\&.git \\
+    /pub/scm/\&.\&.\&./me/subsys\-2\&.6\&.git
+.fi
+
+.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..3b688cb
--- /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"
+
+
+\fIgit\-commit\-tree\fR <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 \fI\-p\fR 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 for GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL:
+
+.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..a83de7e
--- /dev/null
@@ -0,0 +1,156 @@
+.\"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"
+
+.nf
+\fIgit\-commit\fR [\-a] [\-s] [\-v] [(\-c | \-C) <commit> | \-F <file> | \-m <msg>]
+           [\-\-no\-verify] [\-\-amend] [\-e] [\-\-author <author>]
+           [\-\-] [[\-i | \-o ]<file>...]
+.fi
+
+.SH "DESCRIPTION"
+
+
+Updates the index file for given paths, or all modified files if \fI\-a\fR is specified, and makes a commit object\&. The command specified by either the VISUAL or EDITOR environment variables are used to edit the commit log message\&.
+
+
+Several environment variable are used during commits\&. They are documented in \fBgit\-commit\-tree\fR(1)\&.
+
+
+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\&. This flag notices files that have been modified and deleted, but new files you have not told git about are not affected\&.
+
+.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 \fI\-C\fR, the editor is not invoked; with \fI\-c\fR the user can further edit the commit message\&.
+
+.TP
+\-F <file>
+Take the commit message from the given file\&. Use \fI\-\fR to read the message from the standard input\&.
+
+.TP
+\-\-author <author>
+Override the author name used in the commit\&. Use A U Thor <author@example\&.com> format\&.
+
+.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 \fIsuspicious lines\fR 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
+\-\-amend
+Used to amend the tip of the current branch\&. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual \-i/\-o and explicit paths), and the commit log editor is seeded with the commit message from the tip of the current branch\&. The commit you create replaces the current tip -- if it was a merge, it will have the parents of the current tip as parents -- so the current top commit is discarded\&.
+
+It is a rough equivalent for:
+
+
+.nf
+        $ git reset \-\-soft HEAD^
+        $ \&.\&.\&. do something else to come up with the right tree \&.\&.\&.
+        $ git commit \-c ORIG_HEAD
+
+.fi
+but can be used to amend a merge commit\&.
+
+.TP
+\-i|\-\-include
+Instead of committing only the files specified on the command line, update them in the index file and then commit the whole index\&. This is the traditional behavior\&.
+
+.TP
+\-o|\-\-only
+Commit only the files specified on the command line\&. This format cannot be used during a merge, nor when the index and the latest commit does not match on the specified paths to avoid confusion\&.
+
+.TP
+\-\-
+Do not interpret any more arguments as options\&.
+
+.TP
+<file>...
+Files to be committed\&. The meaning of these is different between \-\-include and \-\-only\&. Without either, it defaults \-\-only semantics\&.
+
+
+If you make a commit and then found a mistake immediately after that, you can recover from it with \fBgit\-reset\fR(1)\&.
+
+.SH "DISCUSSION"
+
+
+git commit without _any_ parameter commits the tree structure recorded by the current index file\&. This is a whole\-tree commit even the command is invoked from a subdirectory\&.
+
+
+git commit \-\-include paths... is equivalent to
+
+.nf
+git update\-index \-\-remove paths\&.\&.\&.
+git commit
+.fi
+
+
+That is, update the specified paths to the index and then commit the whole tree\&.
+
+
+git commit paths... largely bypasses the index file and commits only the changes made to the specified paths\&. It has however several safety valves to prevent confusion\&.
+
+.TP 3
+1.
+It refuses to run during a merge (i\&.e\&. when $GIT_DIR/MERGE_HEAD exists), and reminds trained git users that the traditional semantics now needs \-i flag\&.
+.TP
+2.
+It refuses to run if named paths... are different in HEAD and the index (ditto about reminding)\&. Added paths are OK\&. This is because an earlier git diff (not git diff HEAD) would have shown the differences since the last git update\-index paths... to the user, and an inexperienced user may mistakenly think that the changes between the index and the HEAD (i\&.e\&. earlier changes made before the last git update\-index paths... was done) are not being committed\&.
+.TP
+3.
+It reads HEAD commit into a temporary index file, updates the specified paths... and makes a commit\&. At the same time, the real index file is also updated with the same paths...\&.
+.LP
+
+
+git commit \-\-all updates the index file with _all_ changes to the working tree, and makes a whole\-tree commit, regardless of which subdirectory the command is invoked in\&.
+
+.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..a1092a3
--- /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"
+
+
+\fIgit\-convert\-objects\fR
+
+.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..c38a767
--- /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-COUNT-OBJECTS" 1 "" "" ""
+.SH NAME
+git-count-objects \- Reports on unpacked objects
+.SH "SYNOPSIS"
+
+
+\fIgit\-count\-objects\fR [\-v]
+
+.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 "OPTIONS"
+
+.TP
+\-v
+In addition to the number of loose objects and disk space consumed, it reports the number of in\-pack objects, and number of objects that can be removed by running git\-prune\-packed\&.
+
+.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..e03d981
--- /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-CVSEXPORTCOMMIT" 1 "" "" ""
+.SH NAME
+git-cvsexportcommit \- Export a commit to a CVS checkout
+.SH "SYNOPSIS"
+
+
+\fIgit\-cvsexportcommit\fR [\-h] [\-v] [\-c] [\-p] [\-a] [\-f] [\-m msgprefix] [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\&. See examples below\&.
+
+
+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
+\-a
+Add authorship information\&. Adds Author line, and Committer (if different from Author) to the message\&.
+
+.TP
+\-f
+Force the merge even if the files are not up to date\&.
+
+.TP
+\-m
+Prepend the commit message with the provided prefix\&. Useful for patch series and the like\&.
+
+.TP
+\-v
+Verbose\&.
+
+.SH "EXAMPLES"
+
+.TP
+Merge one patch into CVS
+
+.nf
+$ export GIT_DIR=~/project/\&.git
+$ cd ~/project_cvs_checkout
+$ git\-cvsexportcommit \-v <commit\-sha1>
+$ cvs commit \-F \&.mgs <files>
+.fi
+
+.TP
+Merge pending patches into CVS automatically -- only if you really know what you are doing
+
+.nf
+$ export GIT_DIR=~/project/\&.git
+$ cd ~/project_cvs_checkout
+$ git\-cherry cvshead myhead | sed \-n 's/^+ //p' | xargs \-l1 git\-cvsexportcommit \-c \-p \-v
+.fi
+
+.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..1562c05
--- /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-CVSIMPORT" 1 "" "" ""
+.SH NAME
+git-cvsimport \- Import a CVS repository into git
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-cvsimport\fR [\-o <branch\-for\-HEAD>] [\-h] [\-v] [\-d <CVSROOT>] [\-s <subst>]
+              [\-p <options\-for\-cvsps>] [\-C <git_repository>] [\-i] [\-P <file>]
+              [\-m] [\-M regex] [<CVS_module>]
+.fi
+
+.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 \fIcvsps\fR\&. At least version 2\&.1 is required\&.
+
+
+You should \fInever\fR do any work of your own on the branches that are created by git\-cvsimport\&. The initial import will create and populate a "master" branch from the CVS repository's main branch which you're free to work with; after that, you need to \fIgit merge\fR incremental imports, or any CVS branches, yourself\&.
+
+.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 \fIHEAD\fR branch from CVS is imported to the \fIorigin\fR branch within the git repository, as \fIHEAD\fR already has a special meaning for git\&. Use this option if you want to import into a different branch\&.
+
+Use \fI\-o master\fR for continuing an import that was initially done by the old cvs2git tool\&.
+
+.TP
+\-p <options\-for\-cvsps>
+Additional options for cvsps\&. The options \fI\-u\fR and \fI\-A\fR 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 \fIcvsimport\fR 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>
+
+.TP
+\-A <author\-conv\-file>
+CVS by default uses the unix username when writing its commit logs\&. Using this option and an author\-conv\-file in this format
+
+
+.nf
+        exon=Andreas Ericsson <ae@op5\&.se>
+        spawn=Simon Pawn <spawn@frog\-pond\&.org>
+
+.fi
+git\-cvsimport will make it appear as those authors had their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly all along\&.
+
+For convenience, this data is saved to $GIT_DIR/cvs\-authors each time the \-A option is provided and read from that same file each time git\-cvsimport is run\&.
+
+It is not recommended to use this feature if you intend to export changes back to CVS again later with \fBgit\-cvsexportcommit\fR(1)\&.
+
+.SH "OUTPUT"
+
+
+If \fI\-v\fR 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-cvsserver.1 b/man1/git-cvsserver.1
new file mode 100755 (executable)
index 0000000..dbb2818
--- /dev/null
@@ -0,0 +1,165 @@
+.\"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-CVSSERVER" 1 "" "" ""
+.SH NAME
+git-cvsserver \- A CVS server emulator for git
+.SH "SYNOPSIS"
+
+.nf
+export CVS_SERVER=git\-cvsserver
+\fIcvs\fR \-d :ext:user@server/path/repo\&.git co <HEAD_name>
+.fi
+
+.SH "DESCRIPTION"
+
+
+This application is a CVS emulation layer for git\&.
+
+
+It is highly functional\&. However, not all methods are implemented, and for those methods that are implemented, not all switches are implemented\&.
+
+
+Testing has been done using both the CLI CVS client, and the Eclipse CVS plugin\&. Most functionality works fine with both of these clients\&.
+
+.SH "LIMITATIONS"
+
+
+Currently cvsserver works over SSH connections for read/write clients, and over pserver for anonymous CVS access\&.
+
+
+CVS clients cannot tag, branch or perform GIT merges\&.
+
+.SH "INSTALLATION"
+
+.TP 3
+1.
+If you are going to offer anonymous CVS access via pserver, add a line in /etc/inetd\&.conf like
+
+
+.nf
+   cvspserver stream tcp nowait nobody git\-cvsserver pserver
+
+.fi
+Note: In some cases, you need to pass the \fIpserver\fR argument twice for git\-cvsserver to see it\&. So the line would look like
+
+
+.nf
+   cvspserver stream tcp nowait nobody git\-cvsserver pserver pserver
+
+.fi
+No special setup is needed for SSH access, other than having GIT tools in the PATH\&. If you have clients that do not accept the CVS_SERVER env variable, you can rename git\-cvsserver to cvs\&.
+.TP
+2.
+For each repo that you want accessible from CVS you need to edit config in the repo and add the following section\&.
+
+
+.nf
+   [gitcvs]
+        enabled=1
+        # optional for debugging
+        logfile=/path/to/logfile
+
+.fi
+Note: you need to ensure each user that is going to invoke git\-cvsserver has write access to the log file and to the git repository\&. When offering anon access via pserver, this means that the nobody user should have write access to at least the sqlite database at the root of the repository\&.
+.TP
+3.
+On the client machine you need to set the following variables\&. CVSROOT should be set as per normal, but the directory should point at the appropriate git repo\&. For example:
+
+For SSH access, CVS_SERVER should be set to git\-cvsserver
+
+Example:
+
+.nf
+     export CVSROOT=:ext:user@server:/var/git/project\&.git
+     export CVS_SERVER=git\-cvsserver
+.fi
+.TP
+4.
+For SSH clients that will make commits, make sure their \&.bashrc file sets the GIT_AUTHOR and GIT_COMMITTER variables\&.
+.TP
+5.
+Clients should now be able to check out the project\&. Use the CVS \fImodule\fR name to indicate what GIT \fIhead\fR you want to check out\&. Example:
+
+.nf
+     cvs co \-d project\-master master
+.fi
+.LP
+
+.SH "ECLIPSE CVS CLIENT NOTES"
+
+
+To get a checkout with the Eclipse CVS client:
+
+.TP 3
+1.
+Select "Create a new project \-> From CVS checkout"
+.TP
+2.
+Create a new location\&. See the notes below for details on how to choose the right protocol\&.
+.TP
+3.
+Browse the \fImodules\fR available\&. It will give you a list of the heads in the repository\&. You will not be able to browse the tree from there\&. Only the heads\&.
+.TP
+4.
+Pick \fIHEAD\fR when it asks what branch/tag to check out\&. Untick the "launch commit wizard" to avoid committing the \&.project file\&.
+.LP
+
+
+Protocol notes: If you are using anonymous access via pserver, just select that\&. Those using SSH access should choose the \fIext\fR protocol, and configure \fIext\fR access on the Preferences\->Team\->CVS\->ExtConnection pane\&. Set CVS_SERVER to \fIgit\-cvsserver\fR\&. Not that password support is not good when using \fIext\fR, you will definitely want to have SSH keys setup\&.
+
+
+Alternatively, you can just use the non\-standard extssh protocol that Eclipse offer\&. In that case CVS_SERVER is ignored, and you will have to replace the cvs utility on the server with git\-cvsserver or manipulate your \&.bashrc so that calling \fIcvs\fR effectively calls git\-cvsserver\&.
+
+.SH "CLIENTS KNOWN TO WORK"
+
+
+CVS 1\&.12\&.9 on Debian CVS 1\&.11\&.17 on MacOSX (from Fink package) Eclipse 3\&.0, 3\&.1\&.2 on MacOSX (see Eclipse CVS Client Notes) TortoiseCVS
+
+.SH "OPERATIONS SUPPORTED"
+
+
+All the operations required for normal use are supported, including checkout, diff, status, update, log, add, remove, commit\&. Legacy monitoring operations are not supported (edit, watch and related)\&. Exports and tagging (tags and branches) are not supported at this stage\&.
+
+
+The server will set the \-k mode to binary when relevant\&. In proper GIT tradition, the contents of the files are always respected\&. No keyword expansion or newline munging is supported\&.
+
+.SH "DEPENDENCIES"
+
+
+git\-cvsserver depends on DBD::SQLite\&.
+
+.SH "COPYRIGHT AND AUTHORS"
+
+
+This program is copyright The Open University UK \- 2006\&.
+
+
+Authors: Martyn Smith <martyn@catalyst\&.net\&.nz> Martin Langhoff <martin@catalyst\&.net\&.nz> with ideas and patches from participants of the git\-list <git@vger\&.kernel\&.org>\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Martyn Smith <martyn@catalyst\&.net\&.nz> and Martin Langhoff <martin@catalyst\&.net\&.nz> 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..98249c8
--- /dev/null
@@ -0,0 +1,118 @@
+.\"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"
+
+.nf
+\fIgit\-daemon\fR [\-\-verbose] [\-\-syslog] [\-\-inetd | \-\-port=n] [\-\-export\-all]
+             [\-\-timeout=n] [\-\-init\-timeout=n] [\-\-strict\-paths]
+             [\-\-base\-path=path] [\-\-user\-path | \-\-user\-path=path]
+             [\-\-reuseaddr] [\-\-detach] [\-\-pid\-file=file] [directory...]
+.fi
+
+.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 \fI\-\-export\-all\fR parameter is specified)\&. If you pass some directory paths as \fIgit\-daemon\fR arguments, you can further restrict the offers to a whitelist comprising of those\&.
+
+
+This is ideally suited for read\-only updates, i\&.e\&., 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
+\-\-base\-path
+Remap all the path requests as relative to the given path\&. This is sort of "GIT root" \- if you run git\-daemon with \fI\-\-base\-path=/srv/git\fR on example\&.com, then if you later try to pull \fIgit://example\&.com/hello\&.git\fR, git\-daemon will interpret the path as \fI/srv/git/hello\&.git\fR\&.
+
+.TP
+\-\-export\-all
+Allow pulling from all directories that look like GIT repositories (have the \fIobjects\fR and \fIrefs\fR subdirectories), even if they do not have the \fIgit\-daemon\-export\-ok\fR 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
+\-\-user\-path, \-\-user\-path=path
+Allow ~user notation to be used in requests\&. When specified with no parameter, requests to git://host/~alice/foo is taken as a request to access \fIfoo\fR repository in the home directory of user alice\&. If \-\-user\-path=path is specified, the same request is taken as a request to access path/foo repository in the home directory of user alice\&.
+
+.TP
+\-\-verbose
+Log details about the incoming connections and requested files\&.
+
+.TP
+\-\-reuseaddr
+Use SO_REUSEADDR when binding the listening socket\&. This allows the server to restart without waiting for old connections to time out\&.
+
+.TP
+\-\-detach
+Detach from the shell\&. Implies \-\-syslog\&.
+
+.TP
+\-\-pid\-file=file
+Save the process id in \fIfile\fR\&.
+
+.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-describe.1 b/man1/git-describe.1
new file mode 100755 (executable)
index 0000000..8c262fc
--- /dev/null
@@ -0,0 +1,99 @@
+.\"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-DESCRIBE" 1 "" "" ""
+.SH NAME
+git-describe \- Show the most recent tag that is reachable from a commit
+.SH "SYNOPSIS"
+
+
+\fIgit\-describe\fR [\-\-all] [\-\-tags] [\-\-abbrev=<n>] <committish>...
+
+.SH "DESCRIPTION"
+
+
+The command finds the most recent tag that is reachable from a commit, and if the commit itself is pointed at by the tag, shows the tag\&. Otherwise, it suffixes the tag name with abbreviated object name of the commit\&.
+
+.SH "OPTIONS"
+
+.TP
+<committish>
+The object name of the committish\&.
+
+.TP
+\-\-all
+Instead of using only the annotated tags, use any ref found in \&.git/refs/\&.
+
+.TP
+\-\-tags
+Instead of using only the annotated tags, use any tag found in \&.git/refs/tags\&.
+
+.TP
+\-\-abbrev=<n>
+Instead of using the default 8 hexadecimal digits as the abbreviated object name, use <n> digits\&.
+
+.SH "EXAMPLES"
+
+
+With something like git\&.git current tree, I get:
+
+.nf
+[torvalds@g5 git]$ git\-describe parent
+v1\&.0\&.4\-g2414721b
+.fi
+
+
+i\&.e\&. the current head of my "parent" branch is based on v1\&.0\&.4, but since it has a few commits on top of that, it has added the git hash of the thing to the end: "\-g" + 8\-char shorthand for the commit 2414721b194453f058079d897d13c4e377f92dc6\&.
+
+
+Doing a "git\-describe" on a tag\-name will just show the tag name:
+
+.nf
+[torvalds@g5 git]$ git\-describe v1\&.0\&.4
+v1\&.0\&.4
+.fi
+
+
+With \-\-all, the command can use branch heads as references, so the output shows the reference path as well:
+
+.nf
+[torvalds@g5 git]$ git describe \-\-all \-\-abbrev=4 v1\&.0\&.5^2
+tags/v1\&.0\&.0\-g975b
+.fi
+
+.nf
+[torvalds@g5 git]$ git describe \-\-all HEAD^
+heads/lt/describe\-g975b
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org>, but somewhat butchered 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-diff-files.1 b/man1/git-diff-files.1
new file mode 100755 (executable)
index 0000000..10f5a95
--- /dev/null
@@ -0,0 +1,403 @@
+.\"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"
+
+
+\fIgit\-diff\-files\fR [\-q] [\-0|\-1|\-2|\-3|\-c|\-\-cc] [<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
+\-\-raw
+Generate the raw format\&.
+
+.TP
+\-\-patch\-with\-raw
+Synonym for "\-p \-\-raw"\&.
+
+.TP
+\-\-stat
+Generate a diffstat\&.
+
+.TP
+\-\-summary
+Output a condensed summary of extended header information such as creations, renames and mode changes\&.
+
+.TP
+\-\-patch\-with\-stat
+Synonym for "\-p \-\-stat"\&.
+
+.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
+\-\-color
+Show colored diff\&.
+
+.TP
+\-\-no\-color
+Turn off colored diff, even when the configuration file gives the default to color output\&.
+
+.TP
+\-\-no\-renames
+Turn off rename detection, even when the configuration file gives the default to do so\&.
+
+.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
+\-\-binary
+In addition to \-\-full\-index, output "binary diff" that can be applied with "git apply"\&.
+
+.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 hexdigits 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
+\-\-diff\-filter=[ACDMRTUXB*]
+Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (mode) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B)\&. Any combination of the filter characters may be used\&. When * (All\-or\-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected\&.
+
+.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
+\-\-pickaxe\-regex
+Make the <string> not a plain string but an extended POSIX regex to match\&.
+
+.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\&.
+
+.TP
+\-\-text
+Treat all files as text\&.
+
+.TP
+\-a
+Shorthand for "\-\-text"\&.
+
+
+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
+\-c,\-\-cc
+This compares stage 2 (our branch), stage 3 (their branch) and the working tree file and outputs a combined diff, similar to the way \fIdiff\-tree\fR shows a merge commit with these flags\&.
+
+.TP
+\-q
+Remain silent even on nonexistent 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:
+
+.nf
+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
+.fi
+
+
+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 \fI\-z\fR option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \fI\-z\fR 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 \fI\-z\fR 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:
+
+.nf
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+.fi
+
+
+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 \fI\-p\fR 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 \fIGIT_EXTERNAL_DIFF\fR 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 \fIGIT_DIFF_OPTS\fR\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable \fIGIT_EXTERNAL_DIFF\fR 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, \fIGIT_EXTERNAL_DIFF\fR 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)\&. \fIGIT_EXTERNAL_DIFF\fR should not worry about unlinking the temporary file \-\-\- it is removed when \fIGIT_EXTERNAL_DIFF\fR exits\&.
+.LP
+
+
+For a path that is unmerged, \fIGIT_EXTERNAL_DIFF\fR 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 preceded 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 "COMBINED DIFF FORMAT"
+
+
+git\-diff\-tree and git\-diff\-files can take \fI\-c\fR or \fI\-\-cc\fR option to produce \fIcombined diff\fR, which looks like this:
+
+.nf
+diff \-\-combined describe\&.c
+@@@ +98,7 @@@
+   return (a_date > b_date) ? \-1 : (a_date == b_date) ? 0 : 1;
+  }
+
+\- static void describe(char *arg)
+ \-static void describe(struct commit *cmit, int last_one)
+++static void describe(char *arg, int last_one)
+  {
+ +     unsigned char sha1[20];
+ +     struct commit *cmit;
+.fi
+
+
+Unlike the traditional \fIunified\fR diff format, which shows two files A and B with a single column that has \- (minus -- appears in A but removed in B), + (plus -- missing in A but added to B), or (space -- unchanged) prefix, this format compares two or more files file1, file2,... with one file X, and shows how X differs from each of fileN\&. One column for each of fileN is prepended to the output line to note how X's line is different from it\&.
+
+
+A \- character in the column N means that the line appears in fileN but it does not appear in the last file\&. A + character in the column N means that the line appears in the last file, and fileN does not have that line\&.
+
+
+In the above example output, the function signature was changed from both files (hence two \- removals from both file1 and file2, plus ++ to mean one line that was added does not appear in either file1 nor file2)\&. Also two other lines are the same from file1 but do not appear in file2 (hence prefixed with +)\&.
+
+
+When shown by git diff\-tree \-c, it compares the parents of a merge commit with the merge result (i\&.e\&. file1\&.\&.fileN are the parents)\&. When shown by git diff\-files \-c, it compares the two unresolved merge parents with the working tree file (i\&.e\&. file1 is stage 2 aka "our version", file2 is stage 3 aka "their version")\&.
+
+.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..60b7ff7
--- /dev/null
@@ -0,0 +1,481 @@
+.\"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"
+
+
+\fIgit\-diff\-index\fR [\-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
+\-\-raw
+Generate the raw format\&.
+
+.TP
+\-\-patch\-with\-raw
+Synonym for "\-p \-\-raw"\&.
+
+.TP
+\-\-stat
+Generate a diffstat\&.
+
+.TP
+\-\-summary
+Output a condensed summary of extended header information such as creations, renames and mode changes\&.
+
+.TP
+\-\-patch\-with\-stat
+Synonym for "\-p \-\-stat"\&.
+
+.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
+\-\-color
+Show colored diff\&.
+
+.TP
+\-\-no\-color
+Turn off colored diff, even when the configuration file gives the default to color output\&.
+
+.TP
+\-\-no\-renames
+Turn off rename detection, even when the configuration file gives the default to do so\&.
+
+.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
+\-\-binary
+In addition to \-\-full\-index, output "binary diff" that can be applied with "git apply"\&.
+
+.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 hexdigits 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
+\-\-diff\-filter=[ACDMRTUXB*]
+Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (mode) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B)\&. Any combination of the filter characters may be used\&. When * (All\-or\-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected\&.
+
+.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
+\-\-pickaxe\-regex
+Make the <string> not a plain string but an extended POSIX regex to match\&.
+
+.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\&.
+
+.TP
+\-\-text
+Treat all files as text\&.
+
+.TP
+\-a
+Shorthand for "\-\-text"\&.
+
+
+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:
+
+.nf
+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
+.fi
+
+
+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 \fI\-z\fR option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \fI\-z\fR 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 \fI\-z\fR 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:
+
+.nf
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+.fi
+
+
+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 \fI\-p\fR 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 \fIGIT_EXTERNAL_DIFF\fR 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 \fIGIT_DIFF_OPTS\fR\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable \fIGIT_EXTERNAL_DIFF\fR 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, \fIGIT_EXTERNAL_DIFF\fR 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)\&. \fIGIT_EXTERNAL_DIFF\fR should not worry about unlinking the temporary file \-\-\- it is removed when \fIGIT_EXTERNAL_DIFF\fR exits\&.
+.LP
+
+
+For a path that is unmerged, \fIGIT_EXTERNAL_DIFF\fR 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 preceded 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 "COMBINED DIFF FORMAT"
+
+
+git\-diff\-tree and git\-diff\-files can take \fI\-c\fR or \fI\-\-cc\fR option to produce \fIcombined diff\fR, which looks like this:
+
+.nf
+diff \-\-combined describe\&.c
+@@@ +98,7 @@@
+   return (a_date > b_date) ? \-1 : (a_date == b_date) ? 0 : 1;
+  }
+
+\- static void describe(char *arg)
+ \-static void describe(struct commit *cmit, int last_one)
+++static void describe(char *arg, int last_one)
+  {
+ +     unsigned char sha1[20];
+ +     struct commit *cmit;
+.fi
+
+
+Unlike the traditional \fIunified\fR diff format, which shows two files A and B with a single column that has \- (minus -- appears in A but removed in B), + (plus -- missing in A but added to B), or (space -- unchanged) prefix, this format compares two or more files file1, file2,... with one file X, and shows how X differs from each of fileN\&. One column for each of fileN is prepended to the output line to note how X's line is different from it\&.
+
+
+A \- character in the column N means that the line appears in fileN but it does not appear in the last file\&. A + character in the column N means that the line appears in the last file, and fileN does not have that line\&.
+
+
+In the above example output, the function signature was changed from both files (hence two \- removals from both file1 and file2, plus ++ to mean one line that was added does not appear in either file1 nor file2)\&. Also two other lines are the same from file1 but do not appear in file2 (hence prefixed with +)\&.
+
+
+When shown by git diff\-tree \-c, it compares the parents of a merge commit with the merge result (i\&.e\&. file1\&.\&.fileN are the parents)\&. When shown by git diff\-files \-c, it compares the two unresolved merge parents with the working tree file (i\&.e\&. file1 is stage 2 aka "our version", file2 is stage 3 aka "their version")\&.
+
+.SH "OPERATING MODES"
+
+
+You can choose whether you want to trust the index file entirely (using the \fI\-\-cached\fR 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 \fI\-\-cached\fR 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 exactly \fIwhat\fR 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" \fIshould\fR 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 \fIcould\fR 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
+
+
+i\&.e\&., 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\-update\-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..f66a5c1
--- /dev/null
@@ -0,0 +1,393 @@
+.\"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"
+
+
+\fIgit\-diff\-stages\fR [<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
+\-\-raw
+Generate the raw format\&.
+
+.TP
+\-\-patch\-with\-raw
+Synonym for "\-p \-\-raw"\&.
+
+.TP
+\-\-stat
+Generate a diffstat\&.
+
+.TP
+\-\-summary
+Output a condensed summary of extended header information such as creations, renames and mode changes\&.
+
+.TP
+\-\-patch\-with\-stat
+Synonym for "\-p \-\-stat"\&.
+
+.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
+\-\-color
+Show colored diff\&.
+
+.TP
+\-\-no\-color
+Turn off colored diff, even when the configuration file gives the default to color output\&.
+
+.TP
+\-\-no\-renames
+Turn off rename detection, even when the configuration file gives the default to do so\&.
+
+.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
+\-\-binary
+In addition to \-\-full\-index, output "binary diff" that can be applied with "git apply"\&.
+
+.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 hexdigits 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
+\-\-diff\-filter=[ACDMRTUXB*]
+Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (mode) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B)\&. Any combination of the filter characters may be used\&. When * (All\-or\-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected\&.
+
+.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
+\-\-pickaxe\-regex
+Make the <string> not a plain string but an extended POSIX regex to match\&.
+
+.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\&.
+
+.TP
+\-\-text
+Treat all files as text\&.
+
+.TP
+\-a
+Shorthand for "\-\-text"\&.
+
+
+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:
+
+.nf
+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
+.fi
+
+
+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 \fI\-z\fR option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \fI\-z\fR 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 \fI\-z\fR 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:
+
+.nf
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+.fi
+
+
+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 \fI\-p\fR 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 \fIGIT_EXTERNAL_DIFF\fR 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 \fIGIT_DIFF_OPTS\fR\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable \fIGIT_EXTERNAL_DIFF\fR 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, \fIGIT_EXTERNAL_DIFF\fR 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)\&. \fIGIT_EXTERNAL_DIFF\fR should not worry about unlinking the temporary file \-\-\- it is removed when \fIGIT_EXTERNAL_DIFF\fR exits\&.
+.LP
+
+
+For a path that is unmerged, \fIGIT_EXTERNAL_DIFF\fR 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 preceded 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 "COMBINED DIFF FORMAT"
+
+
+git\-diff\-tree and git\-diff\-files can take \fI\-c\fR or \fI\-\-cc\fR option to produce \fIcombined diff\fR, which looks like this:
+
+.nf
+diff \-\-combined describe\&.c
+@@@ +98,7 @@@
+   return (a_date > b_date) ? \-1 : (a_date == b_date) ? 0 : 1;
+  }
+
+\- static void describe(char *arg)
+ \-static void describe(struct commit *cmit, int last_one)
+++static void describe(char *arg, int last_one)
+  {
+ +     unsigned char sha1[20];
+ +     struct commit *cmit;
+.fi
+
+
+Unlike the traditional \fIunified\fR diff format, which shows two files A and B with a single column that has \- (minus -- appears in A but removed in B), + (plus -- missing in A but added to B), or (space -- unchanged) prefix, this format compares two or more files file1, file2,... with one file X, and shows how X differs from each of fileN\&. One column for each of fileN is prepended to the output line to note how X's line is different from it\&.
+
+
+A \- character in the column N means that the line appears in fileN but it does not appear in the last file\&. A + character in the column N means that the line appears in the last file, and fileN does not have that line\&.
+
+
+In the above example output, the function signature was changed from both files (hence two \- removals from both file1 and file2, plus ++ to mean one line that was added does not appear in either file1 nor file2)\&. Also two other lines are the same from file1 but do not appear in file2 (hence prefixed with +)\&.
+
+
+When shown by git diff\-tree \-c, it compares the parents of a merge commit with the merge result (i\&.e\&. file1\&.\&.fileN are the parents)\&. When shown by git diff\-files \-c, it compares the two unresolved merge parents with the working tree file (i\&.e\&. file1 is stage 2 aka "our version", file2 is stage 3 aka "their version")\&.
+
+.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..d0340d8
--- /dev/null
@@ -0,0 +1,508 @@
+.\"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"
+
+.nf
+\fIgit\-diff\-tree\fR [\-\-stdin] [\-m] [\-s] [\-v] [\-\-no\-commit\-id] [\-\-pretty]
+              [\-t] [\-r] [\-c | \-\-cc] [\-\-root] [<common diff options>]
+              <tree\-ish> [<tree\-ish>] [<path>...]
+.fi
+
+.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
+\-\-raw
+Generate the raw format\&.
+
+.TP
+\-\-patch\-with\-raw
+Synonym for "\-p \-\-raw"\&.
+
+.TP
+\-\-stat
+Generate a diffstat\&.
+
+.TP
+\-\-summary
+Output a condensed summary of extended header information such as creations, renames and mode changes\&.
+
+.TP
+\-\-patch\-with\-stat
+Synonym for "\-p \-\-stat"\&.
+
+.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
+\-\-color
+Show colored diff\&.
+
+.TP
+\-\-no\-color
+Turn off colored diff, even when the configuration file gives the default to color output\&.
+
+.TP
+\-\-no\-renames
+Turn off rename detection, even when the configuration file gives the default to do so\&.
+
+.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
+\-\-binary
+In addition to \-\-full\-index, output "binary diff" that can be applied with "git apply"\&.
+
+.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 hexdigits 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
+\-\-diff\-filter=[ACDMRTUXB*]
+Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (mode) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B)\&. Any combination of the filter characters may be used\&. When * (All\-or\-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected\&.
+
+.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
+\-\-pickaxe\-regex
+Make the <string> not a plain string but an extended POSIX regex to match\&.
+
+.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\&.
+
+.TP
+\-\-text
+Treat all files as text\&.
+
+.TP
+\-a
+Shorthand for "\-\-text"\&.
+
+
+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\&. i\&.e\&., 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 \fI\-\-root\fR 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 \fI\-\-stdin\fR 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 behavior\&. 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\&. See also \fI\-c\fR\&.
+
+.TP
+\-s
+By default, "git\-diff\-tree \-\-stdin" shows differences, either in machine\-readable form (without \fI\-p\fR) or in patch form (with \fI\-p\fR)\&. This output can be suppressed\&. It is only useful with \fI\-v\fR 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\&.
+
+.TP
+\-c
+This flag changes the way a merge commit is displayed (which means it is useful only when the command is given one <tree\-ish>, or \fI\-\-stdin\fR)\&. It shows the differences from each of the parents to the merge result simultaneously instead of showing pairwise diff between a parent and the result one at a time (which is what the \fI\-m\fR option does)\&. Furthermore, it lists only files which were modified from all parents\&.
+
+.TP
+\-\-cc
+This flag changes the way a merge commit patch is displayed, in a similar way to the \fI\-c\fR option\&. It implies the \fI\-c\fR and \fI\-p\fR options and further compresses the patch output by omitting hunks that show differences from only one parent, or show the same change from all but one parent for an Octopus merge\&. When this optimization makes all hunks disappear, the commit itself and the commit log message is not shown, just like in any other "empty diff" case\&.
+
+.TP
+\-\-always
+Show the commit itself and the commit log message even if the diff itself is empty\&.
+
+.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:
+
+.nf
+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\&.
+.fi
+
+
+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:
+
+.nf
+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
+.fi
+
+
+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 \fI\-z\fR option is used\&.
+.TP
+12.
+path for "src"
+.TP
+13.
+a tab or a NUL when \fI\-z\fR 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 \fI\-z\fR 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:
+
+.nf
+:100644 100644 5be4a4\&.\&.\&.\&.\&.\&. 000000\&.\&.\&.\&.\&.\&. M file\&.c
+.fi
+
+
+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 \fI\-p\fR 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 \fIGIT_EXTERNAL_DIFF\fR 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 \fIGIT_DIFF_OPTS\fR\&. For example, if you prefer context diff:
+
+.nf
+GIT_DIFF_OPTS=\-c git\-diff\-index \-p HEAD
+.fi
+.TP
+2.
+When the environment variable \fIGIT_EXTERNAL_DIFF\fR 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, \fIGIT_EXTERNAL_DIFF\fR 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)\&. \fIGIT_EXTERNAL_DIFF\fR should not worry about unlinking the temporary file \-\-\- it is removed when \fIGIT_EXTERNAL_DIFF\fR exits\&.
+.LP
+
+
+For a path that is unmerged, \fIGIT_EXTERNAL_DIFF\fR 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 preceded 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 "COMBINED DIFF FORMAT"
+
+
+git\-diff\-tree and git\-diff\-files can take \fI\-c\fR or \fI\-\-cc\fR option to produce \fIcombined diff\fR, which looks like this:
+
+.nf
+diff \-\-combined describe\&.c
+@@@ +98,7 @@@
+   return (a_date > b_date) ? \-1 : (a_date == b_date) ? 0 : 1;
+  }
+
+\- static void describe(char *arg)
+ \-static void describe(struct commit *cmit, int last_one)
+++static void describe(char *arg, int last_one)
+  {
+ +     unsigned char sha1[20];
+ +     struct commit *cmit;
+.fi
+
+
+Unlike the traditional \fIunified\fR diff format, which shows two files A and B with a single column that has \- (minus -- appears in A but removed in B), + (plus -- missing in A but added to B), or (space -- unchanged) prefix, this format compares two or more files file1, file2,... with one file X, and shows how X differs from each of fileN\&. One column for each of fileN is prepended to the output line to note how X's line is different from it\&.
+
+
+A \- character in the column N means that the line appears in fileN but it does not appear in the last file\&. A + character in the column N means that the line appears in the last file, and fileN does not have that line\&.
+
+
+In the above example output, the function signature was changed from both files (hence two \- removals from both file1 and file2, plus ++ to mean one line that was added does not appear in either file1 nor file2)\&. Also two other lines are the same from file1 but do not appear in file2 (hence prefixed with +)\&.
+
+
+When shown by git diff\-tree \-c, it compares the parents of a merge commit with the merge result (i\&.e\&. file1\&.\&.fileN are the parents)\&. When shown by git diff\-files \-c, it compares the two unresolved merge parents with the working tree file (i\&.e\&. file1 is stage 2 aka "our version", file2 is stage 3 aka "their version")\&.
+
+.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..845574d
--- /dev/null
@@ -0,0 +1,135 @@
+.\"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"
+
+
+\fIgit\-diff\fR [ \-\-diff\-options ] <tree\-ish>{0,2} [<path>...]
+
+.SH "DESCRIPTION"
+
+
+Show changes between two trees, a tree and the working tree, a tree 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 trees given to the command\&.
+
+.TP 3
+\(bu
+When no <tree\-ish> is given, the working tree and the index file are compared, using git\-diff\-files\&.
+.TP
+\(bu
+When one <tree\-ish> is given, the working tree and the named tree are compared, using git\-diff\-index\&. The option \-\-cached can be given to compare the index file and the named tree\&.
+.TP
+\(bu
+When two <tree\-ish>s are given, these two trees are compared using git\-diff\-tree\&.
+.LP
+
+.SH "OPTIONS"
+
+.TP
+\-\-diff\-options
+ \fI\-\-diff\-options\fR 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
+
+.nf
+$ git diff            \fB(1)\fR
+$ git diff \-\-cached   \fB(2)\fR
+$ git diff HEAD       \fB(3)\fR
+.fi
+.sp
+\fB1. \fRchanges in the working tree since your last git\-update\-index\&.
+.br
+\fB2. \fRchanges between the index and your last commit; what you would be committing if you run "git commit" without "\-a" option\&.
+.br
+\fB3. \fRchanges in the working tree since your last commit; what you would be committing if you run "git commit \-a"
+.br
+
+
+.TP
+Comparing with arbitrary commits
+
+.nf
+$ git diff test            \fB(1)\fR
+$ git diff HEAD \-\- \&./test  \fB(2)\fR
+$ git diff HEAD^ HEAD      \fB(3)\fR
+.fi
+.sp
+\fB1. \fRinstead of using the tip of the current branch, compare with the tip of "test" branch\&.
+.br
+\fB2. \fRinstead of comparing with the tip of "test" branch, compare with the tip of the current branch, but limit the comparison to the file "test"\&.
+.br
+\fB3. \fRcompare the version before the last commit and the last commit\&.
+.br
+
+
+.TP
+Limiting the diff output
+
+.nf
+$ git diff \-\-diff\-filter=MRC            \fB(1)\fR
+$ git diff \-\-name\-status \-r             \fB(2)\fR
+$ git diff arch/i386 include/asm\-i386   \fB(3)\fR
+.fi
+.sp
+\fB1. \fRshow only modification, rename and copy, but not addition nor deletion\&.
+.br
+\fB2. \fRshow only names and the nature of change, but not actual diff output\&. \-\-name\-status disables usual patch generation which in turn also disables recursive behavior, so without \-r you would only see the directory name if there is a change in a file in a subdirectory\&.
+.br
+\fB3. \fRlimit diff output to named subtrees\&.
+.br
+
+
+.TP
+Munging the diff output
+
+.nf
+$ git diff \-\-find\-copies\-harder \-B \-C  \fB(1)\fR
+$ git diff \-R                          \fB(2)\fR
+.fi
+.sp
+\fB1. \fRspend extra cycles to find renames, copies and complete rewrites (very expensive)\&.
+.br
+\fB2. \fRoutput diff in reverse\&.
+.br
+
+
+.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..c8da526
--- /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"
+
+
+\fIgit\-fetch\-pack\fR [\-q] [\-k] [\-\-exec=<git\-upload\-pack>] [<host>:]<directory> [<refs>...]
+
+.SH "DESCRIPTION"
+
+
+Invokes \fIgit\-upload\-pack\fR 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 \fIgit\-upload\-pack\fR 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 \fI\-q\fR flag to \fIgit\-unpack\-objects\fR; this makes the cloning process less verbose\&.
+
+.TP
+\-k
+Do not invoke \fIgit\-unpack\-objects\fR 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 \fIgit\-upload\-pack\fR 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, \fIgit\-upload\-pack\fR 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..c8cb223
--- /dev/null
@@ -0,0 +1,215 @@
+.\"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"
+
+
+\fIgit\-fetch\fR <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
+\-\-upload\-pack <upload\-pack>
+When given, and the repository to fetch from is handled by \fIgit\-fetch\-pack\fR, \fI\-\-exec=<upload\-pack>\fR is passed to the command to specify non\-default path for the command run on the other end\&.
+
+.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
+\-\-no\-tags
+By default, git\-fetch fetches tags that point at objects that are downloaded from the remote repository and stores them locally\&. This option disables this automatic tag following\&.
+
+.TP
+\-t, \-\-tags
+Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism\&. This flag lets all tags and their associated objects be downloaded\&.
+
+.TP
+\-k, \-\-keep
+Keep downloaded pack\&.
+
+.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\&. See the section GIT URLS below\&.
+
+.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\&.
+
+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
+ tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>; it requests fetching everything up to the given tag\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, so it merges <ref> into the current branch without storing the remote branch anywhere locally
+.LP
+.RE
+.IP
+
+.SH "GIT URLS"
+
+
+One of the following notations can be used to name the remote repository:
+
+.IP
+
+.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://[user@]host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~/path/to/repo\&.git
+.LP
+
+
+SSH is the default transport protocol\&. You can optionally specify which user to log\-in as, and an alternate, scp\-like syntax is also supported\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+.IP
+
+.TP 3
+\(bu
+[user@]host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:path/to/repo\&.git
+.LP
+
+
+To sync with a local directory, use:
+
+.IP
+
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+
+.SH "REMOTES"
+
+
+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
+
+
+Then 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 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
+
+.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..cb40d83
--- /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"
+
+
+\fIgit\-fmt\-merge\-msg\fR <$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 \fI<merge\-message>\fR 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..758bcd8
--- /dev/null
@@ -0,0 +1,132 @@
+.\"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"
+
+.nf
+\fIgit\-format\-patch\fR [\-n | \-k] [\-o <dir> | \-\-stdout] [\-\-attach] [\-\-thread]
+                   [\-s | \-\-signoff] [\-\-diff\-options] [\-\-start\-number <n>]
+                   [\-\-in\-reply\-to=Message\-Id]
+                   <since>[\&.\&.<until>]
+.fi
+
+.SH "DESCRIPTION"
+
+
+Prepare each commit between <since> and <until> with its patch in one file per commit, formatted to resemble UNIX mailbox format\&. If \&.\&.<until> is not specified, the head of the current working tree is implied\&.
+
+
+The output of this command is convenient for e\-mail submission or for use with \fBgit\-am\fR(1)\&.
+
+
+Each output file is numbered sequentially from 1, and uses the first line of the commit message (massaged for pathname safety) as the filename\&. The names of the output files are printed to standard output, unless the \-\-stdout option is specified\&.
+
+
+If \-o is specified, output files are created in <dir>\&. Otherwise they are created in the current working directory\&.
+
+
+If \-n is specified, instead of "[PATCH] Subject", the first line is formatted as "[PATCH n/m] Subject"\&.
+
+
+If given \-\-thread, git\-format\-patch will generate In\-Reply\-To and References headers to make the second and subsequent patch mails appear as replies to the first mail; this also generates a Message\-Id header to reference\&.
+
+.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 \fI[PATCH n/m]\fR format\&.
+
+.TP
+\-\-start\-number <n>
+Start numbering the patches at <n> instead of 1\&.
+
+.TP
+\-k|\-\-keep\-subject
+Do not strip/add \fI[PATCH]\fR from the first line of the commit log message\&.
+
+.TP
+\-s|\-\-signoff
+Add Signed\-off\-by: line to the commit message, using the committer identity of yourself\&.
+
+.TP
+\-\-stdout
+Print all commits to the standard output in mbox format, instead of creating a file for each one\&.
+
+.TP
+\-\-attach
+Create attachments instead of inlining patches\&.
+
+.TP
+\-\-thread
+Add In\-Reply\-To and References headers to make the second and subsequent mails appear as replies to the first\&. Also generates the Message\-Id header to reference\&.
+
+.TP
+\-\-in\-reply\-to=Message\-Id
+Make the first mail (or all the mails with \-\-no\-thread) appear as a reply to the given Message\-Id, which avoids breaking threads to provide a new patch series\&.
+
+.SH "CONFIGURATION"
+
+
+You can specify extra mail header lines to be added to each message in the repository configuration as follows:
+
+.nf
+headers = "Organization: git\-foo\\n"
+.fi
+
+.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 all commits which are in the current branch but not in the origin branch\&. For each commit a separate file is created in the current directory\&.
+
+.TP
+git\-format\-patch \-M \-B origin
+The same as the previous one\&. Additionally, it detects and handles renames and complete rewrites intelligently to produce a 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 patches, so use it only when you know the recipient uses git to apply your patch\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-am\fR(1), \fBgit\-send\-email\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-fsck-objects.1 b/man1/git-fsck-objects.1
new file mode 100755 (executable)
index 0000000..c5bbfc0
--- /dev/null
@@ -0,0 +1,144 @@
+.\"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"
+
+.nf
+\fIgit\-fsck\-objects\fR [\-\-tags] [\-\-root] [\-\-unreachable] [\-\-cache]
+                 [\-\-full] [\-\-strict] [<object>*]
+.fi
+
+.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
+\-\-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 or $GIT_DIR/objects/info/alternates, and in packed git archives found in $GIT_DIR/objects/pack and corresponding pack subdirectories in alternate object pools\&.
+
+.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 \fI\-\-unreachable\fR 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 (i\&.e\&., 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 \fI<dir>\fR
+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 \fIdirectly\fR 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..e848ea1
--- /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"
+
+
+\fIgit\-get\-tar\-commit\-id\fR < <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..cdf427d
--- /dev/null
@@ -0,0 +1,125 @@
+.\"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"
+
+.nf
+\fIgit\-grep\fR [\-\-cached]
+           [\-a | \-\-text] [\-I] [\-i | \-\-ignore\-case] [\-w | \-\-word\-regexp]
+           [\-v | \-\-invert\-match]
+           [\-E | \-\-extended\-regexp] [\-G | \-\-basic\-regexp] [\-F | \-\-fixed\-strings]
+           [\-n] [\-l | \-\-files\-with\-matches] [\-L | \-\-files\-without\-match]
+           [\-c | \-\-count]
+           [\-A <post\-context>] [\-B <pre\-context>] [\-C <context>]
+           [\-f <file>] [\-e] <pattern> [\-\-and|\-\-or|\-\-not|(|)|\-e <pattern>...]
+           [<tree>...]
+           [\-\-] [<path>...]
+.fi
+
+.SH "DESCRIPTION"
+
+
+Look for specified patterns in the working tree files, blobs registered in the index file, or given tree objects\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-cached
+Instead of searching in the working tree files, check the blobs registered in the index file\&.
+
+.TP
+\-a | \-\-text
+Process binary files as if they were text\&.
+
+.TP
+\-i | \-\-ignore\-case
+Ignore case differences between the patterns and the files\&.
+
+.TP
+\-w | \-\-word\-regexp
+Match the pattern only at word boundary (either begin at the beginning of a line, or preceded by a non\-word character; end at the end of a line or followed by a non\-word character)\&.
+
+.TP
+\-v | \-\-invert\-match
+Select non\-matching lines\&.
+
+.TP
+\-E | \-\-extended\-regexp | \-G | \-\-basic\-regexp
+Use POSIX extended/basic regexp for patterns\&. Default is to use basic regexp\&.
+
+.TP
+\-n
+Prefix the line number to matching lines\&.
+
+.TP
+\-l | \-\-files\-with\-matches | \-L | \-\-files\-without\-match
+Instead of showing every matched line, show only the names of files that contain (or do not contain) matches\&.
+
+.TP
+\-c | \-\-count
+Instead of showing every matched line, show the number of lines that match\&.
+
+.TP
+\-[ABC] <context>
+Show context trailing (A -- after), or leading (B -- before), or both (C -- context) lines, and place a line containing \-\- between contiguous groups of matches\&.
+
+.TP
+\-f <file>
+Read patterns from <file>, one per line\&.
+
+.TP
+\-e
+The next parameter is the pattern\&. This option has to be used for patterns starting with \- and should be used in scripts passing user input to grep\&. Multiple patterns are combined by \fIor\fR\&.
+
+.TP
+\-\-and | \-\-or | \-\-not | ( | )
+Specify how multiple patterns are combined using boolean expressions\&. \-\-or is the default operator\&. \-\-and has higher precedence than \-\-or\&. \-e has to be used for all patterns\&.
+
+.TP
+<tree>...
+Search blobs in the trees for specified patterns\&.
+
+.TP
+\-\-
+Signals the end of options; the rest of the parameters are <path> limiters\&.
+
+.SH "EXAMPLE"
+
+.TP
+git grep \-e '#define' \-\-and \\( \-e MAX_PATH \-e PATH_MAX \\)
+Looks for a line that has #define and either MAX_PATH or PATH_MAX\&.
+
+.SH "AUTHOR"
+
+
+Originally written by Linus Torvalds <torvalds@osdl\&.org>, later revamped 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-hash-object.1 b/man1/git-hash-object.1
new file mode 100755 (executable)
index 0000000..21c5ecd
--- /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"
+
+
+\fIgit\-hash\-object\fR [\-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..d568713
--- /dev/null
@@ -0,0 +1,81 @@
+.\"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"
+
+
+\fIgit\-http\-fetch\fR [\-c] [\-t] [\-a] [\-d] [\-v] [\-w filename] [\-\-recover] [\-\-stdin] <commit> <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\&.
+
+.TP
+\-\-stdin
+Instead of a commit id on the commandline (which is not expected in this case), \fIgit\-http\-fetch\fR expects lines on stdin in the format
+
+.nf
+<commit\-id>['\\t'<filename\-as\-in\-\-w>]
+.fi
+
+.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..34848c6
--- /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"
+
+
+\fIgit\-http\-push\fR [\-\-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 \fI<ref>\fR 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 \fI<name>\fR is just a shorthand for \fI<name>:<name>\fR\&.
+
+
+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 \fI\-\-force\fR, 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 \fI\-\-force\fR, the fast forward check is disabled for all refs\&.
+
+
+Optionally, a <ref> parameter can be prefixed with a plus \fI+\fR 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-imap-send.1 b/man1/git-imap-send.1
new file mode 100755 (executable)
index 0000000..479bf11
--- /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-IMAP-SEND" 1 "" "" ""
+.SH NAME
+git-imap-send \- Dump a mailbox from stdin into an imap folder
+.SH "SYNOPSIS"
+
+
+\fIgit\-imap\-send\fR
+
+.SH "DESCRIPTION"
+
+
+This command uploads a mailbox generated with git\-format\-patch into an imap drafts folder\&. This allows patches to be sent as other email is sent with mail clients that cannot read mailbox files directly\&.
+
+
+Typical usage is something like:
+
+
+git\-format\-patch \-\-signoff \-\-stdout \-\-attach origin | git\-imap\-send
+
+.SH "CONFIGURATION"
+
+
+git\-imap\-send requires the following values in the repository configuration file (shown with examples):
+
+.nf
+[imap]
+    Folder = "INBOX\&.Drafts"
+
+[imap]
+    Tunnel = "ssh \-q user@server\&.com /usr/bin/imapd \&./Maildir 2> /dev/null"
+
+[imap]
+    Host = imap\&.server\&.com
+    User = bob
+    Pass = pwd
+    Port = 143
+.fi
+
+.SH "BUGS"
+
+
+Doesn't handle lines starting with "From " in the message body\&.
+
+.SH "AUTHOR"
+
+
+Derived from isync 1\&.0\&.1 by Mike McCormack\&.
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Mike McCormack
+
+.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..9d9372f
--- /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"
+
+
+\fIgit\-index\-pack\fR [\-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..742da1f
--- /dev/null
@@ -0,0 +1,101 @@
+.\"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"
+
+
+\fIgit\-init\-db\fR [\-\-template=<template_directory>] [\-\-shared[=<permissions>]]
+
+.SH "OPTIONS"
+
+.TP
+\-\-template=<template_directory>
+Provide the directory from which templates will be used\&. The default template directory is /usr/share/git\-core/templates\&.
+
+When specified, <template_directory> is used as the source of the template files rather than the default\&. The template files include some directory structure, some suggested "exclude patterns", and copies of non\-executing "hook" files\&. The suggested patterns and hook files are all modifiable and extensible\&.
+
+.TP
+\-\-shared[={false|true|umask|group|all|world|everybody}]
+Specify that the git repository is to be shared amongst several users\&. This allows users belonging to the same group to push into that repository\&. When specified, the config variable "core\&.sharedRepository" is set so that files and directories under $GIT_DIR are created with the requested permissions\&. When not specified, git will use permissions reported by umask(2)\&.
+
+The option can have the following values, defaulting to \fIgroup\fR if no value is given:
+
+.RS
+.TP 3
+\(bu
+ \fIumask\fR (or \fIfalse\fR): Use permissions reported by umask(2)\&. The default, when \-\-shared is not specified\&.
+.TP
+\(bu
+ \fIgroup\fR (or \fItrue\fR): Make the repository group\-writable, (and g+sx, since the git group may be not the primary group of all users)\&.
+.TP
+\(bu
+ \fIall\fR (or \fIworld\fR or \fIeverybody\fR): Same as \fIgroup\fR, but make the repository readable by all users\&.
+.LP
+.RE
+.IP
+
+.SH "DESCRIPTION"
+
+
+This command creates an empty git repository \- basically a \&.git directory with subdirectories for objects, refs/heads, refs/tags, and template files\&. An initial HEAD file that references the HEAD of the master branch is also created\&.
+
+
+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\&.
+
+
+Running git\-init\-db in an existing repository is safe\&. It will not overwrite things that are already there\&. The primary reason for rerunning git\-init\-db is to pick up newly added templates\&.
+
+.SH "EXAMPLES"
+
+.TP
+Start a new git repository for an existing code base
+
+.nf
+$ cd /path/to/my/codebase
+$ git\-init\-db   \fB(1)\fR
+$ git\-add \&.     \fB(2)\fR
+.fi
+.sp
+\fB1. \fRprepare /path/to/my/codebase/\&.git directory
+.br
+\fB2. \fRadd all existing file to the index
+.br
+
+
+.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-instaweb.1 b/man1/git-instaweb.1
new file mode 100755 (executable)
index 0000000..95a494c
--- /dev/null
@@ -0,0 +1,99 @@
+.\"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-INSTAWEB" 1 "" "" ""
+.SH NAME
+git-instaweb \- instantly browse your working repository in gitweb
+.SH "SYNOPSIS"
+
+
+\fIgit\-instaweb\fR [\-\-local] [\-\-httpd=<httpd>] [\-\-port=<port>] [\-\-browser=<browser>]
+
+
+\fIgit\-instaweb\fR [\-\-start] [\-\-stop] [\-\-restart]
+
+.SH "DESCRIPTION"
+
+
+A simple script to setup gitweb and a web server for browsing the local repository\&.
+
+.SH "OPTIONS"
+
+.TP
+\-l|\-\-local
+Only bind the web server to the local IP (127\&.0\&.0\&.1)\&.
+
+.TP
+\-d|\-\-httpd
+The HTTP daemon command\-line that will be executed\&. Command\-line options may be specified here, and the configuration file will be added at the end of the command\-line\&. Currently, lighttpd and apache2 are the only supported servers\&. (Default: lighttpd)
+
+.TP
+\-m|\-\-module\-path
+The module path (only needed if httpd is Apache)\&. (Default: /usr/lib/apache2/modules)
+
+.TP
+\-p|\-\-port
+The port number to bind the httpd to\&. (Default: 1234)
+
+.TP
+\-b|\-\-browser
+The web browser command\-line to execute to view the gitweb page\&. If blank, the URL of the gitweb instance will be printed to stdout\&. (Default: \fIfirefox\fR)
+
+.TP
+\-\-start
+Start the httpd instance and exit\&. This does not generate any of the configuration files for spawning a new instance\&.
+
+.TP
+\-\-stop
+Stop the httpd instance and exit\&. This does not generate any of the configuration files for spawning a new instance, nor does it close the browser\&.
+
+.TP
+\-\-restart
+Restart the httpd instance and exit\&. This does not generate any of the configuration files for spawning a new instance\&.
+
+.SH "CONFIGURATION"
+
+
+You may specify configuration in your \&.git/config
+
+.nf
+[instaweb]
+        local = true
+        httpd = apache2 \-f
+        port = 4321
+        browser = konqueror
+        modulepath = /usr/lib/apache2/modules
+
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Eric Wong <normalperson@yhbt\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Eric Wong <normalperson@yhbt\&.net>\&.
+
+.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..4665712
--- /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-LOCAL-FETCH" 1 "" "" ""
+.SH NAME
+git-local-fetch \- Duplicates another git repository on a local system
+.SH "SYNOPSIS"
+
+
+\fIgit\-local\-fetch\fR [\-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\&.
+
+.TP
+\-\-stdin
+Instead of a commit id on the commandline (which is not expected in this case), \fIgit\-local\-fetch\fR expects lines on stdin in the format
+
+.nf
+<commit\-id>['\\t'<filename\-as\-in\-\-w>]
+.fi
+
+.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..d7164cd
--- /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-LOG" 1 "" "" ""
+.SH NAME
+git-log \- Show commit logs
+.SH "SYNOPSIS"
+
+
+\fIgit\-log\fR <option>...
+
+.SH "DESCRIPTION"
+
+
+Shows the commit logs\&.
+
+
+The command takes options applicable to the \fBgit\-rev\-list\fR(1) command to control what is shown and how, and options applicable to the \fBgit\-diff\-tree\fR(1) commands to control how the change each commit introduces are shown\&.
+
+
+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\&.
+
+.TP
+\-p
+Show the change the commit introduces in a patch form\&.
+
+.TP
+<paths>...
+Show only commits that affect the specified paths\&.
+
+.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 \fIv2\&.6\&.12\fR 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 \fIgitk\fR\&. The "\-\-" is necessary to avoid confusion with the \fIbranch\fR named \fIgitk\fR 
+
+.TP
+git log \-r \-\-name\-status release\&.\&.test
+Show the commits that are in the "test" branch but not yet in the "release" branch, along with the list of paths each commit modifies\&.
+
+.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..5a5f69b
--- /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-LOST-FOUND" 1 "" "" ""
+.SH NAME
+git-lost-found \- Recover lost refs that luckily have not yet been pruned
+.SH "SYNOPSIS"
+
+
+\fIgit\-lost\-found\fR
+
+.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 \fIgit tag \-f\fR and mistyped the tag to overwrite\&. The ref to your tag is overwritten, but until you run \fIgit prune\fR, it is still there\&.
+
+.nf
+$ git lost\-found
+[1ef2b196d909eed523d4f3c9bf54b78cdd6843c6] GIT 0\&.99\&.9c
+\&.\&.\&.
+.fi
+
+
+Also you can use gitk to browse how they relate to each other and existing (probably old) tags\&.
+
+.nf
+$ gitk $(cd \&.git/lost\-found/commit && echo ??*)
+.fi
+
+
+After making sure that it is the object you are looking for, you can reconnect it to your regular \&.git/refs hierarchy\&.
+
+.nf
+$ 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
+.fi
+
+.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-ls-files.1 b/man1/git-ls-files.1
new file mode 100755 (executable)
index 0000000..c8b35d3
--- /dev/null
@@ -0,0 +1,279 @@
+.\"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"
+
+.nf
+\fIgit\-ls\-files\fR [\-z] [\-t] [\-v]
+                (\-\-[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>]
+                [\-\-error\-unmatch]
+                [\-\-full\-name] [\-\-abbrev] [\-\-] [<file>]*
+.fi
+
+.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
+\-\-directory
+If a whole directory is classified as "other", show just its name (with a trailing slash) and not its whole contents\&.
+
+.TP
+\-\-no\-empty\-directory
+Do not list empty directories\&. Has no effect without \-\-directory\&.
+
+.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
+\-\-error\-unmatch
+If any <file> does not appear in the index, treat this as an error (return 1)\&.
+
+.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
+
+modified/changed
+
+K
+
+to be killed
+
+?
+
+other
+
+
+.TP
+\-v
+Similar to \-t, but use lowercase letters for files that are marked as \fIalways matching index\fR\&.
+
+.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
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object lines, show only handful hexdigits prefix\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.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 \fI\-\-stage\fR 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"
+
+
+\fIgit\-ls\-files\fR 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 \fIgit\-ls\-files\fR 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 \fI#\fR 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 \fI!\fR 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 \fI/\fR, it is a shell glob pattern and used to match against the filename without leading directories\&.
+.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:
+
+.nf
+    $ cat \&.git/info/exclude
+    # 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/info/exclude \\
+        \-\-exclude\-per\-directory=\&.gitignore
+.fi
+
+
+Another example:
+
+.nf
+    $ cat \&.gitignore
+    vmlinux*
+    $ ls arch/foo/kernel/vm*
+    arch/foo/kernel/vmlinux\&.lds\&.S
+    $ echo '!/vmlinux*' >arch/foo/kernel/\&.gitignore
+.fi
+
+
+The second \&.gitignore keeps arch/foo/kernel/vmlinux\&.lds\&.S file from getting ignored\&.
+
+.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..408a9f9
--- /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"
+
+
+\fIgit\-ls\-remote\fR [\-\-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..85921f9
--- /dev/null
@@ -0,0 +1,97 @@
+.\"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"
+
+.nf
+\fIgit\-ls\-tree\fR [\-d] [\-r] [\-t] [\-z]
+            [\-\-name\-only] [\-\-name\-status] [\-\-full\-name] [\-\-abbrev=[<n>]]
+            <tree\-ish> [paths...]
+.fi
+
+.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 \- \fIpaths\fR denote just a list of patterns to match, e\&.g\&. so specifying directory name (without \fI\-r\fR) 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 \fI\-r\fR was not passed\&. \fI\-d\fR implies \fI\-t\fR\&.
+
+.TP
+\-z
+\\0 line termination on output\&.
+
+.TP
+\-\-name\-only, \-\-name\-status
+List only filenames (instead of the "long" output), one per line\&.
+
+.TP
+\-\-abbrev[=<n>]
+Instead of showing the full 40\-byte hexadecimal object lines, show only handful hexdigits prefix\&. Non default number of digits can be specified with \-\-abbrev=<n>\&.
+
+.TP
+\-\-full\-name
+Instead of showing the path names relative to the current working directory, show the full path names\&.
+
+.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>\&.
+
+.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..6352aed
--- /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"
+
+
+\fIgit\-mailinfo\fR [\-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 \fIcleans up\fR the Subject: header line to extract the title line for the commit log message, among which (1) remove \fIRe:\fR or \fIre:\fR, (2) leading whitespaces, (3) \fI[\fR up to \fI]\fR, typically \fI[PATCH]\fR, and then prepends "[PATCH] "\&. This flag forbids this munging, and is most useful when used to read back \fIgit format\-patch \-\-mbox\fR 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..23f8961
--- /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"
+
+
+\fIgit\-mailsplit\fR [\-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 signaling 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..e7a6a65
--- /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-MERGE-BASE" 1 "" "" ""
+.SH NAME
+git-merge-base \- Finds as good a common ancestor as possible for a merge
+.SH "SYNOPSIS"
+
+
+\fIgit\-merge\-base\fR [\-\-all] <commit> <commit>
+
+.SH "DESCRIPTION"
+
+
+"git\-merge\-base" finds as good a common ancestor as possible between the two commits\&. That is, given two commits A and B \fIgit\-merge\-base A B\fR will output a commit which is reachable from both A and B through the parent relationship\&.
+
+
+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 "OPTIONS"
+
+.TP
+\-\-all
+Output all common ancestors for the two commits instead of just one\&.
+
+.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..df27f7d
--- /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"
+
+
+\fIgit\-merge\-index\fR [\-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 (i\&.e\&., "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..29dc50d
--- /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"
+
+
+\fIgit\-merge\-one\-file\fR
+
+.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-tree.1 b/man1/git-merge-tree.1
new file mode 100755 (executable)
index 0000000..7358c1a
--- /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-TREE" 1 "" "" ""
+.SH NAME
+git-merge-tree \- Show three-way merge without touching index
+.SH "SYNOPSIS"
+
+
+\fIgit\-merge\-tree\fR <base\-tree> <branch1> <branch2>
+
+.SH "DESCRIPTION"
+
+
+Reads three treeish, and output trivial merge results and conflicting stages to the standard output\&. This is similar to what three\-way read\-tree \-m does, but instead of storing the results in the index, the command outputs the entries to the standard output\&.
+
+
+This is meant to be used by higher level scripts to compute merge results outside index, and stuff the results back into the index\&. For this reason, the output from the command omits entries that match <branch1> tree\&.
+
+.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-merge.1 b/man1/git-merge.1
new file mode 100755 (executable)
index 0000000..44b1719
--- /dev/null
@@ -0,0 +1,173 @@
+.\"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"
+
+
+\fIgit\-merge\fR [\-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
+\-\-squash
+Produce the working tree and index state as if a real merge happened, but do not actually make a commit or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit command to create a merge commit\&. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)\&.
+
+.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 loss 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..6a1f0df
--- /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"
+
+
+\fIgit\-mktag\fR < 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 \fIoptional\fR 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-mktree.1 b/man1/git-mktree.1
new file mode 100755 (executable)
index 0000000..da19f03
--- /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-MKTREE" 1 "" "" ""
+.SH NAME
+git-mktree \- Build a tree-object from ls-tree formatted text
+.SH "SYNOPSIS"
+
+
+\fIgit\-mktree\fR [\-z]
+
+.SH "DESCRIPTION"
+
+
+Reads standard input in non\-recursive ls\-tree output format, and creates a tree object\&. The object name of the tree object built is written to the standard output\&.
+
+.SH "OPTIONS"
+
+.TP
+\-z
+Read the NUL\-terminated ls\-tree \-z output instead\&.
+
+.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-mv.1 b/man1/git-mv.1
new file mode 100755 (executable)
index 0000000..93e1467
--- /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 \- Move or rename a file, directory or symlink
+.SH "SYNOPSIS"
+
+
+\fIgit\-mv\fR <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 \fI\-f\fR 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..5347b17
--- /dev/null
@@ -0,0 +1,84 @@
+.\"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"
+
+
+\fIgit\-name\-rev\fR [\-\-tags] ( \-\-all | \-\-stdin | <committish>... )
+
+.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 nameable 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 fantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a\&. Of course, you look into the commit, but that only tells you what happened, but not the context\&.
+
+
+Enter git\-name\-rev:
+
+.nf
+% git name\-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
+33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0\&.99^0~940
+.fi
+
+
+Now you are wiser, because you know that it happened 940 revisions before v0\&.99\&.
+
+
+Another nice thing you can do is:
+
+.nf
+% git log | git name\-rev \-\-stdin
+.fi
+
+.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-p4import.1 b/man1/git-p4import.1
new file mode 100755 (executable)
index 0000000..1e45e1a
--- /dev/null
@@ -0,0 +1,162 @@
+.\"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-P4IMPORT" 1 "" "" ""
+.SH NAME
+git-p4import \- Import a Perforce repository into git
+.SH "SYNOPSIS"
+
+
+git\-p4import [\-q|\-v] [\-\-notags] [\-\-authors <file>] [\-t <timezone>] <//p4repo/path> <branch>
+
+
+git\-p4import \-\-stitch <//p4repo/path>
+
+
+git\-p4import
+
+.SH "DESCRIPTION"
+
+
+Import a Perforce repository into an existing git repository\&. When a <//p4repo/path> and <branch> are specified a new branch with the given name will be created and the initial import will begin\&.
+
+
+Once the initial import is complete you can do an incremental import of new commits from the Perforce repository\&. You do this by checking out the appropriate git branch and then running git\-p4import without any options\&.
+
+
+The standard p4 client is used to communicate with the Perforce repository; it must be configured correctly in order for git\-p4import to operate (see below)\&.
+
+.SH "OPTIONS"
+
+.TP
+\-q
+Do not display any progress information\&.
+
+.TP
+\-v
+Give extra progress information\&.
+
+.TP
+\-\-authors
+Specify an authors file containing a mapping of Perforce user ids to full names and email addresses (see Notes below)\&.
+
+.TP
+\-\-notags
+Do not create a tag for each imported commit\&.
+
+.TP
+\-\-stitch
+Import the contents of the given perforce branch into the currently checked out git branch\&.
+
+.TP
+\-\-log
+Store debugging information in the specified file\&.
+
+.TP
+\-t
+Specify that the remote repository is in the specified timezone\&. Timezone must be in the format "US/Pacific" or "Europe/London" etc\&. You only need to specify this once, it will be saved in the git config file for the repository\&.
+
+.TP
+<//p4repo/path>
+The Perforce path that will be imported into the specified branch\&.
+
+.TP
+<branch>
+The new branch that will be created to hold the Perforce imports\&.
+
+.SH "P4 CLIENT"
+
+
+You must make the p4 client command available in your $PATH and configure it to communicate with the target Perforce repository\&. Typically this means you must set the "$P4PORT" and "$P4CLIENT" environment variables\&.
+
+
+You must also configure a p4 client "view" which maps the Perforce branch into the top level of your git repository, for example:
+
+.nf
+Client: myhost
+
+Root:   /home/sean/import
+
+Options:   noallwrite clobber nocompress unlocked modtime rmdir
+
+View:
+        //public/jam/\&.\&.\&. //myhost/jam/\&.\&.\&.
+.fi
+
+
+With the above p4 client setup, you could import the "jam" perforce branch into a branch named "jammy", like so:
+
+.nf
+$ mkdir \-p /home/sean/import/jam
+$ cd /home/sean/import/jam
+$ git init\-db
+$ git p4import //public/jam jammy
+.fi
+
+.SH "MULTIPLE BRANCHES"
+
+
+Note that by creating multiple "views" you can use git\-p4import to import additional branches into the same git repository\&. However, the p4 client has a limitation in that it silently ignores all but the last "view" that maps into the same local directory\&. So the following will \fInot\fR work:
+
+.nf
+View:
+        //public/jam/\&.\&.\&. //myhost/jam/\&.\&.\&.
+        //public/other/\&.\&.\&. //myhost/jam/\&.\&.\&.
+        //public/guest/\&.\&.\&. //myhost/jam/\&.\&.\&.
+.fi
+
+
+If you want more than one Perforce branch to be imported into the same directory you must employ a workaround\&. A simple option is to adjust your p4 client before each import to only include a single view\&.
+
+
+Another option is to create multiple symlinks locally which all point to the same directory in your git repository and then use one per "view" instead of listing the actual directory\&.
+
+.SH "TAGS"
+
+
+A git tag of the form p4/xx is created for every change imported from the Perforce repository where xx is the Perforce changeset number\&. Therefore after the import you can use git to access any commit by its Perforce number, e\&.g\&. git show p4/327\&.
+
+
+The tag associated with the HEAD commit is also how git\-p4import determines if there are new changes to incrementally import from the Perforce repository\&.
+
+
+If you import from a repository with many thousands of changes you will have an equal number of p4/xxxx git tags\&. Git tags can be expensive in terms of disk space and repository operations\&. If you don't need to perform further incremental imports, you may delete the tags\&.
+
+.SH "NOTES"
+
+
+You can interrupt the import (e\&.g\&. ctrl\-c) at any time and restart it without worry\&.
+
+
+Author information is automatically determined by querying the Perforce "users" table using the id associated with each change\&. However, if you want to manually supply these mappings you can do so with the "\-\-authors" option\&. It accepts a file containing a list of mappings with each line containing one mapping in the format:
+
+.nf
+    perforce_id = Full Name <email@address\&.com>
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Sean Estabrooks <seanlkml@sympatico\&.ca>
+
+.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..3862b62
--- /dev/null
@@ -0,0 +1,101 @@
+.\"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"
+
+.nf
+\fIgit\-pack\-objects\fR [\-q] [\-\-no\-reuse\-delta] [\-\-non\-empty]
+        [\-\-local] [\-\-incremental] [\-\-window=N] [\-\-depth=N]
+        {\-\-stdout | base\-name} < object\-list
+.fi
+
+.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)\&.
+
+
+\fIgit\-unpack\-objects\fR 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\&.
+
+
+In a packed archive, an object is either stored as a compressed whole, or as a difference from some other object\&. The latter is often called a delta\&.
+
+.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 written 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\&.
+
+.TP
+\-q
+This flag makes the command not to report its progress on the standard error stream\&.
+
+.TP
+\-\-no\-reuse\-delta
+When creating a packed archive in a repository that has existing packs, the command reuses existing deltas\&. This sometimes results in a slightly suboptimal pack\&. This flag tells the command not to reuse existing deltas but compute them from scratch\&.
+
+.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..505f02e
--- /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"
+
+
+\fIgit\-pack\-redundant\fR [ \-\-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 \fIxargs rm\fR 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 \fI \fR \-f3 | git\-pack\-redundant \-\-all | xargs rm
+
+.SH "OPTIONS"
+
+.TP
+\-\-all
+Processes all packs\&. Any filenames on the command line 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öm <lukass@etek\&.chalmers\&.se>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Lukas Sandströ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..c5544e5
--- /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"
+
+
+\fI\&. git\-parse\-remote\fR
+
+.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..8b85a55
--- /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"
+
+
+\fIgit\-patch\-id\fR < <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, i\&.e\&., 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..73af369
--- /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"
+
+
+\fIgit\-peek\-remote\fR [\-\-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 \fIgit\-upload\-pack\fR 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, \fIgit\-upload\-pack\fR 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..9325707
--- /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"
+
+
+\fIgit\-prune\-packed\fR [\-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..7d17031
--- /dev/null
@@ -0,0 +1,70 @@
+.\"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"
+
+
+\fIgit\-prune\fR [\-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:
+
+.nf
+$ git prune $(cd \&.\&./another && $(git\-rev\-parse \-\-all))
+.fi
+
+.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..c9fcdf8
--- /dev/null
@@ -0,0 +1,301 @@
+.\"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"
+
+
+\fIgit\-pull\fR <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
+\-\-squash
+Produce the working tree and index state as if a real merge happened, but do not actually make a commit or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit command to create a merge commit\&. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)\&.
+
+.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
+\-\-upload\-pack <upload\-pack>
+When given, and the repository to fetch from is handled by \fIgit\-fetch\-pack\fR, \fI\-\-exec=<upload\-pack>\fR is passed to the command to specify non\-default path for the command run on the other end\&.
+
+.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
+\-\-no\-tags
+By default, git\-fetch fetches tags that point at objects that are downloaded from the remote repository and stores them locally\&. This option disables this automatic tag following\&.
+
+.TP
+\-t, \-\-tags
+Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism\&. This flag lets all tags and their associated objects be downloaded\&.
+
+.TP
+\-k, \-\-keep
+Keep downloaded pack\&.
+
+.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\&. See the section GIT URLS below\&.
+
+.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\&.
+
+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
+ tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>; it requests fetching everything up to the given tag\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, so it merges <ref> into the current branch without storing the remote branch anywhere locally
+.LP
+.RE
+.IP
+
+.SH "GIT URLS"
+
+
+One of the following notations can be used to name the remote repository:
+
+.IP
+
+.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://[user@]host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~/path/to/repo\&.git
+.LP
+
+
+SSH is the default transport protocol\&. You can optionally specify which user to log\-in as, and an alternate, scp\-like syntax is also supported\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+.IP
+
+.TP 3
+\(bu
+[user@]host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:path/to/repo\&.git
+.LP
+
+
+To sync with a local directory, use:
+
+.IP
+
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+
+.SH "REMOTES"
+
+
+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
+
+
+Then 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 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
+
+.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
+
+.nf
+$ 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 \&. origin
+.fi
+Here, 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
+
+.nf
+$ 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 origin
+.fi
+Here, 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..9566c28
--- /dev/null
@@ -0,0 +1,180 @@
+.\"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"
+
+
+\fIgit\-push\fR [\-\-all] [\-\-tags] [\-f | \-\-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 happen to a repository every time you push into it, by setting up \fIhooks\fR there\&. See documentation for \fBgit\-receive\-pack\fR(1)\&.
+
+.SH "OPTIONS"
+
+.TP
+<repository>
+The "remote" repository that is destination of a push operation\&. See the section GIT URLS below\&.
+
+.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\&.
+
+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)\&.
+
+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\&.
+
+Note: If no explicit refspec is found, (that is neither on the command line nor in any Push line of the corresponding remotes file\-\-\-see below), then all the refs that exist both on the local side and on the remote side are updated\&.
+
+Some short\-cut notations are also supported\&.
+
+.RS
+.TP 3
+\(bu
+ tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>\&.
+.TP
+\(bu
+A parameter <ref> without a colon is equivalent to <ref>:<ref>, hence updates <ref> in the destination from <ref> in the source\&.
+.LP
+.RE
+.IP
+
+.TP
+\-\-all
+Instead of naming each ref to push, specifies that all refs be pushed\&.
+
+.TP
+\-\-tags
+All refs under $GIT_DIR/refs/tags are pushed, in addition to refspecs explicitly listed on the command line\&.
+
+.TP
+\-f, \-\-force
+Usually, the command refuses to update a remote ref that is not a descendant of the local ref used to overwrite it\&. This flag disables the check\&. This can cause the remote repository to lose commits; use it with care\&.
+
+.SH "GIT URLS"
+
+
+One of the following notations can be used to name the remote repository:
+
+.IP
+
+.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://[user@]host\&.xz/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~user/path/to/repo\&.git/
+.TP
+\(bu
+ssh://[user@]host\&.xz/~/path/to/repo\&.git
+.LP
+
+
+SSH is the default transport protocol\&. You can optionally specify which user to log\-in as, and an alternate, scp\-like syntax is also supported\&. Both syntaxes support username expansion, as does the native git protocol\&. The following three are identical to the last three above, respectively:
+
+.IP
+
+.TP 3
+\(bu
+[user@]host\&.xz:/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:~user/path/to/repo\&.git/
+.TP
+\(bu
+[user@]host\&.xz:path/to/repo\&.git
+.LP
+
+
+To sync with a local directory, use:
+
+.IP
+
+.TP 3
+\(bu
+/path/to/repo\&.git/
+.LP
+
+.SH "REMOTES"
+
+
+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
+
+
+Then 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 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
+
+.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-quiltimport.1 b/man1/git-quiltimport.1
new file mode 100755 (executable)
index 0000000..e6ed5cf
--- /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-QUILTIMPORT" 1 "" "" ""
+.SH NAME
+git-quiltimport \- Applies a quilt patchset onto the current branch
+.SH "SYNOPSIS"
+
+.nf
+\fIgit\-quiltimport\fR [\-\-dry\-run] [\-\-author <author>] [\-\-patches <dir>]
+.fi
+
+.SH "DESCRIPTION"
+
+
+Applies a quilt patchset onto the current git branch, preserving the patch boundaries, patch order, and patch descriptions present in the quilt patchset\&.
+
+
+For each patch the code attempts to extract the author from the patch description\&. If that fails it falls back to the author specified with \-\-author\&. If the \-\-author flag was not given the patch description is displayed and the user is asked to interactively enter the author of the patch\&.
+
+
+If a subject is not found in the patch description the patch name is preserved as the 1 line subject in the git description\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-dry\-run
+Walk through the patches in the series and warn if we cannot find all of the necessary information to commit a patch\&. At the time of this writing only missing author information is warned about\&.
+
+.TP
+\-\-author Author Name <Author Email>
+The author name and email address to use when no author information can be found in the patch description\&.
+
+.TP
+\-\-patches <dir>
+The directory to find the quilt patches and the quilt series file\&.
+
+.nf
+The default for the patch directory is patches
+or the value of the $QUILT_PATCHES environment
+variable\&.
+.fi
+
+.SH "AUTHOR"
+
+
+Written by Eric Biederman <ebiederm@lnxi\&.com>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Eric Biederman <ebiederm@lnxi\&.com>
+
+.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..084e28f
--- /dev/null
@@ -0,0 +1,298 @@
+.\"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"
+
+
+\fIgit\-read\-tree\fR (<tree\-ish> | [[\-m [\-\-aggressive] | \-\-reset | \-\-prefix=<prefix>] [\-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 \fIupdate\fR 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
+\-\-aggressive
+Usually a three\-way merge by git\-read\-tree resolves the merge for really trivial cases and leaves other cases unresolved in the index, so that Porcelains can implement different merge policies\&. This flag makes the command to resolve a few more cases internally:
+
+.RS
+.TP 3
+\(bu
+when one side removes a path and the other side leaves the path unmodified\&. The resolution is to remove that path\&.
+.TP
+\(bu
+when both sides remove a path\&. The resolution is to remove that path\&.
+.TP
+\(bu
+when both sides adds a path identically\&. The resolution is to add that path\&.
+.LP
+.RE
+.IP
+
+.TP
+\-\-prefix=<prefix>/
+Keep the current index contents, and read the contents of named tree\-ish under directory at <prefix>\&. The original index file cannot have anything at the path <prefix> itself, and have nothing in <prefix>/ directory\&. Note that the <prefix>/ value must end with a slash\&.
+
+.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
+
+.nf
+$ git\-read\-tree \-m <tree1> <tree2> <tree3>
+.fi
+
+
+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 (i\&.e\&., "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 committed last to your repository:
+
+.nf
+$ JC=`git\-rev\-parse \-\-verify "HEAD^0"`
+$ git\-checkout\-index \-f \-u \-a $JC
+.fi
+
+
+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:
+
+.nf
+$ git\-fetch git://\&.\&.\&.\&. linus
+$ LT=`cat \&.git/FETCH_HEAD`
+.fi
+
+
+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:
+
+.nf
+$ 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
+.fi
+
+
+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 \fIdo\fR 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..c4de785
--- /dev/null
@@ -0,0 +1,183 @@
+.\"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 a new head
+.SH "SYNOPSIS"
+
+
+\fIgit\-rebase\fR [\-\-merge] [\-\-onto <newbase>] <upstream> [<branch>]
+
+
+\fIgit\-rebase\fR \-\-continue | \-\-skip | \-\-abort
+
+.SH "DESCRIPTION"
+
+
+git\-rebase replaces <branch> with a new branch of the same name\&. When the \-\-onto option is provided the new branch starts out with a HEAD equal to <newbase>, otherwise it is equal to <upstream>\&. It then attempts to create a new commit for each commit from the original <branch> that does not exist in the <upstream> branch\&.
+
+
+It is possible that a merge failure will prevent this process from being completely automatic\&. You will have to resolve any such merge failure and run git rebase \-\-continue\&. Another option is to bypass the commit that caused the merge failure with git rebase \-\-skip\&. To restore the original <branch> and remove the \&.dotest working files, use the command git rebase \-\-abort instead\&.
+
+
+Note that if <branch> is not specified on the command line, the currently checked out branch is used\&.
+
+
+Assume the following history exists and the current branch is "topic":
+
+.nf
+          A\-\-\-B\-\-\-C topic
+         /
+    D\-\-\-E\-\-\-F\-\-\-G master
+.fi
+
+
+From this point, the result of either of the following commands:
+
+.nf
+git\-rebase master
+git\-rebase master topic
+.fi
+
+
+would be:
+
+.nf
+                  A'\-\-B'\-\-C' topic
+                 /
+    D\-\-\-E\-\-\-F\-\-\-G master
+.fi
+
+
+While, starting from the same point, the result of either of the following commands:
+
+.nf
+git\-rebase \-\-onto master~1 master
+git\-rebase \-\-onto master~1 master topic
+.fi
+
+
+would be:
+
+.nf
+              A'\-\-B'\-\-C' topic
+             /
+    D\-\-\-E\-\-\-F\-\-\-G master
+.fi
+
+
+In case of conflict, git\-rebase will stop at the first problematic commit and leave conflict markers in the tree\&. You can use git diff to locate the markers (<<<<<<) and make edits to resolve the conflict\&. For each file you edit, you need to tell git that the conflict has been resolved, typically this would be done with
+
+.nf
+git update\-index <filename>
+.fi
+
+
+After resolving the conflict manually and updating the index with the desired resolution, you can continue the rebasing process with
+
+.nf
+git rebase \-\-continue
+.fi
+
+
+Alternatively, you can undo the git\-rebase with
+
+.nf
+git rebase \-\-abort
+.fi
+
+.SH "OPTIONS"
+
+.TP
+<newbase>
+Starting point at which to create the new commits\&. If the \-\-onto option is not specified, the starting point is <upstream>\&.
+
+.TP
+<upstream>
+Upstream branch to compare against\&.
+
+.TP
+<branch>
+Working branch; defaults to HEAD\&.
+
+.TP
+\-\-continue
+Restart the rebasing process after having resolved a merge conflict\&.
+
+.TP
+\-\-abort
+Restore the original branch and abort the rebase operation\&.
+
+.TP
+\-\-skip
+Restart the rebasing process by skipping the current patch\&.
+
+.TP
+\-\-merge
+Use merging strategies to rebase\&. When the recursive (default) merge strategy is used, this allows rebase to be aware of renames on the upstream side\&.
+
+.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)\&. This implies \-\-merge\&.
+
+.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 "NOTES"
+
+
+When you rebase a branch, you are changing its history in a way that will cause problems for anyone who already has a copy of the branch in their repository and tries to pull updates from you\&. You should understand the implications of using \fIgit rebase\fR on a repository that you share\&.
+
+
+When the git rebase command is run, it will first execute a "pre\-rebase" hook if one exists\&. You can use this hook to do sanity checks and reject the rebase if it isn't appropriate\&. Please see the template pre\-rebase hook script for an example\&.
+
+
+You must be in the top directory of your project to start (or continue) a rebase\&. Upon completion, <branch> will be the current branch\&.
+
+.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..efa59b5
--- /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"
+
+
+\fIgit\-receive\-pack\fR <directory>
+
+.SH "DESCRIPTION"
+
+
+Invoked by \fIgit\-send\-pack\fR 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 \fIgit\-send\-pack\fR side, and the program pair is meant to be used to push updates to remote repository\&. For pull operations, see \fIgit\-fetch\-pack\fR\&.
+
+
+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..52b0264
--- /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"
+
+
+\fIgit\-relink\fR [\-\-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..bbe8c4a
--- /dev/null
@@ -0,0 +1,84 @@
+.\"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"
+
+
+\fIgit\-repack\fR [\-a] [\-d] [\-f] [\-l] [\-n] [\-q]
+
+.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 \fI\-d\fR\&.
+
+.TP
+\-d
+After packing, if the newly created packs make some existing packs redundant, remove the redundant packs\&. Also runs \fBgit\-prune\-packed\fR(1)\&.
+
+.TP
+\-l
+Pass the \-\-local option to git pack\-objects, see \fBgit\-pack\-objects\fR(1)\&.
+
+.TP
+\-f
+Pass the \-\-no\-reuse\-delta option to git pack\-objects, see \fBgit\-pack\-objects\fR(1)\&.
+
+.TP
+\-q
+Pass the \-q 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..aeb2524
--- /dev/null
@@ -0,0 +1,422 @@
+.\"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"
+
+.nf
+\fIgit\-repo\-config\fR [type] name [value [value_regex]]
+\fIgit\-repo\-config\fR [type] \-\-replace\-all name [value [value_regex]]
+\fIgit\-repo\-config\fR [type] \-\-get name [value_regex]
+\fIgit\-repo\-config\fR [type] \-\-get\-all name [value_regex]
+\fIgit\-repo\-config\fR [type] \-\-unset name [value_regex]
+\fIgit\-repo\-config\fR [type] \-\-unset\-all name [value_regex]
+\fIgit\-repo\-config\fR \-l | \-\-list
+.fi
+
+.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 occur on multiple lines, a POSIX regexp value_regex needs to be given\&. Only the existing values that match the regexp are updated or unset\&. If you want to handle the lines that do \fInot\fR match the regex, just prepend a single exclamation mark in front (see EXAMPLES)\&.
+
+
+The type specifier can be either \fI\-\-int\fR or \fI\-\-bool\fR, which will make \fIgit\-repo\-config\fR ensure that the variable(s) are of the given type and convert the value to the canonical form (simple decimal number for int, a "true" or "false" string for bool)\&. If no type specifier is passed, no checks or transformations are performed on the value\&.
+
+
+This command will fail if:
+
+.TP 3
+1.
+The \&.git/config file is invalid,
+.TP
+2.
+Can not write to \&.git/config,
+.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 behavior 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
+\-\-get\-regexp
+Like \-\-get\-all, but interprets the name as a regular expression\&.
+
+.TP
+\-\-unset
+Remove the line matching the key from \&.git/config\&.
+
+.TP
+\-\-unset\-all
+Remove all matching lines from \&.git/config\&.
+
+.TP
+\-l, \-\-list
+List all variables set in \&.git/config\&.
+
+.SH "ENVIRONMENT"
+
+.TP
+GIT_CONFIG
+Take the configuration from the given file instead of \&.git/config\&.
+
+.TP
+GIT_CONFIG_LOCAL
+Currently the same as $GIT_CONFIG; when Git will support global configuration files, this will cause it to take the configuration from the global configuration file in addition to the given file\&.
+
+.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
+[core]
+        gitproxy="ssh" for "ssh://kernel\&.org/"
+        gitproxy="proxy\-command" for kernel\&.org
+        gitproxy="myprotocol\-command" for "my://"
+        gitproxy=default\-proxy ; for all the rest
+.fi
+
+
+you can set the filemode to true with
+
+.nf
+% git repo\-config core\&.filemode true
+.fi
+
+
+The hypothetical proxy command entries actually have a postfix to discern what URL they apply to\&. Here is how to change the entry for kernel\&.org to "ssh"\&.
+
+.nf
+% git repo\-config core\&.gitproxy '"ssh" for kernel\&.org' 'for kernel\&.org$'
+.fi
+
+
+This makes sure that only the key/value pair for kernel\&.org is replaced\&.
+
+
+To delete the entry for renames, do
+
+.nf
+% git repo\-config \-\-unset diff\&.renames
+.fi
+
+
+If you want to delete an entry for a multivar (like core\&.gitproxy above), you have to provide a regex matching the value of exactly one line\&.
+
+
+To query the value for a given key, do
+
+.nf
+% git repo\-config \-\-get core\&.filemode
+.fi
+
+
+or
+
+.nf
+% git repo\-config core\&.filemode
+.fi
+
+
+or, to query a multivar:
+
+.nf
+% git repo\-config \-\-get core\&.gitproxy "for kernel\&.org$"
+.fi
+
+
+If you want to know all the values for a multivar, do:
+
+.nf
+% git repo\-config \-\-get\-all core\&.gitproxy
+.fi
+
+
+If you like to live dangerous, you can replace \fIall\fR core\&.gitproxy by a new one with
+
+.nf
+% git repo\-config \-\-replace\-all core\&.gitproxy ssh
+.fi
+
+
+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:
+
+.nf
+% git repo\-config core\&.gitproxy ssh '! for '
+.fi
+
+
+To actually match only values with an exclamation mark, you have to
+
+.nf
+% git repo\-config section\&.key value '[!]'
+.fi
+
+.SH "CONFIGURATION FILE"
+
+
+The git configuration file contains a number of variables that affect the git command's behavior\&. They can be used by both the git plumbing and the porcelains\&. The variables are divided into sections, where in the fully qualified variable name the variable itself is the last dot\-separated segment and the section name is everything before the last dot\&. The variable names are case\-insensitive and only alphanumeric characters are allowed\&. Some variables may appear multiple times\&.
+
+
+The syntax is fairly flexible and permissive; whitespaces are mostly ignored\&. The \fI#\fR and \fI;\fR characters begin comments to the end of line, blank lines are ignored, lines containing strings enclosed in square brackets start sections and all the other lines are recognized as setting variables, in the form \fIname = value\fR\&. If there is no equal sign on the line, the entire line is taken as \fIname\fR and the variable is recognized as boolean "true"\&. String values may be entirely or partially enclosed in double quotes; some variables may require special value format\&.
+
+.SS "Example"
+
+.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
+
+.SS "Variables"
+
+
+Note that this list is non\-comprehensive and not necessarily complete\&. For command\-specific variables, you will find a more detailed description in the appropriate manual page\&. You will find a description of non\-core porcelain configuration variables in the respective porcelain documentation\&.
+
+.TP
+core\&.fileMode
+If false, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT\&. See \fBgit\-update\-index\fR(1)\&. True by default\&.
+
+.TP
+core\&.gitProxy
+A "proxy command" to execute (as \fIcommand host port\fR) instead of establishing direct connection to the remote server when using the git protocol for fetching\&. If the variable value is in the "COMMAND for DOMAIN" format, the command is applied only on hostnames ending with the specified domain string\&. This variable may be set multiple times and is matched in the given order; the first match wins\&.
+
+Can be overridden by the \fIGIT_PROXY_COMMAND\fR environment variable (which always applies universally, without the special "for" handling)\&.
+
+.TP
+core\&.ignoreStat
+The working copy files are assumed to stay unchanged until you mark them otherwise manually \- Git will not detect the file changes by lstat() calls\&. This is useful on systems where those are very slow, such as Microsoft Windows\&. See \fBgit\-update\-index\fR(1)\&. False by default\&.
+
+.TP
+core\&.preferSymlinkRefs
+Instead of the default "symref" format for HEAD and other symbolic reference files, use symbolic links\&. This is sometimes needed to work with old scripts that expect HEAD to be a symbolic link\&.
+
+.TP
+core\&.logAllRefUpdates
+If true, git\-update\-ref will append a line to "$GIT_DIR/logs/<ref>" listing the new SHA1 and the date/time of the update\&. If the file does not exist it will be created automatically\&. This information can be used to determine what commit was the tip of a branch "2 days ago"\&. This value is false by default (no logging)\&.
+
+.TP
+core\&.repositoryFormatVersion
+Internal variable identifying the repository format and layout version\&.
+
+.TP
+core\&.sharedRepository
+When \fIgroup\fR (or \fItrue\fR), the repository is made shareable between several users in a group (making sure all the files and objects are group\-writable)\&. When \fIall\fR (or \fIworld\fR or \fIeverybody\fR), the repository will be readable by all users, additionally to being group\-shareable\&. When \fIumask\fR (or \fIfalse\fR), git will use permissions reported by umask(2)\&. See \fBgit\-init\-db\fR(1)\&. False by default\&.
+
+.TP
+core\&.warnAmbiguousRefs
+If true, git will warn you if the ref name you passed it is ambiguous and might match multiple refs in the \&.git/refs/ tree\&. True by default\&.
+
+.TP
+core\&.compression
+An integer \-1\&.\&.9, indicating the compression level for objects that are not in a pack file\&. \-1 is the zlib and git default\&. 0 means no compression, and 1\&.\&.9 are various speed/size tradeoffs, 9 being slowest\&.
+
+.TP
+core\&.legacyheaders
+A boolean which enables the legacy object header format in case you want to interoperate with old clients accessing the object database directly (where the "http://" and "rsync://" protocols count as direct access)\&.
+
+.TP
+alias\&.*
+Command aliases for the \fBgit\fR(1) command wrapper \- e\&.g\&. after defining "alias\&.last = cat\-file commit HEAD", the invocation "git last" is equivalent to "git cat\-file commit HEAD"\&. To avoid confusion and troubles with script usage, aliases that hide existing git commands are ignored\&. Arguments are split by spaces, the usual shell quoting and escaping is supported\&. quote pair and a backslash can be used to quote them\&.
+
+.TP
+apply\&.whitespace
+Tells git\-apply how to handle whitespaces, in the same way as the \fI\-\-whitespace\fR option\&. See \fBgit\-apply\fR(1)\&.
+
+.TP
+pager\&.color
+A boolean to enable/disable colored output when the pager is in use (default is true)\&.
+
+.TP
+diff\&.color
+When true (or always), always use colors in patch\&. When false (or never), never\&. When set to auto, use colors only when the output is to the terminal\&.
+
+.TP
+diff\&.color\&.<slot>
+Use customized color for diff colorization\&. <slot> specifies which part of the patch to use the specified color, and is one of plain (context text), meta (metainformation), frag (hunk header), old (removed lines), or new (added lines)\&. The value for these configuration variables can be one of: normal, bold, dim, ul, blink, reverse, reset, black, red, green, yellow, blue, magenta, cyan, or white\&.
+
+.TP
+diff\&.renameLimit
+The number of files to consider when performing the copy/rename detection; equivalent to the git diff option \fI\-l\fR\&.
+
+.TP
+diff\&.renames
+Tells git to detect renames\&. If set to any boolean value, it will enable basic rename detection\&. If set to "copies" or "copy", it will detect copies, as well\&.
+
+.TP
+format\&.headers
+Additional email headers to include in a patch to be submitted by mail\&. See \fBgit\-format\-patch\fR(1)\&.
+
+.TP
+gitcvs\&.enabled
+Whether the cvs pserver interface is enabled for this repository\&. See \fBgit\-cvsserver\fR(1)\&.
+
+.TP
+gitcvs\&.logfile
+Path to a log file where the cvs pserver interface well... logs various stuff\&. See \fBgit\-cvsserver\fR(1)\&.
+
+.TP
+http\&.sslVerify
+Whether to verify the SSL certificate when fetching or pushing over HTTPS\&. Can be overridden by the \fIGIT_SSL_NO_VERIFY\fR environment variable\&.
+
+.TP
+http\&.sslCert
+File containing the SSL certificate when fetching or pushing over HTTPS\&. Can be overridden by the \fIGIT_SSL_CERT\fR environment variable\&.
+
+.TP
+http\&.sslKey
+File containing the SSL private key when fetching or pushing over HTTPS\&. Can be overridden by the \fIGIT_SSL_KEY\fR environment variable\&.
+
+.TP
+http\&.sslCAInfo
+File containing the certificates to verify the peer with when fetching or pushing over HTTPS\&. Can be overridden by the \fIGIT_SSL_CAINFO\fR environment variable\&.
+
+.TP
+http\&.sslCAPath
+Path containing files with the CA certificates to verify the peer with when fetching or pushing over HTTPS\&. Can be overridden by the \fIGIT_SSL_CAPATH\fR environment variable\&.
+
+.TP
+http\&.maxRequests
+How many HTTP requests to launch in parallel\&. Can be overridden by the \fIGIT_HTTP_MAX_REQUESTS\fR environment variable\&. Default is 5\&.
+
+.TP
+http\&.lowSpeedLimit, http\&.lowSpeedTime
+If the HTTP transfer speed is less than \fIhttp\&.lowSpeedLimit\fR for longer than \fIhttp\&.lowSpeedTime\fR seconds, the transfer is aborted\&. Can be overridden by the \fIGIT_HTTP_LOW_SPEED_LIMIT\fR and \fIGIT_HTTP_LOW_SPEED_TIME\fR environment variables\&.
+
+.TP
+i18n\&.commitEncoding
+Character encoding the commit messages are stored in; git itself does not care per se, but this information is necessary e\&.g\&. when importing commits from emails or in the gitk graphical history browser (and possibly at other places in the future or in other porcelains)\&. See e\&.g\&. \fBgit\-mailinfo\fR(1)\&. Defaults to \fIutf\-8\fR\&.
+
+.TP
+merge\&.summary
+Whether to include summaries of merged commits in newly created merge commit messages\&. False by default\&.
+
+.TP
+pack\&.window
+The size of the window used by \fBgit\-pack\-objects\fR(1) when no window size is given on the command line\&. Defaults to 10\&.
+
+.TP
+pull\&.octopus
+The default merge strategy to use when pulling multiple branches at once\&.
+
+.TP
+pull\&.twohead
+The default merge strategy to use when pulling a single branch\&.
+
+.TP
+show\&.difftree
+The default \fBgit\-diff\-tree\fR(1) arguments to be used for \fBgit\-show\fR(1)\&.
+
+.TP
+showbranch\&.default
+The default set of branches for \fBgit\-show\-branch\fR(1)\&. See \fBgit\-show\-branch\fR(1)\&.
+
+.TP
+tar\&.umask
+By default, \fBgit\-tar\-tree\fR(1) sets file and directories modes to 0666 or 0777\&. While this is both useful and acceptable for projects such as the Linux Kernel, it might be excessive for other projects\&. With this variable, it becomes possible to tell \fBgit\-tar\-tree\fR(1) to apply a specific umask to the modes above\&. The special value "user" indicates that the user's current umask will be used\&. This should be enough for most projects, as it will lead to the same permissions as \fBgit\-checkout\fR(1) would use\&. The default value remains 0, which means world read\-write\&.
+
+.TP
+user\&.email
+Your email address to be recorded in any newly created commits\&. Can be overridden by the \fIGIT_AUTHOR_EMAIL\fR and \fIGIT_COMMITTER_EMAIL\fR environment variables\&. See \fBgit\-commit\-tree\fR(1)\&.
+
+.TP
+user\&.name
+Your full name to be recorded in any newly created commits\&. Can be overridden by the \fIGIT_AUTHOR_NAME\fR and \fIGIT_COMMITTER_NAME\fR environment variables\&. See \fBgit\-commit\-tree\fR(1)\&.
+
+.TP
+whatchanged\&.difftree
+The default \fBgit\-diff\-tree\fR(1) arguments to be used for \fBgit\-whatchanged\fR(1)\&.
+
+.TP
+imap
+The configuration variables in the \fIimap\fR section are described in \fBgit\-imap\-send\fR(1)\&.
+
+.SH "AUTHOR"
+
+
+Written by Johannes Schindelin <Johannes\&.Schindelin@gmx\&.de>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by Johannes Schindelin, Petr Baudis and the git\-list <git@vger\&.kernel\&.org>\&.
+
+.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..2a8a609
--- /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"
+
+
+\fIgit\-request\-pull\fR <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-rerere.1 b/man1/git-rerere.1
new file mode 100755 (executable)
index 0000000..c56924f
--- /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-RERERE" 1 "" "" ""
+.SH NAME
+git-rerere \- Reuse recorded resolve
+.SH "SYNOPSIS"
+
+
+\fIgit\-rerere\fR
+
+.SH "DESCRIPTION"
+
+
+In a workflow that employs relatively long lived topic branches, the developer sometimes needs to resolve the same conflict over and over again until the topic branches are done (either merged to the "release" branch, or sent out and accepted upstream)\&.
+
+
+This command helps this process by recording conflicted automerge results and corresponding hand\-resolve results on the initial manual merge, and later by noticing the same automerge results and applying the previously recorded hand resolution\&.
+
+.RS
+.Sh "Note"
+
+
+You need to create $GIT_DIR/rr\-cache directory to enable this command\&.
+
+.RE
+
+.SH "DISCUSSION"
+
+
+When your topic branch modifies overlapping area that your master branch (or upstream) touched since your topic branch forked from it, you may want to test it with the latest master, even before your topic branch is ready to be pushed upstream:
+
+.nf
+              o\-\-\-*\-\-\-o topic
+             /
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o master
+.fi
+
+
+For such a test, you need to merge master and topic somehow\&. One way to do it is to pull master into the topic branch:
+
+.nf
+        $ git checkout topic
+        $ git pull \&. master
+
+              o\-\-\-*\-\-\-o\-\-\-+ topic
+             /           /
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o master
+.fi
+
+
+The commits marked with * touch the same area in the same file; you need to resolve the conflicts when creating the commit marked with +\&. Then you can test the result to make sure your work\-in\-progress still works with what is in the latest master\&.
+
+
+After this test merge, there are two ways to continue your work on the topic\&. The easiest is to build on top of the test merge commit +, and when your work in the topic branch is finally ready, pull the topic branch into master, and/or ask the upstream to pull from you\&. By that time, however, the master or the upstream might have been advanced since the test merge +, in which case the final commit graph would look like this:
+
+.nf
+        $ git checkout topic
+        $ git pull \&. master
+        $ \&.\&.\&. work on both topic and master branches
+        $ git checkout master
+        $ git pull \&. topic
+
+              o\-\-\-*\-\-\-o\-\-\-+\-\-\-o\-\-\-o topic
+             /           /         \\
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-+ master
+.fi
+
+
+When your topic branch is long\-lived, however, your topic branch would end up having many such "Merge from master" commits on it, which would unnecessarily clutter the development history\&. Readers of the Linux kernel mailing list may remember that Linus complained about such too frequent test merges when a subsystem maintainer asked to pull from a branch full of "useless merges"\&.
+
+
+As an alternative, to keep the topic branch clean of test merges, you could blow away the test merge, and keep building on top of the tip before the test merge:
+
+.nf
+        $ git checkout topic
+        $ git pull \&. master
+        $ git reset \-\-hard HEAD^ ;# rewind the test merge
+        $ \&.\&.\&. work on both topic and master branches
+        $ git checkout master
+        $ git pull \&. topic
+
+              o\-\-\-*\-\-\-o\-\-\-\-\-\-\-o\-\-\-o topic
+             /                     \\
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-+ master
+.fi
+
+
+This would leave only one merge commit when your topic branch is finally ready and merged into the master branch\&. This merge would require you to resolve the conflict, introduced by the commits marked with *\&. However, often this conflict is the same conflict you resolved when you created the test merge you blew away\&. git\-rerere command helps you to resolve this final conflicted merge using the information from your earlier hand resolve\&.
+
+
+Running git\-rerere command immediately after a conflicted automerge records the conflicted working tree files, with the usual conflict markers <<<<<<<, =======, and >>>>>>> in them\&. Later, after you are done resolving the conflicts, running git\-rerere again records the resolved state of these files\&. Suppose you did this when you created the test merge of master into the topic branch\&.
+
+
+Next time, running git\-rerere after seeing a conflicted automerge, if the conflict is the same as the earlier one recorded, it is noticed and a three\-way merge between the earlier conflicted automerge, the earlier manual resolution, and the current conflicted automerge is performed by the command\&. If this three\-way merge resolves cleanly, the result is written out to your working tree file, so you would not have to manually resolve it\&. Note that git\-rerere leaves the index file alone, so you still need to do the final sanity checks with git diff (or git diff \-c) and git update\-index when you are satisfied\&.
+
+
+As a convenience measure, git\-merge automatically invokes git\-rerere when it exits with a failed automerge, which records it if it is a new conflict, or reuses the earlier hand resolve when it is not\&. git\-commit also invokes git\-rerere when recording a merge result\&. What this means is that you do not have to do anything special yourself (Note: you still have to create $GIT_DIR/rr\-cache directory to enable this command)\&.
+
+
+In our example, when you did the test merge, the manual resolution is recorded, and it will be reused when you do the actual merge later with updated master and topic branch, as long as the earlier resolution is still applicable\&.
+
+
+The information git\-rerere records is also used when running git\-rebase\&. After blowing away the test merge and continuing development on the topic branch:
+
+.nf
+              o\-\-\-*\-\-\-o\-\-\-\-\-\-\-o\-\-\-o topic
+             /
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o\-\-\-o\-\-\-o   master
+
+        $ git rebase master topic
+
+                                  o\-\-\-*\-\-\-o\-\-\-\-\-\-\-o\-\-\-o topic
+                                 /
+    o\-\-\-o\-\-\-o\-\-\-*\-\-\-o\-\-\-o\-\-\-o\-\-\-o   master
+.fi
+
+
+you could run git rebase master topic, to keep yourself up\-to\-date even before your topic is ready to be sent upstream\&. This would result in falling back to three\-way merge, and it would conflict the same way the test merge you resolved earlier\&. git\-rerere is run by git rebase to help you resolve this conflict\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junkio@cox\&.net>
+
+.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..60fd328
--- /dev/null
@@ -0,0 +1,194 @@
+.\"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"
+
+
+\fIgit\-reset\fR [\-\-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 (i\&.e\&., 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\&.
+
+.SH "EXAMPLES"
+
+.TP
+Undo a commit and redo
+
+.nf
+$ git commit \&.\&.\&.
+$ git reset \-\-soft HEAD^      \fB(1)\fR
+$ edit                        \fB(2)\fR
+$ git commit \-a \-c ORIG_HEAD  \fB(3)\fR
+.fi
+.sp
+\fB1. \fRThis 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"\&.
+.br
+\fB2. \fRmake corrections to working tree files\&.
+.br
+\fB3. \fR"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\&.
+.br
+
+
+.TP
+Undo commits permanently
+
+.nf
+$ git commit \&.\&.\&.
+$ git reset \-\-hard HEAD~3   \fB(1)\fR
+.fi
+.sp
+\fB1. \fRThe last three commits (HEAD, HEAD^, and HEAD~2) were bad and you do not want to ever see them again\&. Do \fInot\fR do this if you have already given these commits to somebody else\&.
+.br
+
+
+.TP
+Undo a commit, making it a topic branch
+
+.nf
+$ git branch topic/wip     \fB(1)\fR
+$ git reset \-\-hard HEAD~3  \fB(2)\fR
+$ git checkout topic/wip   \fB(3)\fR
+.fi
+.sp
+\fB1. \fRYou 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\&.
+.br
+\fB2. \fRRewind the master branch to get rid of those three commits\&.
+.br
+\fB3. \fRSwitch to "topic/wip" branch and keep working\&.
+.br
+
+
+.TP
+Undo update\-index
+
+.nf
+$ edit                                     \fB(1)\fR
+$ git\-update\-index frotz\&.c filfre\&.c
+$ mailx                                    \fB(2)\fR
+$ git reset                                \fB(3)\fR
+$ git pull git://info\&.example\&.com/ nitfol  \fB(4)\fR
+.fi
+.sp
+\fB1. \fRyou 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\&.
+.br
+\fB2. \fRsomebody asks you to pull, and the changes sounds worthy of merging\&.
+.br
+\fB3. \fRhowever, 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\&.
+.br
+\fB4. \fRthen you can pull and merge, leaving frotz\&.c and filfre\&.c changes still in the working tree\&.
+.br
+
+
+.TP
+Undo a merge or pull
+
+.nf
+$ git pull                         \fB(1)\fR
+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                 \fB(2)\fR
+$ git pull \&. topic/branch          \fB(3)\fR
+Updating from 41223\&.\&.\&. to 13134\&.\&.\&.
+Fast forward
+$ git reset \-\-hard ORIG_HEAD       \fB(4)\fR
+.fi
+.sp
+\fB1. \fRtry 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\&.
+.br
+\fB2. \fR"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\&.
+.br
+\fB3. \fRmerge a topic branch into the current branch, which resulted in a fast forward\&.
+.br
+\fB4. \fRbut 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\&.
+.br
+
+
+.TP
+Interrupted workflow
+Suppose you are interrupted by an urgent fix request while you are in the middle of a large change\&. The files in your working tree are not in any shape to be committed yet, but you need to get to the other branch for a quick bugfix\&.
+
+.nf
+$ git checkout feature ;# you were working in "feature" branch and
+$ work work work       ;# got interrupted
+$ git commit \-a \-m 'snapshot WIP'                 \fB(1)\fR
+$ git checkout master
+$ fix fix fix
+$ git commit ;# commit with real log
+$ git checkout feature
+$ git reset \-\-soft HEAD^ ;# go back to WIP state  \fB(2)\fR
+$ git reset                                       \fB(3)\fR
+.fi
+.sp
+\fB1. \fRThis commit will get blown away so a throw\-away log message is OK\&.
+.br
+\fB2. \fRThis removes the \fIWIP\fR commit from the commit history, and sets your working tree to the state just before you made that snapshot\&.
+.br
+\fB3. \fRAt this point the index file still has all the WIP changes you committed as \fIsnapshot WIP\fR\&. This updates the index to show your WIP files as uncommitted\&.
+.br
+
+
+.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..c1e53d1
--- /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"
+
+
+\fIgit\-resolve\fR <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..331d87b
--- /dev/null
@@ -0,0 +1,142 @@
+.\"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"
+
+.nf
+\fIgit\-rev\-list\fR [ \-\-max\-count=number ]
+             [ \-\-max\-age=timestamp ]
+             [ \-\-min\-age=timestamp ]
+             [ \-\-sparse ]
+             [ \-\-no\-merges ]
+             [ \-\-remove\-empty ]
+             [ \-\-not ]
+             [ \-\-all ]
+             [ \-\-topo\-order ]
+             [ \-\-parents ]
+             [ [\-\-objects | \-\-objects\-edge] [ \-\-unpacked ] ]
+             [ \-\-pretty | \-\-header ]
+             [ \-\-bisect ]
+             [ \-\-merge ]
+             <commit>... [ \-\- <paths>... ]
+.fi
+
+.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 \fI^\fR 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 \fIfoo\fR and \fIbar\fR, but not in \fIbaz\fR"\&.
+
+
+A special notation <commit1>\&.\&.<commit2> can be used as a short\-hand for ^<commit1> <commit2>\&.
+
+
+Another special notation is <commit1>...<commit2> which is useful for merges\&. The resulting set of commits is the symmetric difference between the two operands\&. The following two commands are equivalent:
+
+.nf
+$ git\-rev\-list A B \-\-not $(git\-merge\-base \-\-all A B)
+$ git\-rev\-list A\&.\&.\&.B
+.fi
+
+.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
+\-\-parents
+Print the parents of the commit\&.
+
+.TP
+\-\-objects
+Print the object IDs of any object referenced by the listed commits\&. \fIgit\-rev\-list \-\-objects foo ^bar\fR thus means "send me all object IDs which I need to download if I have the commit object \fIbar\fR, but not \fIfoo\fR"\&.
+
+.TP
+\-\-objects\-edge
+Similar to \-\-objects, but also print the IDs of excluded commits prefixed with a \- character\&. This is used by git\-pack\-objects to build \fIthin\fR pack, which records objects in deltified form based on objects contained in these excluded commits to reduce network traffic\&.
+
+.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 \fIgit\-rev\-list \-\-bisect foo ^bar ^baz\fR outputs \fImidpoint\fR, the output of \fIgit\-rev\-list foo ^midpoint\fR and \fIgit\-rev\-list midpoint ^bar ^baz\fR 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
+\-\-remove\-empty
+Stop when a given path disappears from the tree\&.
+
+.TP
+\-\-no\-merges
+Do not print commits with more than one parent\&.
+
+.TP
+\-\-not
+Reverses the meaning of the \fI^\fR prefix (or lack thereof) for all following revision specifiers, up to the next \-\-not\&.
+
+.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
+After a failed merge, show refs that touch files having a conflict and don't exist on all heads to merge\&.
+
+.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-rev-parse.1 b/man1/git-rev-parse.1
new file mode 100755 (executable)
index 0000000..8dad291
--- /dev/null
@@ -0,0 +1,211 @@
+.\"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"
+
+
+\fIgit\-rev\-parse\fR [ \-\-option ] <args>...
+
+.SH "DESCRIPTION"
+
+
+Many git porcelainish commands take mixture of flags (i\&.e\&. parameters that begin with a dash \fI\-\fR) 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 \fI^\fR and strip \fI^\fR prefix from the object names that already have one\&.
+
+.TP
+\-\-symbolic
+Usually the object names are output in SHA1 form (with possible \fI^\fR 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
+\-\-branches
+Show branch refs found in $GIT_DIR/refs/heads\&.
+
+.TP
+\-\-tags
+Show tag refs found in $GIT_DIR/refs/tags\&.
+
+.TP
+\-\-remotes
+Show tag refs found in $GIT_DIR/refs/remotes\&.
+
+.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
+\-\-git\-dir
+Show $GIT_DIR if defined else show the path to the \&.git directory\&.
+
+.TP
+\-\-short, \-\-short=number
+Instead of outputting the full SHA1 values of object names try to abbreviate them to a shorter unique name\&. When no length is specified 7 is used\&. The minimum length is 4\&.
+
+.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 \fIextended SHA1\fR 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\&. \fImaster\fR 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 \fIheads/master\fR to tell git which one you mean\&.
+.TP
+\(bu
+A suffix \fI@\fR followed by a date specification enclosed in a brace pair (e\&.g\&. \fI{yesterday}\fR, \fI{1 month 2 weeks 3 days 1 hour 1 second ago}\fR or \fI{1979\-02\-26 18:30:00}\fR) to specify the value of the ref at a prior point in time\&. This suffix may only be used immediately following a ref name and the ref must have an existing log ($GIT_DIR/logs/<ref>)\&.
+.TP
+\(bu
+A suffix \fI^\fR to a revision parameter means the first parent of that commit object\&. \fI^<n>\fR means the <n>th parent (i\&.e\&. \fIrev^\fR is equivalent to \fIrev^1\fR)\&. As a special rule, \fIrev^0\fR means the commit itself and is used when \fIrev\fR is the object name of a tag object that refers to a commit object\&.
+.TP
+\(bu
+A suffix \fI~<n>\fR 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 \fI^\fR 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 \fI^\fR 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
+
+
+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 "SPECIFYING RANGES"
+
+
+History traversing commands such as git\-log operate on a set of commits, not just a single commit\&. To these commands, specifying a single revision with the notation described in the previous section means the set of commits reachable from that commit, following the commit ancestry chain\&.
+
+
+To exclude commits reachable from a commit, a prefix ^ notation is used\&. E\&.g\&. "^r1 r2" means commits reachable from r2 but exclude the ones reachable from r1\&.
+
+
+This set operation appears so often that there is a shorthand for it\&. "r1\&.\&.r2" is equivalent to "^r1 r2"\&. It is the difference of two sets (subtract the set of commits reachable from r1 from the set of commits reachable from r2)\&.
+
+
+A similar notation "r1\&.\&.\&.r2" is called symmetric difference of r1 and r2 and is defined as "r1 r2 \-\-not $(git\-merge\-base \-\-all r1 r2)"\&. It it the set of commits that are reachable from either one of r1 or r2 but not from both\&.
+
+
+Here are a few examples:
+
+.nf
+D                A B D
+D F              A B C D F
+^A G             B D
+^A F             B C F
+G\&.\&.\&.I            C D F G I
+^B G I           C D F G I
+.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..eaccab2
--- /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"
+
+
+\fIgit\-revert\fR [\-\-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-rm.1 b/man1/git-rm.1
new file mode 100755 (executable)
index 0000000..9668ff2
--- /dev/null
@@ -0,0 +1,99 @@
+.\"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-RM" 1 "" "" ""
+.SH NAME
+git-rm \- Remove files from the working tree and from the index
+.SH "SYNOPSIS"
+
+
+\fIgit\-rm\fR [\-f] [\-n] [\-v] [\-\-] <file>...
+
+.SH "DESCRIPTION"
+
+
+A convenience wrapper for git\-update\-index \-\-remove\&. For those coming from cvs, git\-rm provides an operation similar to "cvs rm" or "cvs remove"\&.
+
+.SH "OPTIONS"
+
+.TP
+<file>...
+Files to remove from the index and optionally, from the working tree as well\&.
+
+.TP
+\-f
+Remove files from the working tree as well as from the index\&.
+
+.TP
+\-n
+Don't actually remove the file(s), just show if they exist in the index\&.
+
+.TP
+\-v
+Be verbose\&.
+
+.TP
+\-\-
+This option can be used to separate command\-line options from the list of files, (useful when filenames might be mistaken for command\-line options)\&.
+
+.SH "DISCUSSION"
+
+
+The list of <file> given to the command is fed to git\-ls\-files command to list files that are registered 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 remove all files in it and its subdirectories (the directories themselves are never removed from the working tree);
+.TP
+2.
+Giving the name of a file that is not in the index does not remove that file\&.
+.LP
+
+.SH "EXAMPLES"
+
+.TP
+git\-rm Documentation/\\*\&.txt
+Removes all *\&.txt files from the index that are under the Documentation directory and any of its subdirectories\&. The files are not removed from the working tree\&.
+
+Note that the asterisk * is quoted from the shell in this example; this lets the command include the files from subdirectories of Documentation/ directory\&.
+
+.TP
+git\-rm \-f git\-*\&.sh
+Remove all git\-*\&.sh scripts that are in the index\&. The files are removed from the index, and (because of the \-f option), from the working tree as well\&. Because this example lets the shell expand the asterisk (i\&.e\&. you are listing the files explicitly), it does not remove subdir/git\-foo\&.sh\&.
+
+.SH "SEE ALSO"
+
+
+\fBgit\-add\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-send-email.1 b/man1/git-send-email.1
new file mode 100755 (executable)
index 0000000..eee0092
--- /dev/null
@@ -0,0 +1,118 @@
+.\"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"
+
+
+\fIgit\-send\-email\fR [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
+\-\-bcc
+Specify a "Bcc:" value for each email\&.
+
+.nf
+The \-\-bcc option must be repeated for each user you want on the bcc list\&.
+.fi
+
+.TP
+\-\-cc
+Specify a starting "Cc:" value for each email\&.
+
+.nf
+The \-\-cc option must be repeated for each user you want on the cc list\&.
+.fi
+
+.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
+\-\-compose
+Use $EDITOR to edit an introductory message for the patch series\&.
+
+.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
+\-\-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
+\-\-no\-signed\-off\-by\-cc
+Do not add emails found in Signed\-off\-by: lines to the cc list\&.
+
+.TP
+\-\-quiet
+Make git\-send\-email less verbose\&. One line per email should be all that is output\&.
+
+.TP
+\-\-smtp\-server
+If set, specifies the outgoing SMTP server to use\&. Defaults to localhost\&.
+
+.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
+\-\-suppress\-from
+Do not add the From: address to the cc: list, if it shows up in a From: line\&.
+
+.TP
+\-\-to
+Specify the primary recipient of the emails generated\&. Generally, this will be the upstream maintainer of the project involved\&.
+
+.nf
+The \-\-to option must be repeated for each user you want on the to list\&.
+.fi
+
+.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..ad7bdf5
--- /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"
+
+
+\fIgit\-send\-pack\fR [\-\-all] [\-\-force] [\-\-exec=<git\-receive\-pack>] [<host>:]<directory> [<ref>...]
+
+.SH "DESCRIPTION"
+
+
+Invokes \fIgit\-receive\-pack\fR 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 \fIgit\-receive\-pack\fR 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, \fIgit\-receive\-pack\fR 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 \fI\-\-all\fR flag, all refs that exist locally are transferred to the remote side\&. You cannot specify any \fI<ref>\fR if you use this flag\&.
+
+
+Without \fI\-\-all\fR and without any \fI<ref>\fR, the refs that exist both on the local side and on the remote side are updated\&.
+
+
+When one or more \fI<ref>\fR 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 \fI<name>\fR is just a shorthand for \fI<name>:<name>\fR\&.
+
+
+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 \fI\-\-force\fR, 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 \fI\-\-force\fR, the fast forward check is disabled for all refs\&.
+
+
+Optionally, a <ref> parameter can be prefixed with a plus \fI+\fR 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..8a50c21
--- /dev/null
@@ -0,0 +1,51 @@
+.\"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"
+
+
+\fIgit\-sh\-setup\fR
+
+.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:
+
+.nf
+\&. git\-sh\-setup || die "Not a git archive"
+.fi
+
+.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..cc48ec4
--- /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"
+
+
+\fIgit\-shell\fR \-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 \fI\-c\fR 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..360ac39
--- /dev/null
@@ -0,0 +1,62 @@
+.\"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 | \fIgit\-shortlog\fR
+
+.SH "DESCRIPTION"
+
+
+Summarizes \fIgit log\fR output in a format suitable for inclusion in release announcements\&. Each commit will be grouped by author the first line of the commit message will be shown\&.
+
+
+Additionally, "[PATCH]" will be stripped from the commit description\&.
+
+.SH "FILES"
+
+.TP
+\fI\&.mailmap\fR
+If this file exists, it will be used for mapping author email addresses to a real author name\&. One mapping per line, first the author name followed by the email address enclosed by \fI<\fR and \fI>\fR\&. Use hash \fI#\fR for comments\&. Example:
+
+.nf
+# Keep alphabetized
+Adam Morrow <adam@localhost\&.localdomain>
+Eve Jones <eve@laptop\&.(none)>
+.fi
+
+.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..51c77e1
--- /dev/null
@@ -0,0 +1,157 @@
+.\"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"
+
+.nf
+\fIgit\-show\-branch\fR [\-\-all] [\-\-heads] [\-\-tags] [\-\-topo\-order] [\-\-current]
+                [\-\-more=<n> | \-\-list | \-\-independent | \-\-merge\-base]
+                [\-\-no\-name | \-\-sha1\-name] [<rev> | <glob>]...
+.fi
+
+.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\&.
+
+
+It uses showbranch\&.default multi\-valued configuration items if no <rev> nor <glob> is given on the command line\&.
+
+.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
+\-\-current
+With this option, the command includes the current branch to the list of revs to be shown when it is not given on the command line\&.
+
+.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
+\-\-sparse
+By default, the output omits merges that are reachable from only one tip being shown\&. This option makes them visible\&.
+
+.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
+Synonym to \-\-more=\-1 
+
+.TP
+\-\-merge\-base
+Instead of showing the commit list, just act like the \fIgit\-merge\-base \-a\fR 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\&. Merge commits are denoted by a \- sign\&. Each commit shows a short name that can be used as an extended SHA1 to name that commit\&.
+
+
+The following example shows three branches, "master", "fixes" and "mhf":
+
+.nf
+$ 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'\&.
+.fi
+
+
+These three branches all forked from a common commit, [master], whose commit message is "Add \fIgit show\-branch\fR\&. "fixes" branch adds one commit \fIIntroduce "reset type"\fR\&. "mhf" branch has many other commits\&. The current branch is "master"\&.
+
+.SH "EXAMPLE"
+
+
+If you keep your primary branches immediately under $GIT_DIR/refs/heads, and topic branches in subdirectories of it, having the following in the configuration file may help:
+
+.nf
+[showbranch]
+        default = \-\-topo\-order
+        default = heads/*
+
+.fi
+
+
+With this, git show\-branch without extra parameters would show only the primary branches\&. In addition, if you happen to be on your topic branch, it is shown as well\&.
+
+.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..f03cca1
--- /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"
+
+
+\fIgit\-show\-index\fR < 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 \fIgit\-verify\-pack \-v\fR; 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-show.1 b/man1/git-show.1
new file mode 100755 (executable)
index 0000000..9c33051
--- /dev/null
@@ -0,0 +1,63 @@
+.\"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" 1 "" "" ""
+.SH NAME
+git-show \- Show one commit with difference it introduces
+.SH "SYNOPSIS"
+
+
+\fIgit\-show\fR <option>...
+
+.SH "DESCRIPTION"
+
+
+Shows commit log and textual diff for a single commit\&. The command internally invokes \fIgit\-rev\-list\fR piped to \fIgit\-diff\-tree\fR, and takes command line options for both of these commands\&. It also presents the merge commit in a special format as produced by \fIgit\-diff\-tree \-\-cc\fR\&.
+
+
+This manual page describes only the most frequently used options\&.
+
+.SH "OPTIONS"
+
+.TP
+<commitid>
+ID of the commit to show\&.
+
+.TP
+\-\-pretty=<format>
+Controls the output format for the commit logs\&. <format> can be one of \fIraw\fR, \fImedium\fR, \fIshort\fR, \fIfull\fR, and \fIoneline\fR\&.
+
+.SH "AUTHOR"
+
+
+Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
+
+.SH "DOCUMENTATION"
+
+
+Documentation by David Greaves, Petr Baudis 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-ssh-fetch.1 b/man1/git-ssh-fetch.1
new file mode 100755 (executable)
index 0000000..30ded86
--- /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"
+
+
+\fIgit\-ssh\-fetch\fR [\-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..6ac58bd
--- /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"
+
+
+\fIgit\-ssh\-upload\fR [\-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..47c1faa
--- /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"
+
+
+\fIgit\-status\fR
+
+.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 \fIgit\-update\-index\fR before running \fIgit commit\fR, and the latter paths are what you _would_ commit by running \fIgit commit\fR\&.
+
+
+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 \fI#\fR\&.
+
+.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..f7ca735
--- /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"
+
+
+\fIgit\-stripspace\fR < <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-svn.1 b/man1/git-svn.1
new file mode 100755 (executable)
index 0000000..3ba8d38
--- /dev/null
@@ -0,0 +1,340 @@
+.\"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-SVN" 1 "" "" ""
+.SH NAME
+git-svn \- bidirectional operation between a single Subversion branch and git
+.SH "SYNOPSIS"
+
+
+\fIgit\-svn\fR <command> [options] [arguments]
+
+.SH "DESCRIPTION"
+
+
+git\-svn is a simple conduit for changesets between a single Subversion branch and git\&.
+
+
+git\-svn is not to be confused with git\-svnimport\&. The were designed with very different goals in mind\&.
+
+
+git\-svn is designed for an individual developer who wants a bidirectional flow of changesets between a single branch in Subversion and an arbitrary number of branches in git\&. git\-svnimport is designed for read\-only operation on repositories that match a particular layout (albeit the recommended one by SVN developers)\&.
+
+
+For importing svn, git\-svnimport is potentially more powerful when operating on repositories organized under the recommended trunk/branch/tags structure, and should be faster, too\&.
+
+
+git\-svn mostly ignores the very limited view of branching that Subversion has\&. This allows git\-svn to be much easier to use, especially on repositories that are not organized in a manner that git\-svnimport is designed for\&.
+
+.SH "COMMANDS"
+
+.TP
+init
+Creates an empty git repository with additional metadata directories for git\-svn\&. The Subversion URL must be specified as a command\-line argument\&.
+
+.TP
+fetch
+Fetch unfetched revisions from the Subversion URL we are tracking\&. refs/remotes/git\-svn will be updated to the latest revision\&.
+
+.nf
+Note: You should never attempt to modify the remotes/git\-svn
+branch outside of git\-svn\&.  Instead, create a branch from
+remotes/git\-svn and work on that branch\&.  Use the 'commit'
+command (see below) to write git commits back to
+remotes/git\-svn\&.
+.fi
+
+.nf
+See 'Additional Fetch Arguments' if you are interested in
+manually joining branches on commit\&.
+.fi
+
+.TP
+commit
+Commit specified commit or tree objects to SVN\&. This relies on your imported fetch data being up\-to\-date\&. This makes absolutely no attempts to do patching when committing to SVN, it simply overwrites files with those specified in the tree or commit\&. All merging is assumed to have taken place independently of git\-svn functions\&.
+
+.TP
+rebuild
+Not a part of daily usage, but this is a useful command if you've just cloned a repository (using git\-clone) that was tracked with git\-svn\&. Unfortunately, git\-clone does not clone git\-svn metadata and the svn working tree that git\-svn uses for its operations\&. This rebuilds the metadata so git\-svn can resume fetch operations\&. A Subversion URL may be optionally specified at the command\-line if the directory/repository you're tracking has moved or changed protocols\&.
+
+.TP
+show\-ignore
+Recursively finds and lists the svn:ignore property on directories\&. The output is suitable for appending to the $GIT_DIR/info/exclude file\&.
+
+.SH "OPTIONS"
+
+.TP
+\-r <ARG>, \-\-revision <ARG>
+Only used with the \fIfetch\fR command\&.
+
+.nf
+Takes any valid \-r<argument> svn would accept and passes it
+directly to svn\&. \-r<ARG1>:<ARG2> ranges and "{" DATE "}" syntax
+is also supported\&.  This is passed directly to svn, see svn
+documentation for more details\&.
+.fi
+
+.nf
+This can allow you to make partial mirrors when running fetch\&.
+.fi
+
+.TP
+\-, \-\-stdin
+Only used with the \fIcommit\fR command\&.
+
+.nf
+Read a list of commits from stdin and commit them in reverse
+order\&.  Only the leading sha1 is read from each line, so
+git\-rev\-list \-\-pretty=oneline output can be used\&.
+.fi
+
+.TP
+\-\-rmdir
+Only used with the \fIcommit\fR command\&.
+
+.nf
+Remove directories from the SVN tree if there are no files left
+behind\&.  SVN can version empty directories, and they are not
+removed by default if there are no files left in them\&.  git
+cannot version empty directories\&.  Enabling this flag will make
+the commit to SVN act like git\&.
+.fi
+
+.nf
+repo\-config key: svn\&.rmdir
+.fi
+
+.TP
+\-e, \-\-edit
+Only used with the \fIcommit\fR command\&.
+
+.nf
+Edit the commit message before committing to SVN\&.  This is off by
+default for objects that are commits, and forced on when committing
+tree objects\&.
+.fi
+
+.nf
+repo\-config key: svn\&.edit
+.fi
+
+.TP
+\-l<num>, \-\-find\-copies\-harder
+Both of these are only used with the \fIcommit\fR command\&.
+
+.nf
+They are both passed directly to git\-diff\-tree see
+git\-diff\-tree(1) for more information\&.
+.fi
+
+.nf
+repo\-config key: svn\&.l
+repo\-config key: svn\&.findcopiesharder
+.fi
+
+.TP
+\-A<filename>, \-\-authors\-file=<filename>
+Syntax is compatible with the files used by git\-svnimport and git\-cvsimport:
+
+.nf
+loginname = Joe User <user@example\&.com>
+.fi
+
+.nf
+If this option is specified and git\-svn encounters an SVN
+committer name that does not exist in the authors\-file, git\-svn
+will abort operation\&. The user will then have to add the
+appropriate entry\&.  Re\-running the previous git\-svn command
+after the authors\-file is modified should continue operation\&.
+.fi
+
+.nf
+repo\-config key: svn\&.authors\-file
+.fi
+
+.SH "ADVANCED OPTIONS"
+
+.TP
+\-b<refname>, \-\-branch <refname>
+Used with \fIfetch\fR or \fIcommit\fR\&.
+
+.nf
+This can be used to join arbitrary git branches to remotes/git\-svn
+on new commits where the tree object is equivalent\&.
+.fi
+
+.nf
+When used with different GIT_SVN_ID values, tags and branches in
+SVN can be tracked this way, as can some merges where the heads
+end up having completely equivalent content\&.  This can even be
+used to track branches across multiple SVN _repositories_\&.
+.fi
+
+.nf
+This option may be specified multiple times, once for each
+branch\&.
+.fi
+
+.nf
+repo\-config key: svn\&.branch
+.fi
+
+.TP
+\-i<GIT_SVN_ID>, \-\-id <GIT_SVN_ID>
+This sets GIT_SVN_ID (instead of using the environment)\&. See the section on "Tracking Multiple Repositories or Branches" for more information on using GIT_SVN_ID\&.
+
+.SH "COMPATIBILITY OPTIONS"
+
+.TP
+\-\-upgrade
+Only used with the \fIrebuild\fR command\&.
+
+.nf
+Run this if you used an old version of git\-svn that used
+"git\-svn\-HEAD" instead of "remotes/git\-svn" as the branch
+for tracking the remote\&.
+.fi
+
+.TP
+\-\-no\-ignore\-externals
+Only used with the \fIfetch\fR and \fIrebuild\fR command\&.
+
+.nf
+By default, git\-svn passes \-\-ignore\-externals to svn to avoid
+fetching svn:external trees into git\&.  Pass this flag to enable
+externals tracking directly via git\&.
+.fi
+
+.nf
+Versions of svn that do not support \-\-ignore\-externals are
+automatically detected and this flag will be automatically
+enabled for them\&.
+.fi
+
+.nf
+Otherwise, do not enable this flag unless you know what you're
+doing\&.
+.fi
+
+.nf
+repo\-config key: svn\&.noignoreexternals
+.fi
+
+.SS "Basic Examples"
+
+
+Tracking and contributing to an Subversion managed\-project:
+
+.nf
+# Initialize a tree (like git init\-db):
+        git\-svn init http://svn\&.foo\&.org/project/trunk
+# Fetch remote revisions:
+        git\-svn fetch
+# Create your own branch to hack on:
+        git checkout \-b my\-branch remotes/git\-svn
+# Commit only the git commits you want to SVN:
+        git\-svn commit <tree\-ish> [<tree\-ish_2> \&.\&.\&.]
+# Commit all the git commits from my\-branch that don't exist in SVN:
+        git\-svn commit remotes/git\-svn\&.\&.my\-branch
+# Something is committed to SVN, pull the latest into your branch:
+        git\-svn fetch && git pull \&. remotes/git\-svn
+# Append svn:ignore settings to the default git exclude file:
+        git\-svn show\-ignore >> \&.git/info/exclude
+.fi
+
+.SH "DESIGN PHILOSOPHY"
+
+
+Merge tracking in Subversion is lacking and doing branched development with Subversion is cumbersome as a result\&. git\-svn completely forgoes any automated merge/branch tracking on the Subversion side and leaves it entirely up to the user on the git side\&. It's simply not worth it to do a useful translation when the original signal is weak\&.
+
+.SH "TRACKING MULTIPLE REPOSITORIES OR BRANCHES"
+
+
+This is for advanced users, most users should ignore this section\&.
+
+
+Because git\-svn does not care about relationships between different branches or directories in a Subversion repository, git\-svn has a simple hack to allow it to track an arbitrary number of related _or_ unrelated SVN repositories via one git repository\&. Simply set the GIT_SVN_ID environment variable to a name other other than "git\-svn" (the default) and git\-svn will ignore the contents of the $GIT_DIR/git\-svn directory and instead do all of its work in $GIT_DIR/$GIT_SVN_ID for that invocation\&. The interface branch will be remotes/$GIT_SVN_ID, instead of remotes/git\-svn\&. Any remotes/$GIT_SVN_ID branch should never be modified by the user outside of git\-svn commands\&.
+
+.SH "ADDITIONAL FETCH ARGUMENTS"
+
+
+This is for advanced users, most users should ignore this section\&.
+
+
+Unfetched SVN revisions may be imported as children of existing commits by specifying additional arguments to \fIfetch\fR\&. Additional parents may optionally be specified in the form of sha1 hex sums at the command\-line\&. Unfetched SVN revisions may also be tied to particular git commits with the following syntax:
+
+.nf
+svn_revision_number=git_commit_sha1
+.fi
+
+.TP
+This allows you to tie unfetched SVN revision 375 to your current HEAD
+ git\-svn fetch 375=$(git\-rev\-parse HEAD) 
+
+.SS "Advanced Example: Tracking a Reorganized Repository"
+
+
+If you're tracking a directory that has moved, or otherwise been branched or tagged off of another directory in the repository and you care about the full history of the project, then you can read this section\&.
+
+
+This is how Yann Dirson tracked the trunk of the ufoai directory when the /trunk directory of his repository was moved to /ufoai/trunk and he needed to continue tracking /ufoai/trunk where /trunk left off\&.
+
+.nf
+        # This log message shows when the repository was reorganized:
+        r166 | ydirson | 2006\-03\-02 01:36:55 +0100 (Thu, 02 Mar 2006) | 1 line
+        Changed paths:
+           D /trunk
+           A /ufoai/trunk (from /trunk:165)
+
+        # First we start tracking the old revisions:
+        GIT_SVN_ID=git\-oldsvn git\-svn init \\
+                        https://svn\&.sourceforge\&.net/svnroot/ufoai/trunk
+        GIT_SVN_ID=git\-oldsvn git\-svn fetch \-r1:165
+
+        # And now, we continue tracking the new revisions:
+        GIT_SVN_ID=git\-newsvn git\-svn init \\
+              https://svn\&.sourceforge\&.net/svnroot/ufoai/ufoai/trunk
+        GIT_SVN_ID=git\-newsvn git\-svn fetch \\
+              166=`git\-rev\-parse refs/remotes/git\-oldsvn`
+.fi
+
+.SH "BUGS"
+
+
+If somebody commits a conflicting changeset to SVN at a bad moment (right before you commit) causing a conflict and your commit to fail, your svn working tree ($GIT_DIR/git\-svn/tree) may be dirtied\&. The easiest thing to do is probably just to rm \-rf $GIT_DIR/git\-svn/tree and run \fIrebuild\fR\&.
+
+
+We ignore all SVN properties except svn:executable\&. Too difficult to map them since we rely heavily on git write\-tree being _exactly_ the same on both the SVN and git working trees and I prefer not to clutter working trees with metadata files\&.
+
+
+svn:keywords can't be ignored in Subversion (at least I don't know of a way to ignore them)\&.
+
+
+Renamed and copied directories are not detected by git and hence not tracked when committing to SVN\&. I do not plan on adding support for this as it's quite difficult and time\-consuming to get working for all the possible corner cases (git doesn't do it, either)\&. Renamed and copied files are fully supported if they're similar enough for git to detect them\&.
+
+.SH "AUTHOR"
+
+
+Written by Eric Wong <normalperson@yhbt\&.net>\&.
+
+.SH "DOCUMENTATION"
+
+
+Written by Eric Wong <normalperson@yhbt\&.net>\&.
+
diff --git a/man1/git-svnimport.1 b/man1/git-svnimport.1
new file mode 100755 (executable)
index 0000000..44e91f3
--- /dev/null
@@ -0,0 +1,171 @@
+.\"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"
+
+.nf
+\fIgit\-svnimport\fR [ \-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 ] [ \-r ] [ \-M regex ]
+                [ \-I <ignorefile_name> ] [ \-A <author_file> ]
+                <SVN_repository_URL> [ <path> ]
+.fi
+
+.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 incrementally, 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 \fItrunk\fR branch from SVN is imported to the \fIorigin\fR branch within the git repository\&. Use this option if you want to import into a different branch\&.
+
+.TP
+\-r
+Prepend \fIrX: \fR to commit messages, where X is the imported subversion revision\&.
+
+.TP
+\-I <ignorefile_name>
+Import the svn:ignore directory property to files with this name in each directory\&. (The Subversion and GIT ignore syntaxes are similar enough that using the Subversion patterns directly with "\-I \&.gitignore" will almost always just work\&.)
+
+.TP
+\-A <author_file>
+Read a file with lines on the form
+
+
+.nf
+        username = User's Full Name <email@addr\&.es>
+
+.fi
+and use "User's Full Name <email@addr\&.es>" as the GIT author and committer for Subversion commits made by "username"\&. If encountering a commit made by a user not in the list, abort\&.
+
+For convenience, this data is saved to $GIT_DIR/svn\-authors each time the \-A option is provided, and read from that same file each time git\-svnimport is run with an existing GIT repository without \-A\&.
+
+.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 \fIsvnimport\fR 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
+<path>
+The path to the module you want to check out\&.
+
+.TP
+\-h
+Print a short usage message and exit\&.
+
+.SH "OUTPUT"
+
+
+If \fI\-v\fR 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..2161ce9
--- /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"
+
+
+\fIgit\-symbolic\-ref\fR <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 \fIcan\fR 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..4f8448f
--- /dev/null
@@ -0,0 +1,97 @@
+.\"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"
+
+.nf
+\fIgit\-tag\fR [\-a | \-s | \-u <key\-id>] [\-f | \-d] [\-m <msg>] <name> [<head>]
+\fIgit\-tag\fR \-l [<pattern>]
+.fi
+
+.SH "DESCRIPTION"
+
+
+Adds a \fItag\fR 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 \fItag\fR 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\&.
+
+
+\-l <pattern> lists tags that match the given pattern (or all if no pattern is given)\&.
+
+.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
+\-l <pattern>
+List tags that match the given pattern (or all if no pattern is given)\&.
+
+.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..a73bf1d
--- /dev/null
@@ -0,0 +1,98 @@
+.\"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"
+
+
+\fIgit\-tar\-tree\fR [\-\-remote=<repo>] <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 "OPTIONS"
+
+.TP
+<tree\-ish>
+The tree or commit to produce tar archive for\&. If it is the object name of a commit object\&.
+
+.TP
+<base>
+Leading path to the files in the resulting tar archive\&.
+
+.TP
+\-\-remote=<repo>
+Instead of making a tar archive from local repository, retrieve a tar archive from a remote repository\&.
+
+.SH "CONFIGURATION"
+
+
+By default, file and directories modes are set to 0666 or 0777\&. It is possible to change this by setting the "umask" variable in the repository configuration as follows :
+
+.nf
+umask = 002     ;# group friendly
+.fi
+
+
+The special umask value "user" indicates that the user's current umask will be used instead\&. The default value remains 0, which means world readable/writable files and directories\&.
+
+.SH "EXAMPLES"
+
+.TP
+git tar\-tree HEAD junk | (cd /var/tmp/ && tar xf \-)
+Create a tar archive that contains the contents of the latest commit on the current branch, and extracts it in /var/tmp/junk directory\&.
+
+.TP
+git tar\-tree v1\&.4\&.0 git\-1\&.4\&.0 | gzip >git\-1\&.4\&.0\&.tar\&.gz
+Create a tarball for v1\&.4\&.0 release\&.
+
+.TP
+git tar\-tree v1\&.4\&.0^{tree} git\-1\&.4\&.0 | gzip >git\-1\&.4\&.0\&.tar\&.gz
+Create a tarball for v1\&.4\&.0 release, but without a global extended pax header\&.
+
+.TP
+git tar\-tree \-\-remote=example\&.com:git\&.git v1\&.4\&.0 >git\-1\&.4\&.0\&.tar
+Get a tarball v1\&.4\&.0 from example\&.com\&.
+
+.TP
+git tar\-tree HEAD:Documentation/ git\-docs > git\-1\&.4\&.0\-docs\&.tar
+Put everything in the current head's Documentation/ directory into \fIgit\-1\&.4\&.0\-docs\&.tar\fR, with the prefix \fIgit\-docs/\fR\&.
+
+.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..c5deede
--- /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"
+
+
+\fIgit\-unpack\-file\fR <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..237adfa
--- /dev/null
@@ -0,0 +1,63 @@
+.\"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"
+
+
+\fIgit\-unpack\-objects\fR [\-n] [\-q] <pack\-file
+
+.SH "DESCRIPTION"
+
+
+Read a packed archive (\&.pack) from the standard input, expanding the objects contained within and writing them into the repository in "loose" (one object per file) format\&.
+
+
+Objects that already exist in the repository will \fInot\fR be unpacked from the pack\-file\&. Therefore, nothing will be unpacked if you use this command on a pack\-file that exists within the target repository\&.
+
+
+Please see the git\-repack documentation for options to generate new packs and replace existing ones\&.
+
+.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..49ae335
--- /dev/null
@@ -0,0 +1,293 @@
+.\"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"
+
+.nf
+\fIgit\-update\-index\fR
+             [\-\-add] [\-\-remove | \-\-force\-remove] [\-\-replace]
+             [\-\-refresh] [\-q] [\-\-unmerged] [\-\-ignore\-missing]
+             [\-\-cacheinfo <mode> <object> <file>]*
+             [\-\-chmod=(+|\-)x]
+             [\-\-assume\-unchanged | \-\-no\-assume\-unchanged]
+             [\-\-really\-refresh] [\-\-unresolve] [\-\-again]
+             [\-\-info\-only] [\-\-index\-info]
+             [\-z] [\-\-stdin]
+             [\-\-verbose]
+             [\-\-] [<file>]*
+.fi
+
+.SH "DESCRIPTION"
+
+
+Modifies the index or directory cache\&. Each file mentioned is updated into the index and any \fIunmerged\fR or \fIneeds updating\fR 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 behavior 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
+\-\-assume\-unchanged, \-\-no\-assume\-unchanged
+When these flags are specified, the object name recorded for the paths are not updated\&. Instead, these options sets and unsets the "assume unchanged" bit for the paths\&. When the "assume unchanged" bit is on, git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file\&. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e\&.g\&. cifs)\&.
+
+.TP
+\-\-again
+Runs git\-update\-index itself on the paths whose index entries are different from those from the HEAD commit\&.
+
+.TP
+\-\-unresolve
+Restores the \fIunmerged\fR or \fIneeds updating\fR state of a file during a merge if it was cleared by accident\&.
+
+.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 \fI\&.\fR are discarded\&. This includes \&./file and dir/\&./file\&. If you don't want this, then use cleaner names\&. The same applies to directories ending \fI/\fR and paths with \fI//\fR 
+
+.SH "USING --REFRESH"
+
+
+\fI\-\-refresh\fR does not calculate a new sha1 file or bring the index up\-to\-date for mode/content changes\&. But what it \fIdoes\fR 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"
+
+
+\fI\-\-cacheinfo\fR 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:
+
+.nf
+$ git\-update\-index \-\-cacheinfo mode sha1 path
+.fi
+
+
+\fI\-\-info\-only\fR is used to register files without placing them in the object database\&. This is useful for status\-only repositories\&.
+
+
+Both \fI\-\-cacheinfo\fR and \fI\-\-info\-only\fR behave similarly: the index is updated but the object database isn't\&. \fI\-\-cacheinfo\fR is useful when the object is in the database but the file isn't available locally\&. \fI\-\-info\-only\fR 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:
+
+.nf
+$ git ls\-files \-s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz
+.fi
+
+
+you can feed the following input to \-\-index\-info:
+
+.nf
+$ git update\-index \-\-index\-info
+0 0000000000000000000000000000000000000000      frotz
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
+.fi
+
+
+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:
+
+.nf
+$ git ls\-files \-s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz
+.fi
+
+.SH "USING "ASSUME UNCHANGED" BIT"
+
+
+Many operations in git depend on your filesystem to have an efficient lstat(2) implementation, so that st_mtime information for working tree files can be cheaply checked to see if the file contents have changed from the version recorded in the index file\&. Unfortunately, some filesystems have inefficient lstat(2)\&. If your filesystem is one of them, you can set "assume unchanged" bit to paths you have not changed to cause git not to do this check\&. Note that setting this bit on a path does not mean git will check the contents of the file to see if it has changed -- it makes git to omit any checking and assume it has \fInot\fR changed\&. When you make changes to working tree files, you have to explicitly tell git about it by dropping "assume unchanged" bit, either before or after you modify them\&.
+
+
+In order to set "assume unchanged" bit, use \-\-assume\-unchanged option\&. To unset, use \-\-no\-assume\-unchanged\&.
+
+
+The command looks at core\&.ignorestat configuration variable\&. When this is true, paths updated with git\-update\-index paths... and paths updated with other git commands that update both index and working tree (e\&.g\&. git\-apply \-\-index, git\-checkout\-index \-u, and git\-read\-tree \-u) are automatically marked as "assume unchanged"\&. Note that "assume unchanged" bit is \fInot\fR set if git\-update\-index \-\-refresh finds the working tree file matches the index (use git\-update\-index \-\-really\-refresh if you want to mark them as "assume unchanged")\&.
+
+.SH "EXAMPLES"
+
+
+To update and refresh only the files already checked out:
+
+.nf
+$ git\-checkout\-index \-n \-f \-a && git\-update\-index \-\-ignore\-missing \-\-refresh
+.fi
+
+.TP
+On an inefficient filesystem with core\&.ignorestat set
+
+.nf
+$ git update\-index \-\-really\-refresh              \fB(1)\fR
+$ git update\-index \-\-no\-assume\-unchanged foo\&.c   \fB(2)\fR
+$ git diff \-\-name\-only                           \fB(3)\fR
+$ edit foo\&.c
+$ git diff \-\-name\-only                           \fB(4)\fR
+M foo\&.c
+$ git update\-index foo\&.c                         \fB(5)\fR
+$ git diff \-\-name\-only                           \fB(6)\fR
+$ edit foo\&.c
+$ git diff \-\-name\-only                           \fB(7)\fR
+$ git update\-index \-\-no\-assume\-unchanged foo\&.c   \fB(8)\fR
+$ git diff \-\-name\-only                           \fB(9)\fR
+M foo\&.c
+.fi
+.sp
+\fB1. \fRforces lstat(2) to set "assume unchanged" bits for paths that match index\&.
+.br
+\fB2. \fRmark the path to be edited\&.
+.br
+\fB3. \fRthis does lstat(2) and finds index matches the path\&.
+.br
+\fB4. \fRthis does lstat(2) and finds index does \fInot\fR match the path\&.
+.br
+\fB5. \fRregistering the new version to index sets "assume unchanged" bit\&.
+.br
+\fB6. \fRand it is assumed unchanged\&.
+.br
+\fB7. \fReven after you edit it\&.
+.br
+\fB8. \fRyou can tell about the change after the fact\&.
+.br
+\fB9. \fRnow it checks with lstat(2) and finds it has been changed\&.
+.br
+
+
+.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 \fIfalse\fR (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=\&.
+
+
+The command looks at core\&.ignorestat configuration variable\&. See \fIUsing "assume unchanged" bit\fR section above\&.
+
+.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..4ea9197
--- /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-UPDATE-REF" 1 "" "" ""
+.SH NAME
+git-update-ref \- update the object name stored in a ref safely
+.SH "SYNOPSIS"
+
+
+\fIgit\-update\-ref\fR [\-m <reason>] <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 \fIreal\fR 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 \fIand\fR 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 "LOGGING UPDATES"
+
+
+If config parameter "core\&.logAllRefUpdates" is true or the file "$GIT_DIR/logs/<ref>" exists then git\-update\-ref will append a line to the log file "$GIT_DIR/logs/<ref>" (dereferencing all symbolic refs before creating the log name) describing the change in ref value\&. Log lines are formatted as:
+
+.TP 3
+1.
+oldsha1 SP newsha1 SP committer LF
+
+Where "oldsha1" is the 40 character hexadecimal value previously stored in <ref>, "newsha1" is the 40 character hexadecimal value of <newvalue> and "committer" is the committer's name, email address and date in the standard GIT committer ident format\&.
+.LP
+
+
+Optionally with \-m:
+
+.TP 3
+1.
+oldsha1 SP newsha1 SP committer TAB message LF
+
+Where all fields are as described above and "message" is the value supplied to the \-m option\&.
+.LP
+
+
+An update will fail (without changing <ref>) if the current user is unable to create a new log file, append to the existing log file or does not have committer information available\&.
+
+.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..a6ed802
--- /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"
+
+
+\fIgit\-update\-server\-info\fR [\-\-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..6ffd9ca
--- /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"
+
+
+\fIgit\-upload\-pack\fR <directory>
+
+.SH "DESCRIPTION"
+
+
+Invoked by \fIgit\-fetch\-pack\fR, 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 \fIgit\-fetch\-pack\fR side, and the program pair is meant to be used to pull updates from a remote repository\&. For push operations, see \fIgit\-send\-pack\fR\&.
+
+.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-upload-tar.1 b/man1/git-upload-tar.1
new file mode 100755 (executable)
index 0000000..d3d3523
--- /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-TAR" 1 "" "" ""
+.SH NAME
+git-upload-tar \- Send tar archive
+.SH "SYNOPSIS"
+
+
+\fIgit\-upload\-tar\fR <directory>
+
+.SH "DESCRIPTION"
+
+
+Invoked by \fIgit\-tar\-tree \-\-remote\fR and sends a generated tar archive to the other end over the git protocol\&.
+
+
+This command is usually not invoked directly by the end user\&. The UI for the protocol is on the \fIgit\-tar\-tree\fR side, and the program pair is meant to be used to get a tar archive from a remote repository\&.
+
+.SH "OPTIONS"
+
+.TP
+<directory>
+The repository to get a tar archive from\&.
+
+.SH "AUTHOR"
+
+
+Written by Junio C Hamano <junio@kernel\&.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..a4d00ae
--- /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"
+
+
+\fIgit\-var\fR [ \-l | <variable> ]
+
+.SH "DESCRIPTION"
+
+
+Prints a git logical variable\&.
+
+.SH "OPTIONS"
+
+.TP
+\-l
+Cause the logical variables to be listed\&. In addition, all the variables of the git configuration file \&.git/config are listed as well\&. (However, the configuration variables listing functionality is deprecated in favor of git\-repo\-config \-l\&.)
+
+.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) \fBgit\-repo\-config\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..beb003e
--- /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"
+
+
+\fIgit\-verify\-pack\fR [\-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..2a5bafa
--- /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"
+
+
+\fIgit\-verify\-tag\fR <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..7ec2674
--- /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-WHATCHANGED" 1 "" "" ""
+.SH NAME
+git-whatchanged \- Show logs with difference each commit introduces
+.SH "SYNOPSIS"
+
+
+\fIgit\-whatchanged\fR <option>...
+
+.SH "DESCRIPTION"
+
+
+Shows commit logs and diff output each commit introduces\&. The command internally invokes \fIgit\-rev\-list\fR piped to \fIgit\-diff\-tree\fR, 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 \fIraw\fR, \fImedium\fR, \fIshort\fR, \fIfull\fR, and \fIoneline\fR\&.
+
+.TP
+\-m
+By default, differences for merge commits are not shown\&. With this flag, show differences to that commit from all of its parents\&.
+
+However, it is not very useful in general, although it \fIis\fR useful on a file\-by\-file basis\&.
+
+.SH "EXAMPLES"
+
+.TP
+git\-whatchanged \-p v2\&.6\&.12\&.\&. include/scsi drivers/scsi
+Show as patches the commits since version \fIv2\&.6\&.12\fR 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 \fIgitk\fR\&. The "\-\-" is necessary to avoid confusion with the \fIbranch\fR named \fIgitk\fR 
+
+.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..b99e8fd
--- /dev/null
@@ -0,0 +1,63 @@
+.\"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"
+
+
+\fIgit\-write\-tree\fR [\-\-missing\-ok] [\-\-prefix=<prefix>/]
+
+.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\&.
+
+.TP
+\-\-prefix=<prefix>/
+Writes a tree object that represents a subdirectory <prefix>\&. This can be used to write the tree object for a subproject that is in the named subdirectory\&.
+
+.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..49e4976
--- /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"
+
+
+\fIgitk\fR [ \-\-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 \fIv2\&.6\&.12\fR 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 \fIgitk\fR\&. The "\-\-" is necessary to avoid confusion with the \fIbranch\fR named \fIgitk\fR 
+
+.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..b59fa76
--- /dev/null
@@ -0,0 +1,1163 @@
+.\"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"
+
+
+\fIgit\fR [\-\-version] [\-\-exec\-path[=GIT_EXEC_PATH]] [\-p|\-\-paginate] [\-\-bare] [\-\-git\-dir=GIT_DIR] [\-\-help] COMMAND [ARGS]
+
+.SH "DESCRIPTION"
+
+
+Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high\-level operations and full access to internals\&.
+
+
+See this tutorial: \fItutorial.html\fR to get started, then see Everyday Git: \fIeveryday.html\fR for a useful minimum set of commands, and "man git\-commandname" for documentation of each command\&. CVS users may also want to read CVS migration: \fIcvs-migration.html\fR\&.
+
+
+The COMMAND is either a name of a Git command (see below) or an alias as defined in the configuration file (see \fBgit\-repo\-config\fR(1))\&.
+
+.SH "OPTIONS"
+
+.TP
+\-\-version
+Prints the git suite version that the \fIgit\fR program came from\&.
+
+.TP
+\-\-help
+Prints the synopsis and a list of the most commonly used commands\&. If a git command is named this option will bring up the man\-page for that command\&. If the option \fI\-\-all\fR or \fI\-a\fR is given then all available commands are printed\&.
+
+.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 \fIgit\fR will print the current setting and then exit\&.
+
+.TP
+\-p|\-\-paginate
+Pipe all output into \fIless\fR (or if set, $PAGER)\&.
+
+.TP
+\-\-git\-dir=<path>
+Set the path to the repository\&. This can also be controlled by setting the GIT_DIR environment variable\&.
+
+.TP
+\-\-bare
+Same as \-\-git\-dir=pwd\&.
+
+.SH "FURTHER DOCUMENTATION"
+
+
+See the references above to get started using git\&. The following is probably more detail than necessary for a first\-time user\&.
+
+
+The Discussion section below and the Core tutorial: \fIcore-tutorial.html\fR both provide introductions to the underlying git architecture\&.
+
+
+See also the howto: \fIhowto-index.html\fR documents for some useful examples\&.
+
+.SH "GIT COMMANDS"
+
+
+We divide git into high level ("porcelain") commands and low level ("plumbing") commands\&.
+
+.SH "LOW-LEVEL COMMANDS (PLUMBING)"
+
+
+Although git includes its own porcelain layer, its low\-level commands are sufficient to support development of alternative porcelains\&. Developers of such porcelains might start by reading about \fBgit\-update\-index\fR(1) and \fBgit\-read\-tree\fR(1)\&.
+
+
+We divide the low\-level commands into commands that manipulate objects (in the repository, index, and working tree), commands that interrogate and compare objects, and commands that move objects and references between repositories\&.
+
+.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\-mktree\fR(1)
+Build a tree\-object from ls\-tree formatted text\&.
+
+.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\-describe\fR(1)
+Show the most recent tag that is reachable from a commit\&.
+
+.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\-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 \fIgit\-send\-pack\fR 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 \fIgit\-fetch\-pack\fR to push what are asked for\&.
+
+.TP
+\fBgit\-upload\-tar\fR(1)
+Invoked by \fIgit\-tar\-tree \-\-remote\fR to return the tar archive the other end asked for\&.
+
+.SH "HIGH-LEVEL COMMANDS (PORCELAIN)"
+
+
+We separate the porcelain commands into the main commands and some ancillary user utilities\&.
+
+.SS "Main porcelain 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\-clean\fR(1)
+Remove untracked files from the working tree\&.
+
+.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\-rerere\fR(1)
+Reuse recorded resolution of conflicted merges\&.
+
+.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\-rm\fR(1)
+Remove files from the working tree and from the index\&.
+
+.TP
+\fBgit\-shortlog\fR(1)
+Summarizes \fIgit log\fR output\&.
+
+.TP
+\fBgit\-show\fR(1)
+Show one commit log and its diff\&.
+
+.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\&.
+
+.SS "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\-cvsserver\fR(1)
+A CVS server emulator for git\&.
+
+.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\-quiltimport\fR(1)
+Applies a quilt patchset onto the current branch\&.
+
+.TP
+\fBgit\-relink\fR(1)
+Hardlink common objects in local repositories\&.
+
+.TP
+\fBgit\-svn\fR(1)
+Bidirectional operation between a single Subversion branch and git\&.
+
+.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\-annotate\fR(1)
+Annotate file lines with commit info\&.
+
+.TP
+\fBgit\-blame\fR(1)
+Blame file lines on commits\&.
+
+.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\-fmt\-merge\-msg\fR(1)
+Produce a merge commit message\&.
+
+.TP
+\fBgit\-get\-tar\-commit\-id\fR(1)
+Extract commit ID from an archive created using git\-tar\-tree\&.
+
+.TP
+\fBgit\-imap\-send\fR(1)
+Dump a mailbox from stdin into an imap folder\&.
+
+.TP
+\fBgit\-instaweb\fR(1)
+Instantly browse your working repository in gitweb\&.
+
+.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\-merge\-tree\fR(1)
+Show three\-way merge without touching index\&.
+
+.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\-ref\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 modeled after \&.ini format familiar to some people\&. Here is an example:
+
+.nf
+#
+# 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"
+
+.fi
+
+
+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 \fIname\fR (i\&.e\&. the contents of $GIT_DIR/refs/tags/<tag>)\&.
+
+.TP
+<head>
+a valid head \fIname\fR (i\&.e\&. the contents of $GIT_DIR/refs/heads/<head>)\&.
+
+.SH "FILE/DIRECTORY STRUCTURE"
+
+
+Please see repository layout: \fIrepository-layout.html\fR document\&.
+
+
+Read hooks: \fIhooks.html\fR for more details about each hook\&.
+
+
+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 \fIall\fR 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
+\fIGIT_INDEX_FILE\fR
+This environment allows the specification of an alternate index file\&. If not specified, the default of $GIT_DIR/index is used\&.
+
+.TP
+\fIGIT_OBJECT_DIRECTORY\fR
+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
+\fIGIT_ALTERNATE_OBJECT_DIRECTORIES\fR
+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
+\fIGIT_DIR\fR
+If the \fIGIT_DIR\fR 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
+\fIGIT_AUTHOR_NAME\fR, \fIGIT_AUTHOR_EMAIL\fR, \fIGIT_AUTHOR_DATE\fR, \fIGIT_COMMITTER_NAME\fR, \fIGIT_COMMITTER_EMAIL\fR
+see \fBgit\-commit\-tree\fR(1) 
+
+.SS "git Diffs"
+
+.TP
+\fIGIT_DIFF_OPTS\fR, \fIGIT_EXTERNAL_DIFF\fR
+see the "generating patches" section in : \fBgit\-diff\-index\fR(1); \fBgit\-diff\-files\fR(1); \fBgit\-diff\-tree\fR(1) 
+
+.SS "other"
+
+.TP
+\fIGIT_TRACE\fR
+If this variable is set git will print trace: messages on stderr telling about alias expansion, built\-in command execution and external command execution\&.
+
+.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 \fIdoes\fR 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 \fIfile\fR does not match the object name for \fIfile\fR\&. (Historical note: in the dawn of the age of git the hash was the sha1 of the \fIcompressed\fR 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 \fIis\fR 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 \fIcame\fR 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 \fIcan\fR 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 \fIone\fR 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 \fInot\fR be consistent with the directory hierarchy), but it has three very important attributes:
+
+
+\fI(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)\fR
+
+
+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)
+
+
+\fI(b) it has efficient methods for finding inconsistencies between that cached state ("tree object waiting to be instantiated") and the current state\&.\fR
+
+
+\fI(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\&.\fR
+
+
+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 \fIpurely\fR 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 \fInot\fR 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 \fInot\fR 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 \fIindex\fR 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 (\fIbefore\fR the "\-a" flag or the filename) to \fIforce\fR 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\&.
+
+.nf
+
+                     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 |
+                    +\-\-\-\-\-\-\-\-\-\-\-+
+
+.fi
+
+.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 \fINOT\fR 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:
+
+.nf
+$ 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
+.fi
+
+
+Each line of the git\-ls\-files \-\-unmerged output begins with the blob mode bits, blob SHA1, \fIstage number\fR, and the filename\&. The \fIstage number\fR 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:
+
+.nf
+$ 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
+.fi
+
+
+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
+