git(7)
======
v0.99.4, Aug 2005

NAME
----
git - the stupid content tracker


SYNOPSIS
--------
'git-<command>' <args>

DESCRIPTION
-----------

This is reference information for the core git commands.

Before reading this cover to cover, you may want to take a look
at the link:tutorial.html[tutorial] document.

The Discussion section below contains much useful definition and
clarification info - read that first.  And of the commands, I suggest
reading link:git-update-cache.html[git-update-cache] and
link:git-read-tree.html[git-read-tree] first - I wish I had!

David Greaves <david@dgreaves.com>
08/05/05

Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 to
reflect recent changes.

Commands Overview
-----------------
The git commands can helpfully be split into those that manipulate
the repository, the cache and the working fileset, those that
interrogate and compare them, and those that moves objects and
references between repositories.

In addition, git itself comes with a spartan set of porcelain
commands.  They are usable but are not meant to compete with real
Porcelains.

There are also some ancillary programs that can be viewed as useful
aids for using the core commands but which are unlikely to be used by
SCMs layered over git.

Manipulation commands
~~~~~~~~~~~~~~~~~~~~~
link:git-checkout-cache.html[git-checkout-cache]::
	Copy files from the cache to the working directory

link:git-commit-tree.html[git-commit-tree]::
	Creates a new commit object

link:git-init-db.html[git-init-db]::
	Creates an empty git object database

link:git-merge-base.html[git-merge-base]::
	Finds as good a common ancestor as possible for a merge

link:git-mktag.html[git-mktag]::
	Creates a tag object

link:git-read-tree.html[git-read-tree]::
	Reads tree information into the directory cache

link:git-update-cache.html[git-update-cache]::
	Modifies the index or directory cache

link:git-hash-object.html[git-hash-object]::
	Computes the object ID from a file.

link:git-write-tree.html[git-write-tree]::
	Creates a tree from the current cache

link:git-pack-objects.html[git-pack-objects]::
	Creates a packed archive of objects.

link:git-unpack-objects.html[git-unpack-objects]::
	Unpacks objects out of a packed archive.

link:git-prune-packed.html[git-prune-packed]::
	Remove extra objects that are already in pack files.

link:git-apply.html[git-apply]::
	Reads a "diff -up1" or git generated patch file and
	applies it to the working tree.


Interrogation commands
~~~~~~~~~~~~~~~~~~~~~~
link:git-cat-file.html[git-cat-file]::
	Provide content or type information for repository objects

link:git-diff-cache.html[git-diff-cache]::
	Compares content and mode of blobs between the cache and repository

link:git-diff-files.html[git-diff-files]::
	Compares files in the working tree and the cache

link:git-diff-tree.html[git-diff-tree]::
	Compares the content and mode of blobs found via two tree objects

link:git-diff-stages.html[git-diff-stages]::
	Compares two "merge stages" in the index file.

link:git-export.html[git-export]::
	Exports each commit and a diff against each of its parents

link:git-fsck-cache.html[git-fsck-cache]::
	Verifies the connectivity and validity of the objects in the database

link:git-ls-files.html[git-ls-files]::
	Information about files in the cache/working directory

link:git-ls-tree.html[git-ls-tree]::
	Displays a tree object in human readable form

link:git-merge-cache.html[git-merge-cache]::
	Runs a merge for files needing merging

link:git-rev-list.html[git-rev-list]::
	Lists commit objects in reverse chronological order

link:git-rev-tree.html[git-rev-tree]::
	Provides the revision tree for one or more commits

link:git-tar-tree.html[git-tar-tree]::
	Creates a tar archive of the files in the named tree

link:git-unpack-file.html[git-unpack-file]::
	Creates a temporary file with a blob's contents

link:git-var.html[git-var]::
	Displays a git logical variable

link:git-show-index.html[git-show-index]::
	Displays contents of a pack idx file.

link:git-verify-pack.html[git-verify-pack]::
	Validates packed GIT archive files

The interrogate commands may create files - and you can force them to
touch the working file set - but in general they don't


Synching repositories
~~~~~~~~~~~~~~~~~~~~~

link:git-clone-script.html[git-clone-script]::
	Clones a repository into the current repository (user interface)

link:git-clone-pack.html[git-clone-pack]::
	Clones a repository into the current repository (engine
	for ssh and local transport)

link:git-http-pull.html[git-http-pull]::
	Downloads a remote GIT repository via HTTP

link:git-local-pull.html[git-local-pull]::
	Duplicates another GIT repository on a local system

