Documentation / git-init.txton commit Merge branch 'js/maint-no-ln-across-libexec-and-bin' (2c8f8b1)
   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