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