git(7)
======
v0.99.6, Sep 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-index.html[git-update-index] 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-index.html[git-checkout-index]::
	Copy files from the cache to the working directory
	Previously this command was known as git-checkout-cache.

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-index.html[git-merge-index]::
	Runs a merge for files needing merging
	Previously this command was known as git-merge-cache.

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-index.html[git-update-index]::
	Modifies the index or directory cache
	Previously this command was known as git-update-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-index.html[git-diff-index]::
	Compares content and mode of blobs between the cache and repository
	Previously this command was known as git-diff-cache.

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-objects.html[git-fsck-objects]::
	Verifies the connectivity and validity of the objects in the database
	Previously this command was known as git-fsck-cache.

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-fetch.html[git-http-fetch]::
	Downloads a remote GIT repository via HTTP
	Previously this command was known as git-http-pull.

link:git-local-fetch.html[git-local-fetch]::
	Duplicates another GIT repository on a local system
	Previously this command was known as git-local-pull.

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-fetch.html[git-ssh-fetch]::
	Pulls from a remote repository over ssh connection
	Previously this command was known as git-ssh-pull.

link:git-ssh-upload.html[git-ssh-upload]::
	Helper "server-side" program used by git-ssh-fetch
	Previously this command was known as git-ssh-push.

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.html[git-add]::
	Add paths to the index file.
	Previously this command was known as git-add-script.

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

link:git-bisect.html[git-bisect]::
	Find the change that introduced a bug.
	Previously this command was known as git-bisect-script.

link:git-branch.html[git-branch]::
	Create and Show branches.
	Previously this command was known as git-branch-script.

link:git-checkout.html[git-checkout]::
	Checkout and switch to a branch.
	Previously this command was known as git-checkout-script.

link:git-cherry-pick.html[git-cherry-pick]::
	Cherry-pick the effect of an existing commit.
	Previously this command was known as git-cherry-pick-script.

link:git-clone.html[git-clone]::
	Clones a repository into a new directory.
	Previously this command was known as git-clone-script.

link:git-commit.html[git-commit]::
	Record changes to the repository.
	Previously this command was known as git-commit-script.

link:git-diff.html[git-diff]::
	Show changes between commits, commit and working tree, etc.
	Previously this command was known as git-diff-script.

link:git-fetch.html[git-fetch]::
	Download from a remote repository via various protocols.
	Previously this command was known as git-fetch-script.

link:git-format-patch.html[git-format-patch]::
	Prepare patches for e-mail submission.
	Previously this command was known as git-format-patch-script.

link:git-grep.html[git-grep]::
	Print lines matching a pattern

link:git-log.html[git-log]::
	Shows commit logs.
	Previously this command was known as git-log-script.

link:git-ls-remote.html[git-ls-remote]::
	Shows references in a remote or local repository.
	Previously this command was known as git-ls-remote-script.

link:git-merge.html[git-merge]::
	Grand unified merge driver.

link:git-octopus.html[git-octopus]::
	Merge more than two commits.
	Previously this command was known as git-octopus-script.

link:git-pull.html[git-pull]::
	Fetch from and merge with a remote repository.
	Previously this command was known as git-pull-script.

link:git-push.html[git-push]::
	Update remote refs along with associated objects.
	Previously this command was known as git-push-script.

link:git-rebase.html[git-rebase]::
	Rebase local commits to new upstream head.
	Previously this command was known as git-rebase-script.

link:git-rename.html[git-rename]::
	Rename files and directories.
	Previously this command was known as git-rename-script.

link:git-repack.html[git-repack]::
	Pack unpacked objects in a repository.
	Previously this command was known as git-repack-script.

link:git-reset.html[git-reset]::
	Reset current HEAD to the specified state.
	Previously this command was known as git-reset-script.

link:git-resolve.html[git-resolve]::
	Merge two commits.
	Previously this command was known as git-resolve-script.

link:git-revert.html[git-revert]::
	Revert an existing commit.
	Previously this command was known as git-revert-script.

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.html[git-status]::
	Shows the working tree status.
	Previously this command was known as git-status-script.

link:git-verify-tag.html[git-verify-tag]::
	Check the GPG signature of tag.
	Previously this command was known as git-verify-tag-script.

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-archimport.html[git-archimport]::
	Import an arch repository into git.
	Previously this command was known as git-archimport-script.

link:git-convert-objects.html[git-convert-objects]::
	Converts old-style GIT repository
	Previously this command was known as git-convert-cache.

link:git-cvsimport.html[git-cvsimport]::
	Salvage your data out of another SCM people love to hate.
	Previously this command was known as git-cvsimport-script.

link:git-merge-one-file.html[git-merge-one-file]::
	The standard helper program to use with "git-merge-index"
	Previously this command was known as git-merge-one-file-script.

link:git-prune.html[git-prune]::
	Prunes all unreachable objects from the object database
	Previously this command was known as git-prune-script.

link:git-relink.html[git-relink]::
	Hardlink common objects in local repositories.
	Previously this command was known as git-relink-script.

link:git-sh-setup.html[git-sh-setup]::
	Common git shell script setup code.
	Previously this command was known as git-sh-setup-script.

link:git-tag.html[git-tag]::
	An example script to create a tag object signed with GPG
	Previously this command was known as git-tag-script.


Interrogators:

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

link:git-count-objects.html[git-count-objects]::
	Count unpacked number of objects and their disk consumption.
	Previously this command was known as git-count-objects-script.

link:git-daemon.html[git-daemon]::
	A really simple server for GIT repositories.

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

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

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-parse-remote.html[git-parse-remote]::
	Routines to help parsing $GIT_DIR/remotes/
	Previously this command was known as git-parse-remote-script.

link:git-request-pull.html[git-request-pull]::
	git-request-pull.
	Previously this command was known as git-request-pull-script.

link:git-rev-parse.html[git-rev-parse]::
	Pick out and massage parameters.

link:git-send-email.html[git-send-email]::
	Send patch e-mails out of "format-patch --mbox" output.
	Previously this command was known as git-send-email-script.

link:git-stripspace.html[git-stripspace]::
	Filter out empty lines.


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

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-index.html[git-diff-index];
	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

