git-init.1   [plain text]


'\" t
.\"     Title: git-init
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\"      Date: 06/01/2011
.\"    Manual: Git Manual
.\"    Source: Git 1.7.5.4
.\"  Language: English
.\"
.TH "GIT\-INIT" "1" "06/01/2011" "Git 1\&.7\&.5\&.4" "Git Manual"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-init \- Create an empty git repository or reinitialize an existing one
.SH "SYNOPSIS"
.sp
\fIgit init\fR [\-q | \-\-quiet] [\-\-bare] [\-\-template=<template_directory>] [\-\-separate\-git\-dir <git dir>] [\-\-shared[=<permissions>]] [directory]
.SH "DESCRIPTION"
.sp
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\&.
.sp
If the $GIT_DIR environment variable is set then it specifies a path to use instead of \&./\&.git for the base of the repository\&.
.sp
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\&.
.sp
Running \fIgit init\fR in an existing repository is safe\&. It will not overwrite things that are already there\&. The primary reason for rerunning \fIgit init\fR is to pick up newly added templates (or to move the repository to another place if \-\-separate\-git\-dir is given)\&.
.SH "OPTIONS"
.PP
\-q, \-\-quiet
.RS 4
Only print error and warning messages, all other output will be suppressed\&.
.RE
.PP
\-\-bare
.RS 4
Create a bare repository\&. If GIT_DIR environment is not set, it is set to the current working directory\&.
.RE
.PP
\-\-template=<template_directory>
.RS 4
Specify the directory from which templates will be used\&. (See the "TEMPLATE DIRECTORY" section below\&.)
.RE
.PP
\-\-separate\-git\-dir=<git dir>
.RS 4
Instead of initializing the repository where it is supposed to be, place a filesytem\-agnostic git symbolic link there, pointing to the specified git path, and initialize a git repository at the path\&. The result is git repository can be separated from working tree\&. If this is reinitialization, the repository will be moved to the specified path\&.
.RE
.PP
\-\-shared[=(false|true|umask|group|all|world|everybody|0xxx)]
.RS 4
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)\&.
.RE
.sp
The option can have the following values, defaulting to \fIgroup\fR if no value is given:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}

\fIumask\fR
(or
\fIfalse\fR): Use permissions reported by umask(2)\&. The default, when
\-\-shared
is not specified\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}

\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)\&. This is used to loosen the permissions of an otherwise safe umask(2) value\&. Note that the umask still applies to the other permission bits (e\&.g\&. if umask is
\fI0022\fR, using
\fIgroup\fR
will not remove read privileges from other (non\-group) users)\&. See
\fI0xxx\fR
for how to exactly specify the repository permissions\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}

\fIall\fR
(or
\fIworld\fR
or
\fIeverybody\fR): Same as
\fIgroup\fR, but make the repository readable by all users\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}

\fI0xxx\fR:
\fI0xxx\fR
is an octal number and each file will have mode
\fI0xxx\fR\&.
\fI0xxx\fR
will override users\(aq umask(2) value (and not only loosen permissions as
\fIgroup\fR
and
\fIall\fR
does)\&.
\fI0640\fR
will create a repository which is group\-readable, but not group\-writable or accessible to others\&.
\fI0660\fR
will create a repo that is readable and writable to the current user and group, but inaccessible to others\&.
.RE
.sp
By default, the configuration flag receive\&.denyNonFastForwards is enabled in shared repositories, so that you cannot force a non fast\-forwarding push into it\&.
.sp
If you name a (possibly non\-existent) directory at the end of the command line, the command is run inside the directory (possibly after creating it)\&.
.SH "TEMPLATE DIRECTORY"
.sp
The template directory contains files and directories that will be copied to the $GIT_DIR after it is created\&.
.sp
The template directory used will (in order):
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The argument given with the
\-\-template
option\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The contents of the
$GIT_TEMPLATE_DIR
environment variable\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
init\&.templatedir
configuration variable\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The default template directory:
/usr/share/git\-core/templates\&.
.RE
.sp
The default template directory includes some directory structure, some suggested "exclude patterns", and copies of sample "hook" files\&. The suggested patterns and hook files are all modifiable and extensible\&.
.SH "EXAMPLES"
.PP
Start a new git repository for an existing code base
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
$ cd /path/to/my/codebase
$ git init      \fB(1)\fR
$ git add \&.     \fB(2)\fR
.fi
.if n \{\
.RE
.\}
.sp
\fB1. \fRprepare /path/to/my/codebase/\&.git directory
.br
\fB2. \fRadd all existing file to the index
.br
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite