Skip to content

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 目录,其中包含 objectsrefs/headsrefs/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 和(如果启用)sha256sha1 是默认值。 注意:目前,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 initgit clone 是否应自动将 extensions.submodulePathConfig 设置为 true 的布尔值。

Git

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布