'\" t
.\" Title: git-init
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1
.\" Date: 06/06/2021
.\" Manual: Git Manual
.\" Source: Git 2.30.2
.\" Language: English
.\"
.TH "GIT\-INIT" "1" "06/06/2021" "Git 2\&.30\&.2" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * 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
.nf
\fIgit init\fR [\-q | \-\-quiet] [\-\-bare] [\-\-template=]
[\-\-separate\-git\-dir ] [\-\-object\-format=]
[\-b | \-\-initial\-branch=]
[\-\-shared[=]] [directory]
.fi
.sp
.SH "DESCRIPTION"
.sp
This command creates an empty Git repository \- basically a \fB\&.git\fR directory with subdirectories for \fBobjects\fR, \fBrefs/heads\fR, \fBrefs/tags\fR, and template files\&. An initial branch without any commits will be created (see the \fB\-\-initial\-branch\fR option below for its name)\&.
.sp
If the \fB$GIT_DIR\fR environment variable is set then it specifies a path to use instead of \fB\&./\&.git\fR for the base of the repository\&.
.sp
If the object storage directory is specified via the \fB$GIT_OBJECT_DIRECTORY\fR environment variable then the sha1 directories are created underneath \- otherwise the default \fB$GIT_DIR/objects\fR 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
\fBGIT_DIR\fR
environment is not set, it is set to the current working directory\&.
.RE
.PP
\-\-object\-format=
.RS 4
Specify the given object format (hash algorithm) for the repository\&. The valid values are
\fIsha1\fR
and (if enabled)
\fIsha256\fR\&.
\fIsha1\fR
is the default\&.
.sp
THIS OPTION IS EXPERIMENTAL! SHA\-256 support is experimental and still in an early stage\&. A SHA\-256 repository will in general not be able to share work with "regular" SHA\-1 repositories\&. It should be assumed that, e\&.g\&., Git internal file formats in relation to SHA\-256 repositories may change in backwards\-incompatible ways\&. Only use
\fB\-\-object\-format=sha256\fR
for testing purposes\&.
.RE
.PP
\-\-template=
.RS 4
Specify the directory from which templates will be used\&. (See the "TEMPLATE DIRECTORY" section below\&.)
.RE
.PP
\-\-separate\-git\-dir=
.RS 4
Instead of initializing the repository as a directory to either
\fB$GIT_DIR\fR
or
\fB\&./\&.git/\fR, create a text file there containing the path to the actual repository\&. This file acts as filesystem\-agnostic Git symbolic link to the repository\&.
.sp
If this is reinitialization, the repository will be moved to the specified path\&.
.RE
.PP
\-b , \-\-initial\-branch=
.RS 4
Use the specified name for the initial branch in the newly created repository\&. If not specified, fall back to the default name (currently
\fBmaster\fR, but this is subject to change in the future; the name can be customized via the
\fBinit\&.defaultBranch\fR
configuration variable)\&.
.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
\fB$GIT_DIR\fR
are created with the requested permissions\&. When not specified, Git will use permissions reported by umask(2)\&.
.sp
The option can have the following values, defaulting to
\fIgroup\fR
if no value is given:
.PP
\fIumask\fR (or \fIfalse\fR)
.RS 4
Use permissions reported by umask(2)\&. The default, when
\fB\-\-shared\fR
is not specified\&.
.RE
.PP
\fIgroup\fR (or \fItrue\fR)
.RS 4
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
.PP
\fIall\fR (or \fIworld\fR or \fIeverybody\fR)
.RS 4
Same as
\fIgroup\fR, but make the repository readable by all users\&.
.RE
.PP
\fI0xxx\fR
.RS 4
\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
.RE
.sp
By default, the configuration flag \fBreceive\&.denyNonFastForwards\fR is enabled in shared repositories, so that you cannot force a non fast\-forwarding push into it\&.
.sp
If you provide a \fIdirectory\fR, the command is run inside it\&. If this directory does not exist, it will be created\&.
.SH "TEMPLATE DIRECTORY"
.sp
Files and directories in the template directory whose name do not start with a dot will be copied to the \fB$GIT_DIR\fR after it is created\&.
.sp
The template directory will be one of the following (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
\fB\-\-template\fR
option;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the contents of the
\fB$GIT_TEMPLATE_DIR\fR
environment variable;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the
\fBinit\&.templateDir\fR
configuration variable; or
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the default template directory:
\fB/usr/share/git\-core/templates\fR\&.
.RE
.sp
The default template directory includes some directory structure, suggested "exclude patterns" (see \fBgitignore\fR(5)), and sample hook files\&.
.sp
The sample hooks are all disabled by default\&. To enable one of the sample hooks rename it by removing its \fB\&.sample\fR suffix\&.
.sp
See \fBgithooks\fR(5) for more general info on hook execution\&.
.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
$ git commit \fB(3)\fR
.fi
.if n \{\
.RE
.\}
.sp
\fB1. \fRCreate a /path/to/my/codebase/\&.git directory\&.
.br
\fB2. \fRAdd all existing files to the index\&.
.br
\fB3. \fRRecord the pristine state as the first commit in the history\&.
.br
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite