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 31Specify the directory from which templates will be used. (See the "TEMPLATE 32DIRECTORY" section below.) 33 34--shared[={false|true|umask|group|all|world|everybody|0xxx}]:: 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). 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. 56 57 - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository 58 readable by all users. 59 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. 66 67By default, the configuration flag receive.denyNonFastForwards is enabled 68in shared repositories, so that you cannot force a non fast-forwarding push 69into it. 70 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 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 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' 94is to pick up newly added templates. 95 96Note that 'git init' is the same as 'git init-db'. The command 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 101for backward compatibility reasons. 102 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. 122 123EXAMPLES 124-------- 125 126Start a new git repository for an existing code base:: 127+ 128---------------- 129$ cd /path/to/my/codebase 130$ git init <1> 131$ git add . <2> 132---------------- 133+ 134<1> prepare /path/to/my/codebase/.git directory 135<2> add all existing file to the index 136 137 138Author 139------ 140Written by Linus Torvalds <torvalds@osdl.org> 141 142Documentation 143-------------- 144Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 145 146GIT 147--- 148Part of the linkgit:git[1] suite