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