]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-init.txt
revisions.txt: consistent use of quotes
[thirdparty/git.git] / Documentation / git-init.txt
CommitLineData
d145144c
JH
1git-init(1)
2===========
3
4NAME
5----
c3f0baac 6git-init - Create an empty git repository or reinitialize an existing one
d145144c
JH
7
8
9SYNOPSIS
10--------
53d48885 11'git init' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]] [directory]
d145144c
JH
12
13
14OPTIONS
15-------
16
17--
18
3240240f
SB
19-q::
20--quiet::
4576518d
JO
21
22Only print error and warning messages, all other output will be suppressed.
23
74d3b23f
LR
24--bare::
25
26Create a bare repository. If GIT_DIR environment is not set, it is set to the
27current working directory.
28
d145144c
JH
29--template=<template_directory>::
30
d8a8488d
SD
31Specify the directory from which templates will be used. (See the "TEMPLATE
32DIRECTORY" section below.)
d145144c 33
0adda936 34--shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
d145144c
JH
35
36Specify that the git repository is to be shared amongst several users. This
37allows users belonging to the same group to push into that
38repository. When specified, the config variable "core.sharedRepository" is
39set so that files and directories under `$GIT_DIR` are created with the
40requested permissions. When not specified, git will use permissions reported
41by umask(2).
42
43The option can have the following values, defaulting to 'group' if no value
44is given:
45
46 - 'umask' (or 'false'): Use permissions reported by umask(2). The default,
47 when `--shared` is not specified.
48
49 - 'group' (or 'true'): Make the repository group-writable, (and g+sx, since
50 the git group may be not the primary group of all users).
098082fb
JH
51 This is used to loosen the permissions of an otherwise safe umask(2) value.
52 Note that the umask still applies to the other permission bits (e.g. if
53 umask is '0022', using 'group' will not remove read privileges from other
54 (non-group) users). See '0xxx' for how to exactly specify the repository
55 permissions.
d145144c
JH
56
57 - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
58 readable by all users.
59
098082fb
JH
60 - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'.
61 '0xxx' will override users' umask(2) value (and not only loosen permissions
62 as 'group' and 'all' does). '0640' will create a repository which is
63 group-readable, but not group-writable or accessible to others. '0660' will
64 create a repo that is readable and writable to the current user and group,
65 but inaccessible to others.
06cbe855 66
02ff6250 67By default, the configuration flag receive.denyNonFastForwards is enabled
d145144c
JH
68in shared repositories, so that you cannot force a non fast-forwarding push
69into it.
70
53d48885
NS
71If you name a (possibly non-existent) directory at the end of the command
72line, the command is run inside the directory (possibly after creating it).
73
d145144c
JH
74--
75
76
77DESCRIPTION
78-----------
79This command creates an empty git repository - basically a `.git` directory
80with subdirectories for `objects`, `refs/heads`, `refs/tags`, and
81template files.
82An initial `HEAD` file that references the HEAD of the master branch
83is also created.
84
85If the `$GIT_DIR` environment variable is set then it specifies a path
86to use instead of `./.git` for the base of the repository.
87
88If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
89environment variable then the sha1 directories are created underneath -
90otherwise the default `$GIT_DIR/objects` directory is used.
91
0b444cdb
TR
92Running 'git init' in an existing repository is safe. It will not overwrite
93things that are already there. The primary reason for rerunning 'git init'
d145144c
JH
94is to pick up newly added templates.
95
0b444cdb 96Note that 'git init' is the same as 'git init-db'. The command
d145144c
JH
97was primarily meant to initialize the object database, but over
98time it has become responsible for setting up the other aspects
99of the repository, such as installing the default hooks and
100setting the configuration variables. The old name is retained
5c94f87e 101for backward compatibility reasons.
d145144c 102
d8a8488d
SD
103TEMPLATE DIRECTORY
104------------------
105
106The template directory contains files and directories that will be copied to
107the `$GIT_DIR` after it is created.
108
109The template directory used will (in order):
110
111 - The argument given with the `--template` option.
112
113 - The contents of the `$GIT_TEMPLATE_DIR` environment variable.
114
115 - The `init.templatedir` configuration variable.
116
117 - The default template directory: `/usr/share/git-core/templates`.
118
119The default template directory includes some directory structure, some
120suggested "exclude patterns", and copies of sample "hook" files.
121The suggested patterns and hook files are all modifiable and extensible.
d145144c
JH
122
123EXAMPLES
124--------
125
126Start a new git repository for an existing code base::
127+
128----------------
129$ cd /path/to/my/codebase
b1889c36
JN
130$ git init <1>
131$ git add . <2>
d145144c
JH
132----------------
133+
134<1> prepare /path/to/my/codebase/.git directory
135<2> add all existing file to the index
136
d145144c
JH
137GIT
138---
9e1f0a85 139Part of the linkgit:git[1] suite