link:git-ssh-pull.html[git-ssh-pull]::
	Pulls from a remote repository over ssh connection

link:git-send-pack.html[git-send-pack]::
	Pushes to a remote repository, intelligently.

link:git-receive-pack.html[git-receive-pack]::
	Invoked by 'git-send-pack' to receive what is pushed to it.

link:git-clone-pack.html[git-clone-pack]::
	Clones from a remote repository.

link:git-fetch-pack.html[git-fetch-pack]::
	Updates from a remote repository.

link:git-peek-remote.html[git-peek-remote]::
	Lists references on a remote repository using upload-pack protocol.

link:git-upload-pack.html[git-upload-pack]::
	Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
	what are asked for.

link:git-update-server-info.html[git-update-server-info]::
	Updates auxiliary information on a dumb server to help
	clients discover references and packs on it.


Porcelain-ish Commands
----------------------
link:git-whatchanged.html[git-whatchanged]::
	Shows commit logs and differences they introduce.

link:git-log-script.html[git-log-script]::
	Shows commit logs.

link:git-shortlog.html[git-shortlog]::
	Summarizes 'git log' output.

link:git-status-script.html[git-status-script]::
	Shows the working tree status.

link:git-fetch-script.html[git-fetch-script]::
	Download from a remote repository via various protocols.

link:git-pull-script.html[git-pull-script]::
	Fetch from and merge with a remote repository.

link:git-resolve-script.html[git-resolve-script]::
	Merge two commits.

link:git-octopus-script.html[git-octopus-script]::
	Merge more than two commits.

link:git-push-script.html[git-push-script]::
	Update remote refs along with associated objects.

link:git-commit-script.html[git-commit-script]::
	Record changes to the repository.

link:git-show-branch.html[git-show-branch]::
	Show branches and their commits.

link:git-repack-script.html[git-repack-script]::
	Pack unpacked objects in a repository.

link:git-rename-script.html[git-rename]::
	Rename files and directories.

link:git-ls-remote-script.html[git-ls-remote-script]::
	Shows references in a remote or local repository.


Ancillary Commands
------------------
Manipulators:

link:git-apply-patch-script.html[git-apply-patch-script]::
	Sample script to apply the diffs from git-diff-*

link:git-convert-cache.html[git-convert-cache]::
	Converts old-style GIT repository

link:git-merge-one-file-script.html[git-merge-one-file-script]::
	The standard helper program to use with "git-merge-cache"

link:git-prune-script.html[git-prune-script]::
	Prunes all unreachable objects from the object database

link:git-tag-script.html[git-tag-script]::
	An example script to create a tag object signed with GPG

link:git-cvsimport-script.html[git-cvsimport-script]::
	Salvage your data out of another SCM people love to hate.


Interrogators:

link:git-diff-helper.html[git-diff-helper]::
	Generates patch format output for git-diff-*

link:git-ssh-push.html[git-ssh-push]::
	Helper "server-side" program used by git-ssh-pull

link:git-send-email-script.html[git-send-email]::
	Send patch e-mails out of "format-patch --mbox" output.


Commands not yet documented
---------------------------

link:git-applymbox.html[git-applymbox]::
	git-applymbox.

link:git-applypatch.html[git-applypatch]::
	git-applypatch.

link:git-mailinfo.html[git-mailinfo]::
	git-mailinfo.

link:git-mailsplit.html[git-mailsplit]::
	git-mailsplit.

link:git-add-script.html[git-add-script]::
	git-add-script.

link:git-bisect-script.html[git-bisect-script]::
	git-bisect-script.

link:git-branch-script.html[git-branch-script]::
	git-branch-script.

link:git-build-rev-cache.html[git-build-rev-cache]::
	git-build-rev-cache.

link:git-checkout-script.html[git-checkout-script]::
	git-checkout-script.

link:git-cherry.html[git-cherry]::
	git-cherry.

link:git-clone-dumb-http.html[git-clone-dumb-http]::
	git-clone-dumb-http.

link:git-count-objects-script.html[git-count-objects-script]::
	git-count-objects-script.

link:git-daemon.html[git-daemon]::
	git-daemon.

link:git-diff-script.html[git-diff-script]::
	git-diff-script.

link:git-format-patch-script.html[git-format-patch-script]::
	git-format-patch-script.

link:git-get-tar-commit-id.html[git-get-tar-commit-id]::
	git-get-tar-commit-id.

link:git-patch-id.html[git-patch-id]::
	git-patch-id.

