- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 打标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补操作
- Git - Diff 操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - Checkout
- Git - 恢复
- Git - 重置
- Git - 恢复操作
- Git - Rm
- Git - 切换操作
- Git - Cherry-pick
- Git - 修订
- Git 在服务器上
- Git - 本地协议
- Git - 智能 HTTP 协议
- Git - 简单 HTTP 协议
- Git - SSH 协议
- Git - Git 协议
- Git - 在服务器上获取 Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流程
- Git - 为项目做贡献
- Git - 维护项目
Git 初始化
git init 命令用于创建一个新的 Git 仓库。在目录中运行此命令会初始化一个新的空 Git 仓库,方法是创建一个新的隐藏.git子目录。
此命令创建了.git目录,其中包含所有项目引用和对象。
项目的历史记录基于.git目录,该目录还包含重要的配置文件。
要创建新仓库,请选择git init;要克隆现有仓库,请使用git clone;不要同时选择两者。
同时使用git init和git 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 在整个仓库中计算和管理对象标识符的方式。
可使用的格式为loose和pack。
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权限,并使仓库可由组写入。
all、world、everybody : 与group类似,但允许任何用户浏览仓库。
<perm> : 通过指定以0为前缀的 3 位八进制数字的权限来覆盖umask(2)设置。
git init --shared=group
以上命令将仓库设置为在用户组之间共享。
因此,如果您是从头开始一个项目,git init会设置您的版本控制。它也可以用于现有项目以开始跟踪更改。