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>]] [directory] 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 77If you name a (possibly non-existent) directory at the end of the command 78line, the command is run inside the directory (possibly after creating it). 79 80-- 81 82 83DESCRIPTION 84----------- 85This command creates an empty git repository - basically a `.git` directory 86with subdirectories for `objects`, `refs/heads`, `refs/tags`, and 87template files. 88An initial `HEAD` file that references the HEAD of the master branch 89is also created. 90 91If the `$GIT_DIR` environment variable is set then it specifies a path 92to use instead of `./.git` for the base of the repository. 93 94If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY` 95environment variable then the sha1 directories are created underneath - 96otherwise the default `$GIT_DIR/objects` directory is used. 97 98Running 'git init' in an existing repository is safe. It will not overwrite 99things that are already there. The primary reason for rerunning 'git init' 100is to pick up newly added templates. 101 102Note that 'git init' is the same as 'git init-db'. The command 103was primarily meant to initialize the object database, but over 104time it has become responsible for setting up the other aspects 105of the repository, such as installing the default hooks and 106setting the configuration variables. The old name is retained 107for backward compatibility reasons. 108 109 110EXAMPLES 111-------- 112 113Start a new git repository for an existing code base:: 114+ 115---------------- 116$ cd /path/to/my/codebase 117$ git init <1> 118$ git add . <2> 119---------------- 120+ 121<1> prepare /path/to/my/codebase/.git directory 122<2> add all existing file to the index 123 124 125Author 126------ 127Written by Linus Torvalds <torvalds@osdl.org> 128 129Documentation 130-------------- 131Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 132 133GIT 134--- 135Part of the linkgit:git[1] suite