link:git-rebase-script.html[git-rebase-script]::
	git-rebase-script.

link:git-relink-script.html[git-relink-script]::
	git-relink-script.

link:git-request-pull-script.html[git-request-pull-script]::
	git-request-pull-script.

link:git-reset-script.html[git-reset-script]::
	git-reset-script.

link:git-rev-parse.html[git-rev-parse]::
	git-rev-parse.

link:git-revert-script.html[git-revert-script]::
	git-revert-script.

link:git-sh-setup-script.html[git-sh-setup-script]::
	git-sh-setup-script.

link:git-show-rev-cache.html[git-show-rev-cache]::
	git-show-rev-cache.

link:git-stripspace.html[git-stripspace]::
	git-stripspace.

link:git-verify-tag-script.html[git-verify-tag-script]::
	git-verify-tag-script.

link:gitk.html[gitk]::
	gitk.


Identifier Terminology
----------------------
<object>::
	Indicates the sha1 identifier for any type of object

<blob>::
	Indicates a blob object sha1 identifier

<tree>::
	Indicates a tree object sha1 identifier

<commit>::
	Indicates a commit object sha1 identifier

<tree-ish>::
	Indicates a tree, commit or tag object sha1 identifier.  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>.

<type>::
	Indicates that an object type is required.
	Currently one of: blob/tree/commit/tag

<file>::
	Indicates a filename - always relative to the root of
	the tree structure GIT_INDEX_FILE describes.

Symbolic Identifiers
--------------------
Any git command accepting any <object> can also use the following
symbolic notation:

HEAD::
	indicates the head of the repository (ie the contents of
	`$GIT_DIR/HEAD`)
<tag>::
	a valid tag 'name'+
	(ie the contents of `$GIT_DIR/refs/tags/<tag>`)
<head>::
	a valid head 'name'+
	(ie the contents of `$GIT_DIR/refs/heads/<head>`)
<snap>::
	a valid snapshot 'name'+
	(ie the contents of `$GIT_DIR/refs/snap/<snap>`)


File/Directory Structure
------------------------
The git-core manipulates the following areas in the directory:

 .git/	       The base (overridden with $GIT_DIR)
   objects/    The object base (overridden with $GIT_OBJECT_DIRECTORY)
     ??/       'First 2 chars of object' directories.
     pack/     Packed archives.

   refs/       Directories containing symbolic names for objects
	       (each file contains the hex SHA1 + newline)
     heads/    Commits which are heads of various sorts
     tags/     Tags, by the tag name (or some local renaming of it)
     */        Any other subdirectory of refs/ can be used to store
	       files similar to what are under refs/heads/.
   HEAD        Symlink to refs/heads/<current-branch-name>

Higher level SCMs may provide and manage additional information in the
GIT_DIR.

Terminology
-----------
Please see link:glossary.html[glossary] document.


Environment Variables
---------------------
Various git commands use the following environment variables:

The git Repository
~~~~~~~~~~~~~~~~~~
These environment variables apply to 'all' core git commands. Nb: it
is worth noting that they may be used/overridden by SCMS sitting above
git so take care if using Cogito etc

'GIT_INDEX_FILE'::
	This environment allows the specification of an alternate
	cache/index file. If not specified, the default of
	`$GIT_DIR/index` is used.

'GIT_OBJECT_DIRECTORY'::
	If the object storage directory is specified via this
	environment variable then the sha1 directories are created
	underneath - otherwise the default `$GIT_DIR/objects`
	directory is used.

'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
	Due to the immutable nature of git objects, old objects can be
	archived into shared, read-only directories. This variable
	specifies a ":" separated list of git object directories which
	can be used to search for git objects. New objects will not be
	written to these directories.

'GIT_DIR'::
	If the 'GIT_DIR' environment variable is set then it specifies
	a path to use instead of `./.git` for the base of the
	repository.

git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL'::
'GIT_AUTHOR_DATE'::
'GIT_COMMITTER_NAME'::
'GIT_COMMITTER_EMAIL'::
	see link:git-commit-tree.html[git-commit-tree]

git Diffs
~~~~~~~~~
'GIT_DIFF_OPTS'::
'GIT_EXTERNAL_DIFF'::
	see the "generating patches" section in :
	link:git-diff-cache.html[git-diff-cache];
	link:git-diff-files.html[git-diff-files];
	link:git-diff-tree.html[git-diff-tree]

Discussion
----------
include::../README[]

Author
------
Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>.

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the link:git.html[git] suite

