directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

名称

git-init  - 创建一个空的 Git 仓库或重新初始化一个现有仓库

概要

git init [-q | --quiet] [--bare] [--template=<template_directory>]          [--separate-git-dir <git dir>]          [--shared[=<permissions>]] [directory]

描述

此命令创建一个空的 Git 仓库-基本上是一个.git与子目录的目录objectsrefs/headsrefs/tags,和模板文件。HEAD还创建了引用主分支的 HEAD 的初始文件。

如果$GIT_DIR设置了环境变量,那么它将指定一个要使用的路径,而不是./.git存储库的基础。

如果通过$GIT_OBJECT_DIRECTORY环境变量指定了对象存储目录,则在下面创建sha1目录 - 否则使用默认$GIT_DIR/objects目录。

在现有的存储库中运行是git init安全的。它不会覆盖已经存在的东西。重新运行git init的主要原因是拾取新添加的模板(或者如果给出--separate-git-dir,则将存储库移动到另一个位置)。

选项

-q   --quiet

仅打印错误和警告消息;所有其他输出将被抑制。

--bare

创建一个裸仓库。如果GIT_DIR未设置环境,则将其设置为当前工作目录。

--template=<template_directory>

指定将使用模板的目录。(请参阅下面的“模板目录”部分。)

--separate-git-dir=<git dir>

相反,初始化存储库作为目录之一$GIT_DIR或者./.git/,创建一个包含路径的实际存储库的文本文件存在。该文件充当文件系统不可知的 Git 与存储库的符号链接。

如果这是重新初始化,存储库将被移动到指定的路径。

--shared=(false|true|umask|group|all|world|everybody|0xxx)

指定 Git 存储库将在多个用户之间共享。这允许属于同一组的用户推入该存储库。指定时,将设置配置变量“core.sharedRepository”,以便$GIT_DIR使用请求的权限创建下面的文件和目录。未指定时,Git 将使用 umask(2)报告的权限。

该选项可以具有以下值,如果group没有给定的值,则默认为:

umask (or false)

使用由 umask(2)报告的权限。--shared未指定时的默认值。

group (or true)

使存储库组可写,(和g + sx,因为 git 组可能不是所有用户的主要组)。这用于放宽其他安全的 umask(2)值的权限。请注意,umask 仍然适用于其他权限位(例如,如果 umask 是0022,使用group不会从其他(非组)用户删除读取权限)。请参阅0xxx如何准确指定存储库权限。

all (or world or everybody)

与此相同group,但使存储库可供所有用户阅读。

0xxx

0xxx是一个八进制数,每个文件都有模式0xxx0xxx将覆盖用户的 umask(2)的值(不仅是松开的权限groupall一样)。0640将创建一个群组可读的存储库,但不能对其他群组进行写入或访问。0660将创建一个对当前用户和组可读可写的回购,但其他人无法访问。

默认情况下,配置标志receive.denyNonFastForwards在共享存储库中启用,以便您不能强制进行非快速转发。

如果你提供了一个directory,那么这个命令就在里面运行。如果这个目录不存在,它将被创建。

模板目录

模板目录中名称不以点开头的文件和目录将$GIT_DIR在其创建后复制到其中。

模板目录将是以下内容之一(按顺序):

  • --template选项一起提供的论据;

  • $GIT_TEMPLATE_DIR环境变量的内容;

  • 所述init.templateDir配置变量;要么

  • 默认模板目录:/usr/share/git-core/templates

默认模板目录包含一些目录结构,建议使用“排除模式”(参见 gitignore [5])和示例钩子文件。

示例钩子默认情况下都是禁用的,要启用其中一个示例钩子,可以通过删除其.sample后缀来对其进行重命名。

有关钩子执行的更多信息,请参阅 githooks [5]。

示例

为现有的代码库启动一个新的 Git 存储库

$ cd /path/to/my/codebase
$ git init      (1)$ git add .     (2)$ git commit    (3)

1. 创建一个/path/to/my/codebase/.git目录。

2. 将所有现有文件添加到索引。

3. 将原始状态记录为历史记录中的第一个提交。

Previous article: Next article: