Git 初始化



git init 命令用于创建一个新的 Git 仓库。在目录中运行此命令会初始化一个新的空 Git 仓库,方法是创建一个新的隐藏.git子目录。

此命令创建了.git目录,其中包含所有项目引用和对象。

  • 项目的历史记录基于.git目录,该目录还包含重要的配置文件。

  • 要创建新仓库,请选择git init;要克隆现有仓库,请使用git clone;不要同时选择两者。

  • 同时使用git initgit clone可能会导致冲突和不正确的仓库设置。

当我们运行git init时,会创建一个空的 Git 仓库。

仓库中存在一个包含特定子目录的.git目录

  • objects : 包含 Git 处理的所有信息(提交、树和 Blob)。

  • refs/heads : 提供对仓库分支末端的引用。

  • refs/tags : 存储指向已添加到仓库的标签对象的指针。

  • 模板文件 : 这些也包含在.git目录中。

通过使用$GIT_DIR环境变量,可以为仓库选择不同的基本路径,而不是标准的./.git

  • 如果设置了$GIT_OBJECT_DIRECTORY,Git 会将对象存储在其中;否则,默认为$GIT_DIR/objects

  • 在已存在的仓库中执行git init是无风险的,不会替换当前文件。

  • 它通常与--separate-git-dir选项一起使用,以移动仓库或配置新模板。

语法

要使用此命令,请在终端中导航到您的项目目录并运行此命令。

  git init

初始化 Git 仓库后,您通常会继续使用诸如git add之类的命令来暂存您的文件,并使用git commit来保存您的更改。

选项

git init命令具有以下选项

-q

--quiet

  • Git 的-q--quiet选项隐藏输出中的所有附加信息,将其限制为错误和警告消息,以实现更简化的命令行界面。

  git init --quiet

  git init -q

--bare

  • 使用 Git 时,--bare选项建立一个没有工作目录的仓库,这适用于服务器设置,在这些设置中,更改会被拉取和推送,但不会直接编辑。

  • 如果未给出GIT_DIR,则仓库将在当前目录中创建。

  git init --bare sample-repo.git

--object-format=<format>

  • 在 Git 中,可以使用--object-format=<format>选项指定仓库的哈希算法(对象格式)。

  • 在哈希对象标识符方面,Git 默认使用sha1

  • 如果启用,可以选择其他哈希算法sha256

  • 此选项会影响 Git 在整个仓库中计算和管理对象标识符的方式。

  • 可使用的格式为loosepack

    loose是默认格式,其中对象作为单独的文件存储在.git/objects目录中。

    pack是将对象存储为打包格式,这在存储方面更有效率。

  git init --object-format=pack

--ref-format=<format>

  • 在 Git 中,--ref-format=<format>选项定义仓库引用的(refs)存储格式。

  • 默认格式为files,其中 refs 作为松散的文件与 packed-refs 一起存储。

  • 另一个选项是reftable,它表示一种称为reftable的实验性格式。

    随着 Git 的发展和改进,reftable格式可能会看到内部修改。

  git init --ref-format=loose

--template=<template-directory>

  • 在 Git 中,--template=<template-directory>选项指定初始化仓库时将从中获取模板的目录。

  git init --template=/path/to/template sample-repo

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

  • Git 允许在不创建.git目录的情况下初始化仓库,方法是使用--separate-git-dir=<git-dir>选项。

  • 相反,它会生成一个指向给定位置(<git-dir>)的真实仓库的文本文件。

  • 此文本文件充当符号链接,以支持跨多个文件系统执行仓库操作。

  git init --separate-git-dir=/path/to/git-dir /path/to/working-dir

在上面的示例中,/path/to/git-dir是将创建 .git 目录的位置,而您的实际项目文件将位于/path/to/working-dir

--shared[=(false|true|umask|group|all|world|everybody|<perm>)]

  • Git 通过指定仓库应在多个用户之间共享来允许组成员推送更改,方法是使用--shared选项。

  • 如果未提供值,则它会应用umask(2),或者根据指定的值设置$GIT_DIR下文件和目录的权限。

  • 选项包括

    • umask : 当未给出权限时,它使用umask(2)作为默认值。

    • group : 修改umask(2)值,设置g+sx权限,并使仓库可由组写入。

    • allworldeverybody :group类似,但允许任何用户浏览仓库。

    • <perm> : 通过指定以0为前缀的 3 位八进制数字的权限来覆盖umask(2)设置。

  git init --shared=group

以上命令将仓库设置为在用户组之间共享。

因此,如果您是从头开始一个项目,git init会设置您的版本控制。它也可以用于现有项目以开始跟踪更改。

广告