git-init
创建空的 Git 仓库或重新初始化现有仓库
概要
git init [-q | --quiet] [--bare] [--template=<template-directory>]
[--separate-git-dir <git-dir>] [--object-format=<format>]
[--ref-format=<format>]
[-b <branch-name> | --initial-branch=<branch-name>]
[--shared[=<permissions>]] [<directory>]描述
此命令创建空的 Git 仓库——基本上是一个 .git 目录,其中包含 objects、refs/heads、refs/tags 的子目录和模板文件。将创建一个没有任何提交的初始分支(有关其名称,请参阅下面的 --initial-branch 选项)。
如果设置了 GIT_DIR 环境变量,则它指定用于代替 ./.git 作为仓库基础的路径。
如果通过 GIT_OBJECT_DIRECTORY 环境变量指定了对象存储目录,则 sha1 目录在其下创建;否则使用默认的 $GIT_DIR/objects 目录。
在现有仓库中运行 git init 是安全的。它不会覆盖已存在的内容。重新运行 git init 的主要原因是获取新添加的模板(或者如果给出了 --separate-git-dir 则将仓库移动到另一个位置)。
选项
-q,--quiet- 仅打印错误和警告消息;所有其他输出将被禁止。--bare- 创建裸仓库。如果未设置GIT_DIR环境,它将设置为当前工作目录。--object-format=<format>- 为仓库指定给定的对象 <format>(哈希算法)。有效值为sha1和(如果启用)sha256。sha1是默认值。 注意:目前,SHA-256 仓库和 SHA-1 仓库之间没有互操作性。--ref-format=<format>- 为仓库指定给定的引用存储 <format>。有效值为:files:用于带有 packed-refs 的松散文件。这是默认值。reftable:用于 reftable 格式。
--template=<template-directory>- 指定将使用模板的目录。(参见下面的"模板目录"部分。)--separate-git-dir=<git-dir>- 不将仓库初始化为$GIT_DIR或./.git/的目录,而是在那里创建一个包含实际仓库路径的文本文件。此文件充当与文件系统无关的 Git 符号链接。-b <branch-name>,--initial-branch=<branch-name>- 使用 <branch-name> 作为新创建仓库中的初始分支。如果未指定,回退到默认名称(目前为master,但当 Git 3.0 发布时将更改为main)。默认名称可以通过init.defaultBranch配置变量自定义。--shared[=(false|true|umask|group|all|world|everybody|<perm>)]- 指定 Git 仓库将在多个用户之间共享。这允许属于同一组的用户推送到该仓库。指定后,设置配置变量core.sharedRepository,以便使用请求的权限创建$GIT_DIR下的文件和目录。未指定时,Git 使用umask(2) 报告的权限。 该选项可以具有以下值,如果未给出值则默认为group:umask,false:使用umask(2) 报告的权限。group,true:使仓库可由组写入(以及g+sx,因为 git 组可能不是所有用户的主要组)。all,world,everybody:与group相同,但使仓库可由所有用户读取。- <perm>:<perm> 是以
0为前缀的 3 位八进制数,每个文件将具有模式 <perm>。
如果提供 <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> 将原始状态记录为历史中的第一个提交。
配置
init.templateDir- 指定将从中复制模板的目录。init.defaultBranch- 允许覆盖默认分支名称,例如初始化新仓库时。init.defaultObjectFormat- 允许覆盖新仓库的默认对象格式。init.defaultRefFormat- 允许覆盖新仓库的默认引用存储格式。init.defaultSubmodulePathConfig- 指定git init和git clone是否应自动将extensions.submodulePathConfig设置为true的布尔值。
Git
git(1) 套件的一部分
