]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-init.txt
init docs: correct a punctuation typo
[thirdparty/git.git] / Documentation / git-init.txt
CommitLineData
d145144c
JH
1git-init(1)
2===========
3
4NAME
5----
2de9b711 6git-init - Create an empty Git repository or reinitialize an existing one
d145144c
JH
7
8
9SYNOPSIS
10--------
7791a1d9 11[verse]
b57fb80a 12'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
09ffc706 13 [--separate-git-dir <git dir>]
b57fb80a 14 [--shared[=<permissions>]] [directory]
d145144c
JH
15
16
9d379f4f
NTND
17DESCRIPTION
18-----------
19
2de9b711 20This command creates an empty Git repository - basically a `.git`
9d379f4f
NTND
21directory with subdirectories for `objects`, `refs/heads`,
22`refs/tags`, and template files. An initial `HEAD` file that
23references the HEAD of the master branch is also created.
24
25If the `$GIT_DIR` environment variable is set then it specifies a path
26to use instead of `./.git` for the base of the repository.
27
28If the object storage directory is specified via the
29`$GIT_OBJECT_DIRECTORY` environment variable then the sha1 directories
30are created underneath - otherwise the default `$GIT_DIR/objects`
31directory is used.
32
33Running 'git init' in an existing repository is safe. It will not
34overwrite things that are already there. The primary reason for
b57fb80a
NTND
35rerunning 'git init' is to pick up newly added templates (or to move
36the repository to another place if --separate-git-dir is given).
9d379f4f 37
d145144c
JH
38OPTIONS
39-------
40
41--
42
3240240f
SB
43-q::
44--quiet::
4576518d 45
6e1ccacb 46Only print error and warning messages; all other output will be suppressed.
4576518d 47
74d3b23f
LR
48--bare::
49
47d81b5c 50Create a bare repository. If `GIT_DIR` environment is not set, it is set to the
74d3b23f
LR
51current working directory.
52
d145144c
JH
53--template=<template_directory>::
54
d8a8488d
SD
55Specify the directory from which templates will be used. (See the "TEMPLATE
56DIRECTORY" section below.)
d145144c 57
b57fb80a
NTND
58--separate-git-dir=<git dir>::
59
c165d1f5
LA
60Instead of initializing the repository as a directory to either `$GIT_DIR` or
61`./.git/`, create a text file there containing the path to the actual
62repository. This file acts as filesystem-agnostic Git symbolic link to the
63repository.
64+
65If this is reinitialization, the repository will be moved to the specified path.
b57fb80a 66
0adda936 67--shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
d145144c 68
2de9b711 69Specify that the Git repository is to be shared amongst several users. This
d145144c
JH
70allows users belonging to the same group to push into that
71repository. When specified, the config variable "core.sharedRepository" is
72set so that files and directories under `$GIT_DIR` are created with the
2de9b711 73requested permissions. When not specified, Git will use permissions reported
d145144c 74by umask(2).
ddeab3ae 75+
d145144c
JH
76The option can have the following values, defaulting to 'group' if no value
77is given:
ddeab3ae
LA
78+
79--
80'umask' (or 'false')::
81
82Use permissions reported by umask(2). The default, when `--shared` is not
83specified.
84
85'group' (or 'true')::
86
87Make the repository group-writable, (and g+sx, since the git group may be not
88the primary group of all users). This is used to loosen the permissions of an
89otherwise safe umask(2) value. Note that the umask still applies to the other
90permission bits (e.g. if umask is '0022', using 'group' will not remove read
91privileges from other (non-group) users). See '0xxx' for how to exactly specify
92the repository permissions.
d145144c 93
ddeab3ae
LA
94'all' (or 'world' or 'everybody')::
95
96Same as 'group', but make the repository readable by all users.
97
98'0xxx'::
99
100'0xxx' is an octal number and each file will have mode '0xxx'. '0xxx' will
101override users' umask(2) value (and not only loosen permissions as 'group' and
102'all' does). '0640' will create a repository which is group-readable, but not
103group-writable or accessible to others. '0660' will create a repo that is
104readable and writable to the current user and group, but inaccessible to others.
105--
06cbe855 106
6e1ccacb 107By default, the configuration flag `receive.denyNonFastForwards` is enabled
d145144c
JH
108in shared repositories, so that you cannot force a non fast-forwarding push
109into it.
110
4dde849a
LA
111If you provide a 'directory', the command is run inside it. If this directory
112does not exist, it will be created.
53d48885 113
d145144c
JH
114--
115
d8a8488d
SD
116TEMPLATE DIRECTORY
117------------------
118
133f0a29
GP
119Files and directories in the template directory whose name do not start with a
120dot will be copied to the `$GIT_DIR` after it is created.
d8a8488d 121
86d387af 122The template directory will be one of the following (in order):
d8a8488d 123
86d387af 124 - the argument given with the `--template` option;
d8a8488d 125
86d387af 126 - the contents of the `$GIT_TEMPLATE_DIR` environment variable;
d8a8488d 127
da0005b8 128 - the `init.templateDir` configuration variable; or
d8a8488d 129
86d387af 130 - the default template directory: `/usr/share/git-core/templates`.
d8a8488d 131
8994fbf3 132The default template directory includes some directory structure, suggested
49fa52fd
ÆAB
133"exclude patterns" (see linkgit:gitignore[5]), and sample hook files.
134
86fb1c4e 135The sample hooks are all disabled by default. To enable one of the
49fa52fd
ÆAB
136sample hooks rename it by removing its `.sample` suffix.
137
138See linkgit:githooks[5] for more general info on hook execution.
d145144c
JH
139
140EXAMPLES
141--------
142
2de9b711 143Start a new Git repository for an existing code base::
d145144c
JH
144+
145----------------
146$ cd /path/to/my/codebase
b1889c36
JN
147$ git init <1>
148$ git add . <2>
64de2e10 149$ git commit <3>
d145144c
JH
150----------------
151+
6e1ccacb
LA
152<1> Create a /path/to/my/codebase/.git directory.
153<2> Add all existing files to the index.
64de2e10 154<3> Record the pristine state as the first commit in the history.
d145144c 155
d145144c
JH
156GIT
157---
9e1f0a85 158Part of the linkgit:git[1] suite