Documentation / git-init.txton commit Merge branch 'js/objc-funchdr' (23abd3f)
   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
  58 - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
  59   readable by all users.
  60
  61 - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'
  62   Any option except 'umask' can be set using this option. '0xxx' will
  63   override users umask(2) value, and thus, users with a safe umask (0077)
  64   can use this option. '0640' will create a repository which is group-readable
  65   but not writable. '0660' is equivalent to 'group'.
  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
  71--
  72
  73
  74DESCRIPTION
  75-----------
  76This command creates an empty git repository - basically a `.git` directory
  77with subdirectories for `objects`, `refs/heads`, `refs/tags`, and
  78template files.
  79An initial `HEAD` file that references the HEAD of the master branch
  80is also created.
  81
  82If the `$GIT_DIR` environment variable is set then it specifies a path
  83to use instead of `./.git` for the base of the repository.
  84
  85If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
  86environment variable then the sha1 directories are created underneath -
  87otherwise the default `$GIT_DIR/objects` directory is used.
  88
  89Running 'git-init' in an existing repository is safe. It will not overwrite
  90things that are already there. The primary reason for rerunning 'git-init'
  91is to pick up newly added templates.
  92
  93Note that 'git-init' is the same as 'git-init-db'.  The command
  94was primarily meant to initialize the object database, but over
  95time it has become responsible for setting up the other aspects
  96of the repository, such as installing the default hooks and
  97setting the configuration variables.  The old name is retained
  98for backward compatibility reasons.
  99
 100
 101EXAMPLES
 102--------
 103
 104Start a new git repository for an existing code base::
 105+
 106----------------
 107$ cd /path/to/my/codebase
 108$ git init      <1>
 109$ git add .     <2>
 110----------------
 111+
 112<1> prepare /path/to/my/codebase/.git directory
 113<2> add all existing file to the index
 114
 115
 116Author
 117------
 118Written by Linus Torvalds <torvalds@osdl.org>
 119
 120Documentation
 121--------------
 122Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 123
 124GIT
 125---
 126Part of the linkgit:git[1] suite