Documentation / git-init.txton commit Add configuration option for default untracked files mode (d6293d1)
   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, \--quiet::
  20
  21Only print error and warning messages, all other output will be suppressed.
  22
  23--bare::
  24
  25Create a bare repository. If GIT_DIR environment is not set, it is set to the
  26current working directory.
  27
  28--template=<template_directory>::
  29
  30Provide the directory from which templates will be used.  The default template
  31directory is `/usr/share/git-core/templates`.
  32
  33When specified, `<template_directory>` is used as the source of the template
  34files rather than the default.  The template files include some directory
  35structure, some suggested "exclude patterns", and copies of non-executing
  36"hook" files.  The suggested patterns and hook files are all modifiable and
  37extensible.
  38
  39--shared[={false|true|umask|group|all|world|everybody|0xxx}]::
  40
  41Specify that the git repository is to be shared amongst several users.  This
  42allows users belonging to the same group to push into that
  43repository.  When specified, the config variable "core.sharedRepository" is
  44set so that files and directories under `$GIT_DIR` are created with the
  45requested permissions.  When not specified, git will use permissions reported
  46by umask(2).
  47
  48The option can have the following values, defaulting to 'group' if no value
  49is given:
  50
  51 - 'umask' (or 'false'): Use permissions reported by umask(2). The default,
  52   when `--shared` is not specified.
  53
  54 - 'group' (or 'true'): Make the repository group-writable, (and g+sx, since
  55   the git group may be not the primary group of all users).
  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   Any option except 'umask' can be set using this option. '0xxx' will
  62   override users umask(2) value, and thus, users with a safe umask (0077)
  63   can use this option. '0640' will create a repository which is group-readable
  64   but not writable. '0660' is equivalent to 'group'.
  65
  66By default, the configuration flag receive.denyNonFastForwards is enabled
  67in shared repositories, so that you cannot force a non fast-forwarding push
  68into it.
  69
  70--
  71
  72
  73DESCRIPTION
  74-----------
  75This command creates an empty git repository - basically a `.git` directory
  76with subdirectories for `objects`, `refs/heads`, `refs/tags`, and
  77template files.
  78An initial `HEAD` file that references the HEAD of the master branch
  79is also created.
  80
  81If the `$GIT_DIR` environment variable is set then it specifies a path
  82to use instead of `./.git` for the base of the repository.
  83
  84If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
  85environment variable then the sha1 directories are created underneath -
  86otherwise the default `$GIT_DIR/objects` directory is used.
  87
  88Running `git-init` in an existing repository is safe. It will not overwrite
  89things that are already there. The primary reason for rerunning `git-init`
  90is to pick up newly added templates.
  91
  92Note that `git-init` is the same as `git-init-db`.  The command
  93was primarily meant to initialize the object database, but over
  94time it has become responsible for setting up the other aspects
  95of the repository, such as installing the default hooks and
  96setting the configuration variables.  The old name is retained
  97for backward compatibility reasons.
  98
  99
 100EXAMPLES
 101--------
 102
 103Start a new git repository for an existing code base::
 104+
 105----------------
 106$ cd /path/to/my/codebase
 107$ git-init      <1>
 108$ git-add .     <2>
 109----------------
 110+
 111<1> prepare /path/to/my/codebase/.git directory
 112<2> add all existing file to the index
 113
 114
 115Author
 116------
 117Written by Linus Torvalds <torvalds@osdl.org>
 118
 119Documentation
 120--------------
 121Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 122
 123GIT
 124---
 125Part of the linkgit:git[1] suite