Merge branch 'sg/merge-options' (early part)
[git/mjg.git] / Documentation / git-init.txt
blobb17ae8485cf2d3eb4fc21acba769942a57d33e67
1 git-init(1)
2 ===========
4 NAME
5 ----
6 git-init - Create an empty git repository or reinitialize an existing one
9 SYNOPSIS
10 --------
11 'git-init' [-q | --quiet] [--template=<template_directory>] [--shared[=<permissions>]]
14 OPTIONS
15 -------
19 -q, \--quiet::
21 Only print error and warning messages, all other output will be suppressed.
23 --template=<template_directory>::
25 Provide the directory from which templates will be used.  The default template
26 directory is `/usr/share/git-core/templates`.
28 When specified, `<template_directory>` is used as the source of the template
29 files rather than the default.  The template files include some directory
30 structure, some suggested "exclude patterns", and copies of non-executing
31 "hook" files.  The suggested patterns and hook files are all modifiable and
32 extensible.
34 --shared[={false|true|umask|group|all|world|everybody|0xxx}]::
36 Specify that the git repository is to be shared amongst several users.  This
37 allows users belonging to the same group to push into that
38 repository.  When specified, the config variable "core.sharedRepository" is
39 set so that files and directories under `$GIT_DIR` are created with the
40 requested permissions.  When not specified, git will use permissions reported
41 by umask(2).
43 The option can have the following values, defaulting to 'group' if no value
44 is given:
46  - 'umask' (or 'false'): Use permissions reported by umask(2). The default,
47    when `--shared` is not specified.
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).
52  - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
53    readable by all users.
55  - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'
56    Any option except 'umask' can be set using this option. '0xxx' will
57    override users umask(2) value, and thus, users with a safe umask (0077)
58    can use this option. '0640' will create a repository which is group-readable
59    but not writable. '0660' is equivalent to 'group'.
61 By default, the configuration flag receive.denyNonFastForwards is enabled
62 in shared repositories, so that you cannot force a non fast-forwarding push
63 into it.
68 DESCRIPTION
69 -----------
70 This command creates an empty git repository - basically a `.git` directory
71 with subdirectories for `objects`, `refs/heads`, `refs/tags`, and
72 template files.
73 An initial `HEAD` file that references the HEAD of the master branch
74 is also created.
76 If the `$GIT_DIR` environment variable is set then it specifies a path
77 to use instead of `./.git` for the base of the repository.
79 If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
80 environment variable then the sha1 directories are created underneath -
81 otherwise the default `$GIT_DIR/objects` directory is used.
83 Running `git-init` in an existing repository is safe. It will not overwrite
84 things that are already there. The primary reason for rerunning `git-init`
85 is to pick up newly added templates.
87 Note that `git-init` is the same as `git-init-db`.  The command
88 was primarily meant to initialize the object database, but over
89 time it has become responsible for setting up the other aspects
90 of the repository, such as installing the default hooks and
91 setting the configuration variables.  The old name is retained
92 for backward compatibility reasons.
95 EXAMPLES
96 --------
98 Start a new git repository for an existing code base::
100 ----------------
101 $ cd /path/to/my/codebase
102 $ git-init      <1>
103 $ git-add .     <2>
104 ----------------
106 <1> prepare /path/to/my/codebase/.git directory
107 <2> add all existing file to the index
110 Author
111 ------
112 Written by Linus Torvalds <torvalds@osdl.org>
114 Documentation
115 --------------
116 Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
120 Part of the linkgit:git[7] suite