git(7)
======
v0.99.5, 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!

If you are migrating from CVS, link:cvs-migration.html[cvs migration]
document may be helpful after you finish the tutorial.

After you get the general feel from the tutorial and this
overview page, you may want to take a look at the
link:howto-index.html[howto] documents.


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-apply.html[git-apply]::
	Reads a "diff -up1" or git generated patch file and
	applies it to the working tree.

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-hash-object.html[git-hash-object]::
	Computes the object ID from a file.

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

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

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

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

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

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

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

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

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


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-stages.html[git-diff-stages]::
	Compares two "merge stages" in the index file.

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

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-base.html[git-merge-base]::
	Finds as good a common ancestor as possible for a merge

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-show-index.html[git-show-index]::
	Displays contents of a pack idx file.

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-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-pack.html[git-clone-pack]::
	Clones a repository into the current repository (engine
	for ssh and local transport)

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

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-peek-remote.html[git-peek-remote]::
	Lists references on a remote repository using upload-pack protocol.

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

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

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

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

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.

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


Porcelain-ish Commands
----------------------

link:git-add-script.html[git-add-script]::
	Add paths to the index file.

link:git-applymbox.html[git-applymbox]::
	Apply patches from a mailbox.

link:git-bisect-script.html[git-bisect-script]::
	Find the change that introduced a bug.

link:git-branch-script.html[git-branch-script]::
	Create and Show branches.

link:git-cherry-pick-script.html[git-cherry-pick-script]::
	Cherry-pick the effect of an existing commit.

link:git-clone-script.html[git-clone-script]::
	Clones a repository into a new directory.

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

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

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

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

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

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

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

link:git-rebase-script.html[git-rebase-script]::
	Rebase local commits to new upstream head.

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

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

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

link:git-revert-script.html[git-revert-script]::
	Revert an existing commit.

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

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

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

link:git-verify-tag-script.html[git-verify-tag-script]::
	Check the GPG signature of tag.

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


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

link:git-applypatch.html[git-applypatch]::
	Apply one patch extracted from an e-mail.

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

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

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-relink-script.html[git-relink-script]::
	Hardlink common objects in local repositories.

link:git-sh-setup-script.html[git-sh-setup-script]::
	Common git shell script setup code.

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


Interrogators:

link:git-cherry.html[git-cherry]::
	Find commits not merged upstream.

link:git-count-objects-script.html[git-count-objects-script]::
	Count unpacked number of objects and their disk consumption.

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

link:git-mailinfo.html[git-mailinfo]::
	Extracts patch from a single e-mail message.

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

link:git-patch-id.html[git-patch-id]::
	Compute unique ID for a patch.

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

link:git-get-tar-commit-id.html[git-get-tar-commit-id]::
	Extract commit ID from an archive created using git-tar-tree.

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

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-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-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-show-rev-cache.html[git-show-rev-cache]::
	git-show-rev-cache.

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

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

Please see link:repository-layout.html[repository layout] document.

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[[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

