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