diff options
Diffstat (limited to 'Documentation/git-init.txt')
-rw-r--r-- | Documentation/git-init.txt | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt new file mode 100644 index 0000000..160dea1 --- /dev/null +++ b/Documentation/git-init.txt @@ -0,0 +1,181 @@ +git-init(1) +=========== + +NAME +---- +git-init - Create an empty Git repository or reinitialize an existing one + + +SYNOPSIS +-------- +[verse] +'git init' [-q | --quiet] [--bare] [--template=<template-directory>] + [--separate-git-dir <git-dir>] [--object-format=<format>] + [-b <branch-name> | --initial-branch=<branch-name>] + [--shared[=<permissions>]] [<directory>] + + +DESCRIPTION +----------- + +This command creates an empty Git repository - basically a `.git` +directory with subdirectories for `objects`, `refs/heads`, +`refs/tags`, and template files. An initial branch without any +commits will be created (see the `--initial-branch` option below +for its name). + +If the `$GIT_DIR` environment variable is set then it specifies a path +to use instead of `./.git` for the base of the repository. + +If the object storage directory is specified via the +`$GIT_OBJECT_DIRECTORY` environment variable then the sha1 directories +are created underneath - otherwise the default `$GIT_DIR/objects` +directory is used. + +Running 'git init' in an existing repository is safe. It will not +overwrite things that are already there. The primary reason for +rerunning 'git init' is to pick up newly added templates (or to move +the repository to another place if --separate-git-dir is given). + +OPTIONS +------- + +-q:: +--quiet:: + +Only print error and warning messages; all other output will be suppressed. + +--bare:: + +Create a bare repository. If `GIT_DIR` environment is not set, it is set to the +current working directory. + +--object-format=<format>:: + +Specify the given object format (hash algorithm) for the repository. The valid +values are 'sha1' and (if enabled) 'sha256'. 'sha1' is the default. ++ +include::object-format-disclaimer.txt[] + +--template=<template-directory>:: + +Specify the directory from which templates will be used. (See the "TEMPLATE +DIRECTORY" section below.) + +--separate-git-dir=<git-dir>:: + +Instead of initializing the repository as a directory to either `$GIT_DIR` or +`./.git/`, create a text file there containing the path to the actual +repository. This file acts as filesystem-agnostic Git symbolic link to the +repository. ++ +If this is reinitialization, the repository will be moved to the specified path. + +-b <branch-name>:: +--initial-branch=<branch-name>:: + +Use the specified name for the initial branch in the newly created +repository. If not specified, fall back to the default name (currently +`master`, but this is subject to change in the future; the name can be +customized via the `init.defaultBranch` configuration variable). + +--shared[=(false|true|umask|group|all|world|everybody|<perm>)]:: + +Specify that the Git repository is to be shared amongst several users. This +allows users belonging to the same group to push into that +repository. When specified, the config variable "core.sharedRepository" is +set so that files and directories under `$GIT_DIR` are created with the +requested permissions. When not specified, Git will use permissions reported +by umask(2). ++ +The option can have the following values, defaulting to 'group' if no value +is given: ++ +-- +'umask' (or 'false'):: + +Use permissions reported by umask(2). The default, when `--shared` is not +specified. + +'group' (or 'true'):: + +Make the repository group-writable, (and g+sx, since the git group may be not +the primary group of all users). This is used to loosen the permissions of an +otherwise safe umask(2) value. Note that the umask still applies to the other +permission bits (e.g. if umask is '0022', using 'group' will not remove read +privileges from other (non-group) users). See '0xxx' for how to exactly specify +the repository permissions. + +'all' (or 'world' or 'everybody'):: + +Same as 'group', but make the repository readable by all users. + +'<perm>':: + +'<perm>' is a 3-digit octal number prefixed with `0` and each file +will have mode '<perm>'. '<perm>' will override users' umask(2) +value (and not only loosen permissions as 'group' and 'all' +does). '0640' will create a repository which is group-readable, but +not group-writable or accessible to others. '0660' will create a repo +that is readable and writable to the current user and group, but +inaccessible to others (directories and executable files get their +`x` bit from the `r` bit for corresponding classes of users). +-- + +By default, the configuration flag `receive.denyNonFastForwards` is enabled +in shared repositories, so that you cannot force a non fast-forwarding push +into it. + +If you provide a 'directory', the command is run inside it. If this directory +does not exist, it will be created. + +TEMPLATE DIRECTORY +------------------ + +Files and directories in the template directory whose name do not start with a +dot will be copied to the `$GIT_DIR` after it is created. + +The template directory will be one of the following (in order): + + - the argument given with the `--template` option; + + - the contents of the `$GIT_TEMPLATE_DIR` environment variable; + + - the `init.templateDir` configuration variable; or + + - the default template directory: `/usr/share/git-core/templates`. + +The default template directory includes some directory structure, suggested +"exclude patterns" (see linkgit:gitignore[5]), and sample hook files. + +The sample hooks are all disabled by default. To enable one of the +sample hooks rename it by removing its `.sample` suffix. + +See linkgit:githooks[5] for more general info on hook execution. + +EXAMPLES +-------- + +Start a new Git repository for an existing code base:: ++ +---------------- +$ cd /path/to/my/codebase +$ git init <1> +$ git add . <2> +$ git commit <3> +---------------- ++ +<1> Create a /path/to/my/codebase/.git directory. +<2> Add all existing files to the index. +<3> Record the pristine state as the first commit in the history. + +CONFIGURATION +------------- + +include::includes/cmd-config-section-all.txt[] + +include::config/init.txt[] + +GIT +--- +Part of the linkgit:git[1] suite |