设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.53.0 无变更
-
2.52.0
2025-11-17
- 2.48.1 → 2.51.2 无更改
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 无更改
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 无变化
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 无更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 无更改
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 无更改
-
2.42.0
2023-08-21
- 2.38.1 → 2.41.3 无变更
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 无更改
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 无更改
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 无更改
-
2.29.0
2020-10-19
- 2.28.1 无更改
-
2.28.0
2020-07-27
- 2.27.1 无更改
-
2.27.0
2020-06-01
- 2.21.1 → 2.26.3 无变更
-
2.21.0
2019-02-24
- 2.13.7 → 2.20.5 无变更
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 无更改
-
2.9.5
2017-07-30
- 2.5.6 → 2.8.6 无更改
-
2.4.12
2017-05-05
- 2.3.10 无更改
-
2.2.3
2015-09-04
- 2.1.4 无更改
-
2.0.5
2014-12-17
概要
gitinit[-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 仓库 —— 基本上是一个包含 objects、refs/heads、refs/tags 子目录和模板文件的 .git 目录。系统将创建一个没有任何提交的初始分支(其名称请参见下文的 --initial-branch 选项)。
如果设置了 GIT_DIR 环境变量,则它指定了用于仓库根目录的路径,而不是使用 ./.git。
如果通过 GIT_OBJECT_DIRECTORY 环境变量指定了对象存储目录,则会在其下创建 sha1 目录;否则,将使用默认的 $GIT_DIR/objects 目录。
在现有仓库中运行 git init 是安全的。它不会覆盖已经存在的内容。重新运行 git init 的主要原因是获取新添加的模板(或者在给出 --separate-git-dir 的情况下将仓库移动到另一个地方)。
选项
过去,我们曾警告说 SHA-256 仓库在引入此类互操作性功能时可能需要向后不兼容的更改。今天,我们仅预期兼容性更改。此外,如果事实证明这些更改是必要的,那么可以预期今天 Git 创建的 SHA-256 仓库将在不丢失数据的情况下被未来版本的 Git 使用。
--ref-format=<格式>-
为仓库指定给定的引用存储<格式>。有效值为
-
files表示带有 packed-refs 的松散文件。这是默认值。 -
reftable表示 reftable 格式。此格式是实验性的,其内部结构可能会更改。
-
--template=<模板目录>-
指定将使用模板的目录。(参见下文的“模板目录”部分。)
--separate-git-dir=<git 目录>-
不是将仓库初始化为
$GIT_DIR或./.git/目录,而是在该处创建一个包含实际仓库路径的文本文件。该文件充当指向仓库的与文件系统无关的 Git 符号链接。如果这是重新初始化,仓库将被移动到指定的路径。
-b<分支名称>--initial-branch=<分支名称>-
在新建的仓库中为初始分支使用 <分支名称>。如果未指定,则回退到默认名称(当前为
master,但当 Git 3.0 发布时将更改为main)。可以通过init.defaultBranch配置变量自定义默认名称。 -
指定 Git 仓库将在多个用户之间共享。这允许属于同一组的用户推送到该仓库。指定时,会设置配置变量
core.sharedRepository,以便使用请求的权限创建$GIT_DIR下的文件和目录。未指定时,Git 将使用umask(2) 报告的权限。该选项可以具有以下值,如果未给出值,则默认为
groupumaskfalse-
使用
umask(2) 报告的权限。这是未指定--shared时的默认值。 grouptrue-
使仓库对组可写(并且带有
g+sx,因为 git 组可能不是所有用户的主组)。这用于放宽原本安全的umask(2) 值的权限。请注意,umask 仍然适用于其他权限位(例如,如果 umask 是0022,使用group不会删除其他(非组)用户的读取权限)。有关如何精确指定仓库权限的信息,请参见0xxx。 allworldeverybody-
与
group相同,但使仓库对所有用户可读。 - <权限>
-
<权限> 是一个以
0开头的 3 位八进制数,每个文件的模式都将是 <权限>。<权限> 将覆盖用户的umask(2) 值(而不仅仅是像group和all那样放宽权限)。0640将创建一个组可读,但组不可写且他人不可访问的仓库。0660将创建一个当前用户和组可读写,但他人不可访问的仓库(目录和可执行文件从相应用户类别的r位获取其x位)。
默认情况下,在共享仓库中启用配置标志 receive.denyNonFastForwards,因此您不能强制执行非快进式推送。
如果您提供了一个 <目录>,则该命令将在其中运行。如果此目录不存在,它将被创建。
模板目录
模板目录中名称不以点开头的文件和目录将在创建后被复制到 $GIT_DIR 中。
模板目录将是以下之一(按顺序):
-
随
--template选项给出的参数; -
$GIT_TEMPLATE_DIR环境变量的内容; -
init.templateDir配置变量;或者 -
默认模板目录:
/usr/share/git-core/templates。
默认模板目录包括一些目录结构、建议的“排除模式”(参见 gitignore[5])和示例钩子文件。
默认情况下,示例钩子都是禁用的。要启用其中一个示例钩子,请通过删除其 .sample 后缀来重命名它。
有关钩子执行的更多一般信息,请参见 githooks[5]。
配置
本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同:
init.templateDir-
指定要从中复制模板的目录。
init.defaultBranch-
允许覆盖默认分支名称,例如在初始化新仓库时。
init.defaultObjectFormat-
允许覆盖新存储库的默认对象格式。请参阅 git-init[1] 中的
--object-format=。命令行选项和GIT_DEFAULT_HASH环境变量都优先于此配置。 init.defaultRefFormat-
允许覆盖新存储库的默认 ref 存储格式。请参阅 git-init[1] 中的
--ref-format=。命令行选项和GIT_DEFAULT_REF_FORMAT环境变量都优先于此配置。