git-init.1 (10199B)
- '\" t
- .\" Title: git-init
- .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
- .\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
- .\" Date: 2025-03-14
- .\" Manual: Git Manual
- .\" Source: Git 2.49.0
- .\" Language: English
- .\"
- .TH "GIT\-INIT" "1" "2025-03-14" "Git 2\&.49\&.0" "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
- \fBgit\fR \fBinit\fR [\fB\-q\fR | \fB\-\-quiet\fR] [\fB\-\-bare\fR] [\fB\-\-template=\fR\fI<template\-directory>\fR]
- [\fB\-\-separate\-git\-dir\fR \fI<git\-dir>\fR] [\fB\-\-object\-format=\fR\fI<format>\fR]
- [\fB\-\-ref\-format=\fR\fI<format>\fR]
- [\fB\-b\fR \fI<branch\-name>\fR | \fB\-\-initial\-branch=\fR\fI<branch\-name>\fR]
- [\fB\-\-shared\fR[\fB=\fR\fI<permissions>\fR]] [\fI<directory>\fR]
- .fi
- .SH "DESCRIPTION"
- .sp
- This command creates an empty Git repository \- basically a \&.\fBgit\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 \fBGIT_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 \fBGIT_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 \fBgit\fR \fBinit\fR in an existing repository is safe\&. It will not overwrite things that are already there\&. The primary reason for rerunning \fBgit\fR \fBinit\fR is to pick up newly added templates (or to move the repository to another place if \fB\-\-separate\-git\-dir\fR is given)\&.
- .SH "OPTIONS"
- .PP
- \fB\-q\fR, \fB\-\-quiet\fR
- .RS 4
- Only print error and warning messages; all other output will be suppressed\&.
- .RE
- .PP
- \fB\-\-bare\fR
- .RS 4
- Create a bare repository\&. If
- \fBGIT_DIR\fR
- environment is not set, it is set to the current working directory\&.
- .RE
- .PP
- \fB\-\-object\-format=\fR\fI<format>\fR
- .RS 4
- Specify the given object
- \fI<format>\fR
- (hash algorithm) for the repository\&. The valid values are
- \fBsha1\fR
- and (if enabled)
- \fBsha256\fR\&.
- \fBsha1\fR
- is the default\&.
- .sp
- Note: At present, there is no interoperability between SHA\-256 repositories and SHA\-1 repositories\&.
- .RE
- .sp
- Historically, we warned that SHA\-256 repositories may later need backward incompatible changes when we introduce such interoperability features\&. Today, we only expect compatible changes\&. Furthermore, if such changes prove to be necessary, it can be expected that SHA\-256 repositories created with today\(cqs Git will be usable by future versions of Git without data loss\&.
- .PP
- \fB\-\-ref\-format=\fR\fI<format>\fR
- .RS 4
- Specify the given ref storage
- \fI<format>\fR
- for the repository\&. The valid values are:
- .sp
- .RS 4
- .ie n \{\
- \h'-04'\(bu\h'+03'\c
- .\}
- .el \{\
- .sp -1
- .IP \(bu 2.3
- .\}
- \fBfiles\fR
- for loose files with packed\-refs\&. This is the default\&.
- .RE
- .sp
- .RS 4
- .ie n \{\
- \h'-04'\(bu\h'+03'\c
- .\}
- .el \{\
- .sp -1
- .IP \(bu 2.3
- .\}
- \fBreftable\fR
- for the reftable format\&. This format is experimental and its internals are subject to change\&.
- .RE
- .RE
- .PP
- \fB\-\-template=\fR\fI<template\-directory>\fR
- .RS 4
- Specify the directory from which templates will be used\&. (See the "TEMPLATE DIRECTORY" section below\&.)
- .RE
- .PP
- \fB\-\-separate\-git\-dir=\fR\fI<git\-dir>\fR
- .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 a filesystem\-agnostic Git symbolic link to the repository\&.
- .sp
- If this is a reinitialization, the repository will be moved to the specified path\&.
- .RE
- .PP
- \fB\-b\fR \fI<branch\-name>\fR, \fB\-\-initial\-branch=\fR\fI<branch\-name>\fR
- .RS 4
- Use
- \fI<branch\-name>\fR
- 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
- \fB\-\-shared\fR[\fB=\fR(\fBfalse\fR|\fBtrue\fR|\fBumask\fR|\fBgroup\fR|\fBall\fR|\fBworld\fR|\fBeverybody\fR|\fI<perm>\fR)]
- .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
- \fBcore\&.sharedRepository\fR
- 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
- \fBumask\fR(2)\&.
- .sp
- The option can have the following values, defaulting to
- \fBgroup\fR
- if no value is given:
- .PP
- \fBumask\fR, \fBfalse\fR
- .RS 4
- Use permissions reported by
- \fBumask\fR(2)\&. The default, when
- \fB\-\-shared\fR
- is not specified\&.
- .RE
- .PP
- \fBgroup\fR, \fBtrue\fR
- .RS 4
- Make the repository group\-writable, (and
- \fBg+sx\fR, since the git group may not be the primary group of all users)\&. This is used to loosen the permissions of an otherwise safe
- \fBumask\fR(2) value\&. Note that the umask still applies to the other permission bits (e\&.g\&. if umask is
- \fB0022\fR, using
- \fBgroup\fR
- will not remove read privileges from other (non\-group) users)\&. See
- \fB0xxx\fR
- for how to exactly specify the repository permissions\&.
- .RE
- .PP
- \fBall\fR, \fBworld\fR, \fBeverybody\fR
- .RS 4
- Same as
- \fBgroup\fR, but make the repository readable by all users\&.
- .RE
- .PP
- \fI<perm>\fR
- .RS 4
- \fI<perm>\fR
- is a 3\-digit octal number prefixed with
- \fB0\fR
- and each file will have mode
- \fI<perm>\fR\&.
- \fI<perm>\fR
- will override users\*(Aq
- \fBumask\fR(2) value (and not only loosen permissions as
- \fBgroup\fR
- and
- \fBall\fR
- do)\&.
- \fB0640\fR
- will create a repository which is group\-readable, but not group\-writable or accessible to others\&.
- \fB0660\fR
- will create a repo that is readable and writable to the current user and group, but inaccessible to others (directories and executable files get their
- \fBx\fR
- bit from the
- \fBr\fR
- bit for corresponding classes of users)\&.
- .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 \fI<directory>\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 \&.\fBsample\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
- .\}
- .TS
- tab(:);
- r lw(\n(.lu*75u/100u).
- \fB1.\fR\h'-2n':T{
- Create a
- \fB/path/to/my/codebase/\&.git\fR
- directory\&.
- T}
- \fB2.\fR\h'-2n':T{
- Add all existing files to the index\&.
- T}
- \fB3.\fR\h'-2n':T{
- Record the pristine state as the first commit in the history\&.
- T}
- .TE
- .RE
- .SH "CONFIGURATION"
- .sp
- Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
- .PP
- \fBinit\&.templateDir\fR
- .RS 4
- Specify the directory from which templates will be copied\&.
- .RE
- .PP
- \fBinit\&.defaultBranch\fR
- .RS 4
- Allows overriding the default branch name e\&.g\&. when initializing a new repository\&.
- .RE
- .PP
- \fBinit\&.defaultObjectFormat\fR
- .RS 4
- Allows overriding the default object format for new repositories\&. See
- \fB\-\-object\-format=\fR
- in
- \fBgit-init\fR(1)\&. Both the command line option and the
- \fBGIT_DEFAULT_HASH\fR
- environment variable take precedence over this config\&.
- .RE
- .PP
- \fBinit\&.defaultRefFormat\fR
- .RS 4
- Allows overriding the default ref storage format for new repositories\&. See
- \fB\-\-ref\-format=\fR
- in
- \fBgit-init\fR(1)\&. Both the command line option and the
- \fBGIT_DEFAULT_REF_FORMAT\fR
- environment variable take precedence over this config\&.
- .RE
- .SH "GIT"
- .sp
- Part of the \fBgit\fR(1) suite