Documentation / git-init.txton commit Merge branch 'maint' (b43688a)
   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