简体中文 ▾ 主题 ▾ 最新版本 ▾ Git 最后更新于 2.50.0

名称

git - 笨拙的内容跟踪器

概要

git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
    [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch]
    [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]
    [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>]
    <command> [<args>]

描述

Git 是一个快速、可扩展、分布式版本控制系统,具有异常丰富的命令集,提供高级操作和对内部的完全访问。

请参阅 gittutorial[7] 开始使用,然后参阅 giteveryday[7] 了解一套有用的基本命令。Git 用户手册 提供了更深入的介绍。

掌握基本概念后,您可以回到本页了解 Git 提供的命令。您可以通过“git help command”了解更多关于单个 Git 命令的信息。gitcli[7] 手册页概述了命令行命令语法。

最新 Git 文档的格式化超链接副本可在 https://git.github.io/htmldocs/git.htmlhttps://git-scm.cn/docs 查看。

选项

-v
--version

打印 *git* 程序所属的 Git 套件版本。

此选项在内部转换为 git version ...,并接受与 git-version[1] 命令相同的选项。如果同时给出 --help,它将优先于 --version

-h
--help

打印概要和最常用命令列表。如果给出选项 --all-a,则打印所有可用命令。如果指定了 Git 命令,此选项将显示该命令的手册页。

还有其他选项可用于控制手册页的显示方式。有关更多信息,请参阅 git-help[1],因为 git --help ... 在内部转换为 git help ...

-C <路径>

运行,如同 Git 是在 *<路径>* 而非当前工作目录中启动的。当给出多个 -C 选项时,每个后续的非绝对 -C <路径> 都相对于前一个 -C <路径> 进行解释。如果 *<路径>* 存在但为空,例如 -C "",则当前工作目录保持不变。

此选项会影响那些期望路径名(如 --git-dir--work-tree)的选项,因为它们对路径名的解释将相对于由 -C 选项导致的工作目录。例如,以下调用是等效的

git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status
-c <名称>=<值>

向命令传递一个配置参数。给定的值将覆盖配置文件中的值。<名称> 预期与 *git config* 列出的格式相同(子键用点分隔)。

请注意,在 git -c foo.bar ... 中省略 = 是允许的,它将 foo.bar 设置为布尔真值(就像配置文件中的 [foo]bar 一样)。如果包含等号但值为空(例如 git -c foo.bar= ...),则将 foo.bar 设置为空字符串,git config --type=bool 会将其转换为 false

--config-env=<名称>=<环境变量>

-c <名称>=<值> 类似,为配置变量 *<名称>* 赋予一个值,其中 <环境变量> 是用于检索值的环境变量的名称。与 -c 不同,没有直接将值设置为空字符串的快捷方式,而是环境变量本身必须设置为空字符串。如果 *<环境变量>* 在环境中不存在,则会出错。*<环境变量>* 不能包含等号,以避免与包含等号的 *<名称>* 混淆。

这对于您想向 Git 传递临时配置选项,但在其他进程可能读取您的命令行(例如 /proc/self/cmdline)但不能读取您的环境(例如 /proc/self/environ)的操作系统上执行此操作的情况很有用。此行为在 Linux 上是默认的,但在您的系统上可能不是。

请注意,这可能会增加 `http.extraHeader` 等变量的安全性,其中敏感信息是值的一部分,但不会增加例如 `url.`*<base>*`.insteadOf` 等变量的安全性,其中敏感信息可以是键的一部分。

--exec-path[=<路径>]

您的核心 Git 程序安装的路径。这也可以通过设置 GIT_EXEC_PATH 环境变量来控制。如果未提供路径,*git* 将打印当前设置然后退出。

--html-path

打印 Git HTML 文档安装路径(不带斜杠),然后退出。

--man-path

打印此版本 Git 的 man 手册页的 manpath(参见 man(1)),然后退出。

--info-path

打印此版本 Git 的 Info 文档文件安装路径,然后退出。

-p
--paginate

如果标准输出是终端,则将所有输出通过管道传输到 *less*(如果已设置,则为 $PAGER)。这会覆盖 pager.<cmd> 配置选项(参见下面的“配置机制”部分)。

-P
--no-pager

不要将 Git 输出通过管道传输到分页器。

--git-dir=<路径>

设置仓库(“.git”目录)的路径。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是绝对路径或相对于当前工作目录的相对路径。

使用此选项(或 GIT_DIR 环境变量)指定 “.git” 目录的位置会关闭仓库发现功能(该功能会尝试查找包含 “.git” 子目录的目录,这是发现仓库和工作树顶层的方式),并告诉 Git 您处于工作树的顶层。如果您不在工作树的顶层目录,您应该使用 --work-tree=<路径> 选项(或 GIT_WORK_TREE 环境变量)告诉 Git 工作树的顶层位置。

如果您只想将 Git 视为在 <路径> 中启动,请使用 git -C <路径>

--work-tree=<路径>

设置工作树的路径。它可以是绝对路径或相对于当前工作目录的路径。这也可以通过设置 GIT_WORK_TREE 环境变量和 core.worktree 配置变量来控制(有关更详细的讨论,请参阅 git-config[1] 中的 core.worktree)。

--namespace=<路径>

设置 Git 命名空间。有关更多详细信息,请参阅 gitnamespaces[7]。等同于设置 GIT_NAMESPACE 环境变量。

--bare

将仓库视为裸仓库。如果未设置 GIT_DIR 环境变量,则将其设置为当前工作目录。

--no-replace-objects

不使用替换引用来替换 Git 对象。这等同于将 GIT_NO_REPLACE_OBJECTS 环境变量导出为任何值。有关更多信息,请参阅 git-replace[1]

--no-lazy-fetch

不按需从 promisor 远程获取缺失对象。与 git cat-file -e <对象> 一起使用很有用,以查看对象是否本地可用。这等同于将 GIT_NO_LAZY_FETCH 环境变量设置为 1

--no-optional-locks

不执行需要锁的可选操作。这等同于将 GIT_OPTIONAL_LOCKS 设置为 0

--no-advice

禁用所有建议提示的打印。

--literal-pathspecs

字面处理路径规范(即,没有通配符,没有路径规范魔法)。这等同于将 GIT_LITERAL_PATHSPECS 环境变量设置为 1

--glob-pathspecs

为所有路径规范添加“glob”魔术。这等同于将 GIT_GLOB_PATHSPECS 环境变量设置为 1。可以通过路径规范魔术“:(literal)”禁用单个路径规范上的 globbing。

--noglob-pathspecs

为所有路径规范添加“literal”魔术。这等同于将 GIT_NOGLOB_PATHSPECS 环境变量设置为 1。可以通过路径规范魔术“:(glob)”启用单个路径规范上的 globbing。

--icase-pathspecs

为所有路径规范添加“icase”魔术。这等同于将 GIT_ICASE_PATHSPECS 环境变量设置为 1

--list-cmds=<组>[,<组>…​]

按组列出命令。这是一个内部/实验性选项,未来可能会更改或移除。支持的组有:builtins(内置命令),parseopt(使用 parse-options 的内置命令),main(libexec 目录中的所有命令),others($PATH 中所有带有 git- 前缀的其他命令),list-<category>(参见 command-list.txt 中的类别),nohelpers(排除辅助命令),alias 和 config(从配置变量 completion.commands 中检索命令列表)。

--attr-source=<类树对象>

从 <类树对象> 读取 gitattributes,而不是从工作树。参见 gitattributes[5]。这等同于设置 GIT_ATTR_SOURCE 环境变量。

Git 命令

我们将 Git 分为高级(“porcelain”)命令和低级(“plumbing”)命令。

高级命令 (porcelain)

我们将 porcelain 命令分为主要命令和一些辅助用户工具。

主要 porcelain 命令

git-add[1]

将文件内容添加到索引

git-am[1]

从邮箱应用一系列补丁

git-archive[1]

从指定树创建文件归档

git-backfill[1]

在部分克隆中下载缺失对象

git-bisect[1]

使用二分查找定位引入 Bug 的提交

git-branch[1]

列出、创建或删除分支

git-bundle[1]

通过归档移动对象和引用

git-checkout[1]

切换分支或恢复工作树文件

git-cherry-pick[1]

应用现有提交引入的更改

git-citool[1]

git-commit 的图形化替代方案

git-clean[1]

从工作树中移除未跟踪文件

git-clone[1]

将仓库克隆到新目录

git-commit[1]

记录对仓库的更改

git-describe[1]

根据可用引用为对象提供一个人类可读的名称

git-diff[1]

显示提交之间、提交与工作树等之间的更改

git-fetch[1]

从另一个仓库下载对象和引用

git-format-patch[1]

准备补丁以进行电子邮件提交

git-gc[1]

清理不必要的文件并优化本地仓库

git-grep[1]

打印匹配模式的行

git-gui[1]

Git 的便携式图形界面

git-init[1]

创建一个空的 Git 仓库或重新初始化一个现有仓库

git-log[1]

显示提交日志

git-maintenance[1]

运行任务以优化 Git 仓库数据

git-merge[1]

合并两个或多个开发历史

git-mv[1]

移动或重命名文件、目录或符号链接

git-notes[1]

添加或检查对象注释

git-pull[1]

从另一个仓库或本地分支获取并集成

git-push[1]

更新远程引用以及关联对象

git-range-diff[1]

比较两个提交范围(例如,分支的两个版本)

git-rebase[1]

在另一个基本提示之上重新应用提交

git-reset[1]

将当前 HEAD 重置到指定状态

git-restore[1]

恢复工作树文件

git-revert[1]

撤销一些现有提交

git-rm[1]

从工作树和索引中移除文件

git-shortlog[1]

总结 *git log* 输出

git-show[1]

显示各种类型的对象

git-sparse-checkout[1]

将工作树精简为跟踪文件的一个子集

git-stash[1]

暂存脏工作目录中的更改

git-status[1]

显示工作树状态

git-submodule[1]

初始化、更新或检查子模块

git-switch[1]

切换分支

git-tag[1]

创建、列出、删除或验证使用 GPG 签名的标签对象

git-worktree[1]

管理多个工作树

gitk[1]

Git 仓库浏览器

scalar[1]

用于管理大型 Git 仓库的工具

辅助命令

操作命令

git-config[1]

获取并设置仓库或全局选项

git-fast-export[1]

Git 数据导出器

git-fast-import[1]

快速 Git 数据导入器的后端

git-filter-branch[1]

重写分支

git-mergetool[1]

运行合并冲突解决工具以解决合并冲突

git-pack-refs[1]

打包 HEAD 和标签以实现高效仓库访问

git-prune[1]

从对象数据库中修剪所有不可达对象

git-reflog[1]

管理引用日志信息

git-refs[1]

对引用的低级访问

git-remote[1]

管理跟踪仓库集合

git-repack[1]

打包仓库中未打包的对象

git-replace[1]

创建、列出、删除用于替换对象的引用

查询命令

git-annotate[1]

用提交信息注释文件行

git-blame[1]

显示文件每行最后修改的版本和作者

git-bugreport[1]

收集信息供用户提交 Bug 报告

git-count-objects[1]

计算未打包对象的数量及其磁盘占用

git-diagnose[1]

生成诊断信息的 ZIP 归档

git-difftool[1]

使用常用 diff 工具显示更改

git-fsck[1]

验证数据库中对象的连接性和有效性

git-help[1]

显示 Git 帮助信息

git-instaweb[1]

在 gitweb 中即时浏览您的工作仓库

git-merge-tree[1]

执行合并而不触及索引或工作树

git-rerere[1]

重用已记录的冲突合并解决方案

git-show-branch[1]

显示分支及其提交

git-verify-commit[1]

检查提交的 GPG 签名

git-verify-tag[1]

检查标签的 GPG 签名

git-version[1]

显示 Git 版本信息

git-whatchanged[1]

显示包含每个提交引入的差异的日志

gitweb[1]

Git Web 界面(Git 仓库的 Web 前端)

与其他交互

这些命令用于与外部 SCM 交互,以及通过电子邮件补丁与其他人员交互。

git-archimport[1]

将 GNU Arch 仓库导入 Git

git-cvsexportcommit[1]

将单个提交导出到 CVS 检出

git-cvsimport[1]

从人们痛恨的另一个 SCM 中挽救您的数据

git-cvsserver[1]

Git 的 CVS 服务器模拟器

git-imap-send[1]

将一组补丁从标准输入发送到 IMAP 文件夹

git-p4[1]

从 Perforce 仓库导入并提交到 Perforce 仓库

git-quiltimport[1]

将 quilt 补丁集应用到当前分支

git-request-pull[1]

生成待处理更改的摘要

git-send-email[1]

将一组补丁作为电子邮件发送

git-svn[1]

Subversion 仓库与 Git 之间的双向操作

重置、恢复和撤销

有三个名称相似的命令:git resetgit restoregit revert

  • git-revert[1] 是关于创建一个新提交来撤销其他提交所做的更改。

  • git-restore[1] 是关于从索引或另一个提交中恢复工作树中的文件。此命令不会更新您的分支。该命令也可以用于从另一个提交中恢复索引中的文件。

  • git-reset[1] 是关于更新您的分支,移动分支尖端以添加或移除分支中的提交。此操作会更改提交历史。

    git reset 也可以用于恢复索引,与 git restore 功能重叠。

低级命令 (plumbing)

尽管 Git 包含其自己的 porcelain 层,但其低级命令足以支持开发替代的 porcelain。此类 porcelain 的开发者可以从阅读 git-update-index[1]git-read-tree[1] 开始。

这些低级命令的接口(输入、输出、选项集和语义)旨在比 Porcelain 级命令稳定得多,因为这些命令主要用于脚本化使用。而 Porcelain 命令的接口可能会更改,以改善最终用户体验。

以下描述将低级命令分为操作对象(在仓库、索引和工作树中)的命令、查询和比较对象的命令,以及在仓库之间移动对象和引用的命令。

操作命令

git-apply[1]

将补丁应用于文件和/或索引

git-checkout-index[1]

将文件从索引复制到工作树

git-commit-graph[1]

写入并验证 Git 提交图文件

git-commit-tree[1]

创建新的提交对象

git-hash-object[1]

计算对象 ID 并可选择从文件创建对象

git-index-pack[1]

为现有打包归档构建包索引文件

git-merge-file[1]

运行三方文件合并

git-merge-index[1]

为需要合并的文件运行合并

git-mktag[1]

创建带有额外验证的标签对象

git-mktree[1]

从 ls-tree 格式化文本构建树对象

git-multi-pack-index[1]

写入并验证多包索引

git-pack-objects[1]

创建对象的打包归档

git-prune-packed[1]

移除已存在于打包文件中的多余对象

git-read-tree[1]

将树信息读入索引

git-replay[1]

实验性:在新基准上重放提交,也适用于裸仓库

git-symbolic-ref[1]

读取、修改和删除符号引用

git-unpack-objects[1]

从打包归档中解包对象

git-update-index[1]

在工作树中注册文件内容到索引

git-update-ref[1]

安全地更新存储在引用中的对象名称

git-write-tree[1]

从当前索引创建树对象

查询命令

git-cat-file[1]

提供仓库对象的内容或详细信息

git-cherry[1]

查找尚未应用到上游的提交

git-diff-files[1]

比较工作树和索引中的文件

git-diff-index[1]

比较树与工作树或索引

git-diff-pairs[1]

比较提供的 blob 对的内容和模式

git-diff-tree[1]

比较通过两个树对象找到的 blob 的内容和模式

git-for-each-ref[1]

输出每个引用的信息

git-for-each-repo[1]

对仓库列表运行 Git 命令

git-get-tar-commit-id[1]

从使用 git-archive 创建的归档中提取提交 ID

git-ls-files[1]

显示索引和工作树中文件的信息

git-ls-remote[1]

列出远程仓库中的引用

git-ls-tree[1]

列出树对象的内容

git-merge-base[1]

为合并查找尽可能好的共同祖先

git-name-rev[1]

为给定修订版本查找符号名称

git-pack-redundant[1]

查找冗余的打包文件

git-rev-list[1]

按倒序时间顺序列出提交对象

git-rev-parse[1]

挑选和调整参数

git-show-index[1]

显示打包归档索引

git-show-ref[1]

列出本地仓库中的引用

git-unpack-file[1]

创建一个包含 blob 内容的临时文件

git-var[1]

显示 Git 逻辑变量

git-verify-pack[1]

验证打包的 Git 归档文件

通常,查询命令不触及工作树中的文件。

同步仓库

git-daemon[1]

一个非常简单的 Git 仓库服务器

git-fetch-pack[1]

从另一个仓库接收缺失对象

git-http-backend[1]

Git over HTTP 的服务器端实现

git-send-pack[1]

通过 Git 协议将对象推送到另一个仓库

git-update-server-info[1]

更新辅助信息文件以帮助不智能的服务器

以下是上述命令使用的辅助命令;最终用户通常不直接使用它们。

git-http-fetch[1]

通过 HTTP 从远程 Git 仓库下载

git-http-push[1]

通过 HTTP/DAV 将对象推送到另一个仓库

git-receive-pack[1]

接收推送到仓库的内容

git-shell[1]

Git 专用 SSH 访问的受限登录 Shell

git-upload-archive[1]

将归档发送回 git-archive

git-upload-pack[1]

将打包对象发送回 git-fetch-pack

内部辅助命令

这些是其他命令使用的内部辅助命令;最终用户通常不直接使用它们。

git-check-attr[1]

显示 gitattributes 信息

git-check-ignore[1]

调试 gitignore / 排除文件

git-check-mailmap[1]

显示联系人的规范名称和电子邮件地址

git-check-ref-format[1]

确保引用名称格式正确

git-column[1]

以列形式显示数据

git-credential[1]

检索并存储用户凭据

git-credential-cache[1]

在内存中临时存储密码的辅助工具

git-credential-store[1]

在磁盘上存储凭据的辅助工具

git-fmt-merge-msg[1]

生成合并提交消息

git-hook[1]

运行 Git 钩子

git-interpret-trailers[1]

在提交消息中添加或解析结构化信息

git-mailinfo[1]

从单个电子邮件消息中提取补丁和作者信息

git-mailsplit[1]

简单的 UNIX mbox 分割程序

git-merge-one-file[1]

与 git-merge-index 一起使用的标准辅助程序

git-patch-id[1]

计算补丁的唯一 ID

git-sh-i18n[1]

Git 用于 shell 脚本的国际化设置代码

git-sh-setup[1]

常用 Git shell 脚本设置代码

git-stripspace[1]

移除不必要的空白

指南

以下文档页面是关于 Git 概念的指南。

gitcore-tutorial[7]

面向开发者的 Git 核心教程

gitcredentials[7]

向 Git 提供用户名和密码

gitcvs-migration[7]

面向 CVS 用户的 Git

gitdiffcore[7]

调整 diff 输出

giteveryday[7]

日常 Git 的一组有用的基本命令

gitfaq[7]

关于使用 Git 的常见问题

gitglossary[7]

Git 词汇表

gitnamespaces[7]

Git 命名空间

gitremote-helpers[7]

与远程仓库交互的辅助程序

gitsubmodules[7]

在另一个仓库内挂载一个仓库

gittutorial[7]

Git 教程简介

gittutorial-2[7]

Git 教程简介:第二部分

gitworkflows[7]

Git 推荐工作流概述

仓库、命令和文件接口

本文档讨论用户预期直接交互的仓库和命令接口。有关标准的更多详细信息,请参见 --user-formatsgit-help[1] 中。

gitattributes[5]

定义每个路径的属性

gitcli[7]

Git 命令行界面和约定

githooks[5]

Git 使用的钩子

gitignore[5]

指定要忽略的故意未跟踪文件

gitmailmap[5]

映射作者/提交者姓名和/或电子邮件地址

gitmodules[5]

定义子模块属性

gitrepository-layout[5]

Git 仓库布局

gitrevisions[7]

指定 Git 的修订版本和范围

文件格式、协议和其他开发者接口

本文档讨论文件格式、网络协议和其他 Git 开发者接口。请参阅 --developer-interfacesgit-help[1] 中。

gitformat-bundle[5]

bundle 文件格式

gitformat-chunk[5]

基于分块的文件格式

gitformat-commit-graph[5]

Git 提交图格式

gitformat-index[5]

Git 索引格式

gitformat-pack[5]

Git pack 格式

gitformat-signature[5]

Git 加密签名格式

gitprotocol-capabilities[5]

协议 v0 和 v1 功能

gitprotocol-common[5]

各种协议的共同点

gitprotocol-http[5]

基于 HTTP 的 Git 协议

gitprotocol-pack[5]

pack 如何通过网络传输

gitprotocol-v2[5]

Git 线传输协议,版本 2

配置机制

Git 使用简单的文本格式来存储每个仓库和每个用户的自定义设置。此类配置文件可能如下所示

#
# A '#' or ';' character indicates a comment.
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; user identity
[user]
	name = "Junio C Hamano"
	email = "gitster@pobox.com"

各种命令从配置文件中读取并相应地调整其操作。有关配置机制的列表和更多详细信息,请参见 git-config[1]

标识符术语

<对象>

表示任何类型对象的对象名称。

<Blob>

表示一个 Blob 对象名称。

<树>

表示一个树对象名称。

<提交>

表示一个提交对象名称。

<类树对象>

表示一个树、提交或标签对象名称。接受 <类树对象> 参数的命令最终想要操作一个 <树> 对象,但会自动解引用指向 <树> 的 <提交> 和 <标签> 对象。

<类提交对象>

表示一个提交或标签对象名称。接受 <类提交对象> 参数的命令最终想要操作一个 <提交> 对象,但会自动解引用指向 <提交> 的 <标签> 对象。

<类型>

表示需要一个对象类型。当前可以是:blobtreecommittag 之一。

<文件>

表示一个文件名 - 几乎总是相对于 GIT_INDEX_FILE 所描述的树结构根目录。

符号标识符

任何接受任何 <对象> 的 Git 命令也可以使用以下符号表示法

HEAD

指示当前分支的 HEAD。

<标签>

一个有效的标签 *名称*(即 refs/tags/<标签> 引用)。

<头>

一个有效的 head *名称*(即 refs/heads/<头> 引用)。

有关拼写对象名称的更完整列表,请参阅 gitrevisions[7] 中的“指定修订版本”部分。

文件/目录结构

请参阅 gitrepository-layout[5] 文档。

阅读 githooks[5] 以获取有关每个钩子的更多详细信息。

更高级别的 SCM 可能会在 $GIT_DIR 中提供和管理额外信息。

术语

请参阅 gitglossary[7]

环境变量

各种 Git 命令会关注环境变量并改变其行为。标记为“布尔值”的环境变量的取值方式与布尔值配置变量相同,即,“true”、“yes”、“on”和正数被视为“是”,而“false”、“no”、“off”和“0”被视为“否”。

以下是变量

系统

HOME

指定用户主目录的路径。在 Windows 上,如果未设置,Git 将把进程环境变量设置为:如果 $HOMEDRIVE$HOMEPATH 都存在,则为 $HOMEDRIVE$HOMEPATH;否则,如果 $USERPROFILE 存在,则为 $USERPROFILE

Git 仓库

这些环境变量适用于 *所有* 核心 Git 命令。注意:值得注意的是,它们可能会被位于 Git 之上的 SCM 使用/覆盖,因此如果使用外部前端,请务必小心。

GIT_INDEX_FILE

此环境变量指定一个备用索引文件。如果未指定,则使用默认的 $GIT_DIR/index

GIT_INDEX_VERSION

此环境变量指定写入索引文件时使用的索引版本。它不会影响现有索引文件。默认使用索引文件版本 2 或 3。有关更多信息,请参阅 git-update-index[1]

GIT_OBJECT_DIRECTORY

如果通过此环境变量指定对象存储目录,则在其下创建 sha1 目录 - 否则使用默认的 $GIT_DIR/objects 目录。

GIT_ALTERNATE_OBJECT_DIRECTORIES

由于 Git 对象的不可变性,旧对象可以归档到共享的只读目录中。此变量指定一个以“:”分隔(在 Windows 上以“;”分隔)的 Git 对象目录列表,这些目录可用于搜索 Git 对象。新对象不会写入这些目录。

" (双引号) 开头的条目将被解释为 C 风格的引用路径,去除前导和尾随的双引号并遵循反斜杠转义。例如,值 "path-with-\"-and-:-in-it":vanilla-path 包含两个路径:path-with-"-and-:-in-itvanilla-path

GIT_DIR

如果设置了 GIT_DIR 环境变量,则它指定一个路径作为仓库的基础,而不是默认的 .git--git-dir 命令行选项也设置此值。

GIT_WORK_TREE

设置工作树根目录的路径。这也可以通过 --work-tree 命令行选项和 core.worktree 配置变量来控制。

GIT_NAMESPACE

设置 Git 命名空间;有关详细信息,请参阅 gitnamespaces[7]--namespace 命令行选项也设置此值。

GIT_CEILING_DIRECTORIES

这应该是一个冒号分隔的绝对路径列表。如果设置,它是一个目录列表,Git 在查找仓库目录时,不应向上切换目录进入这些目录(这对于排除加载缓慢的网络目录很有用)。它不会排除当前工作目录或通过命令行或环境变量设置的 GIT_DIR。通常,Git 必须读取此列表中的条目并解析可能存在的任何符号链接,以便将它们与当前目录进行比较。但是,如果此访问速度也很慢,您可以向列表中添加一个空条目,以告诉 Git 后续条目不是符号链接,并且不需要解析;例如,GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink

GIT_DISCOVERY_ACROSS_FILESYSTEM

当在没有“.git”仓库目录的目录中运行时,Git 会尝试在父目录中查找此类目录以找到工作树的顶层,但默认情况下它不会跨越文件系统边界。可以将此布尔环境变量设置为 true,以告诉 Git 不要在文件系统边界处停止。与 GIT_CEILING_DIRECTORIES 类似,这不会影响通过 GIT_DIR 或命令行设置的显式仓库目录。

GIT_COMMON_DIR

如果此变量设置为路径,则通常位于 $GIT_DIR 中的非工作树文件将从此路径获取。工作树特定的文件,例如 HEAD 或索引,仍从 $GIT_DIR 获取。有关详细信息,请参阅 gitrepository-layout[5]git-worktree[1]。此变量的优先级低于其他路径变量,例如 GIT_INDEX_FILE、GIT_OBJECT_DIRECTORY…​

GIT_DEFAULT_HASH

如果设置了此变量,则新仓库的默认哈希算法将设置为此值。克隆时会忽略此值,并且始终使用远程仓库的设置。默认值为“sha1”。请参阅 --object-formatgit-init[1] 中。

GIT_DEFAULT_REF_FORMAT

如果设置了此变量,则新仓库的默认引用后端格式将设置为此值。默认值为“files”。请参阅 --ref-formatgit-init[1] 中。

Git 提交

GIT_AUTHOR_NAME

创建提交或标签对象时,或写入引用日志时,在作者身份中使用的可读名称。它会覆盖 user.nameauthor.name 配置设置。

GIT_AUTHOR_EMAIL

创建提交或标签对象时,或写入引用日志时,在作者身份中使用的电子邮件地址。它会覆盖 user.emailauthor.email 配置设置。

GIT_AUTHOR_DATE

创建提交或标签对象时,或写入引用日志时,在作者身份中使用的日期。有关有效格式,请参阅 git-commit[1]

GIT_COMMITTER_NAME

创建提交或标签对象时,或写入引用日志时,在提交者身份中使用的可读名称。它会覆盖 user.namecommitter.name 配置设置。

GIT_COMMITTER_EMAIL

创建提交或标签对象时,或写入引用日志时,在作者身份中使用的电子邮件地址。它会覆盖 user.emailcommitter.email 配置设置。

GIT_COMMITTER_DATE

创建提交或标签对象时,或写入引用日志时,在提交者身份中使用的日期。有关有效格式,请参阅 git-commit[1]

EMAIL

如果没有设置其他相关的环境变量或配置,则在作者和提交者身份中使用的电子邮件地址。

Git 差异

GIT_DIFF_OPTS

唯一有效的设置是 "--unified=??" 或 "-u??",用于设置创建统一差异时显示的上下文行数。此设置优先于在 Git diff 命令行上传递的任何 "-U" 或 "--unified" 选项值。

GIT_EXTERNAL_DIFF

当设置了环境变量 GIT_EXTERNAL_DIFF 时,Git 会调用该变量指定的程序来生成差异,并且不使用其内置的差异机制。对于已添加、已删除或已修改的路径,GIT_EXTERNAL_DIFF 会带 7 个参数被调用

path old-file old-hex old-mode new-file new-hex new-mode

其中

<old|new>-file

GIT_EXTERNAL_DIFF 可以用来读取 <old|new> 内容的文件,

<old|new>-hex

是 40 位十六进制的 SHA-1 哈希值,

<old|new>-mode

是文件模式的八进制表示。

文件参数可以指向用户的工作文件(例如 "git-diff-files" 中的 new-file)、/dev/null(例如添加新文件时的 old-file),或者临时文件(例如索引中的 old-file)。GIT_EXTERNAL_DIFF 无需担心取消链接临时文件——它会在 GIT_EXTERNAL_DIFF 退出时被删除。

对于未合并的路径,GIT_EXTERNAL_DIFF 会带 1 个参数 <path> 被调用。

对于 GIT_EXTERNAL_DIFF 每次调用的每个路径,都会设置两个环境变量:GIT_DIFF_PATH_COUNTERGIT_DIFF_PATH_TOTAL

GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE

如果此布尔环境变量设置为 true,则 GIT_EXTERNAL_DIFF 命令在认为输入文件相同时应返回退出代码 0,在认为它们不同时应返回 1,就像 diff(1) 一样。如果设置为 false(这是默认值),则该命令无论文件是否相同都应返回退出代码 0。任何其他退出代码都会导致 Git 报告致命错误。

GIT_DIFF_PATH_COUNTER

一个基于 1 的计数器,每个路径递增 1。

GIT_DIFF_PATH_TOTAL

路径总数。

其他

GIT_MERGE_VERBOSITY

一个数字,控制递归合并策略显示的输出量。覆盖 merge.verbosity。参见 git-merge[1]

GIT_PAGER

此环境变量会覆盖 $PAGER。如果它设置为一个空字符串或值 "cat",Git 将不会启动分页器。另请参见 git-config[1] 中的 core.pager 选项。

GIT_PROGRESS_DELAY

一个数字,控制在显示可选进度指示器之前延迟的秒数。默认为 2。

GIT_EDITOR

此环境变量会覆盖 $EDITOR$VISUAL。在交互模式下,当需要启动编辑器时,几个 Git 命令会使用它。另请参见 git-var[1] 以及 git-config[1] 中的 core.editor 选项。

GIT_SEQUENCE_EDITOR

在编辑交互式 rebase 的待办列表时,此环境变量会覆盖配置的 Git 编辑器。另请参见 git-rebase[1] 以及 git-config[1] 中的 sequence.editor 选项。

GIT_SSH
GIT_SSH_COMMAND

如果设置了这些环境变量中的任何一个,那么当 git fetchgit push 需要连接到远程系统时,它们将使用指定的命令而不是 ssh。传递给已配置命令的命令行参数由 ssh 变体决定。有关详细信息,请参阅 git-config[1] 中的 ssh.variant 选项。

$GIT_SSH_COMMAND 优先于 $GIT_SSH,并且由 shell 解释,这允许包含额外的参数。$GIT_SSH 则必须仅仅是程序的路径(如果需要额外的参数,可以是一个包装 shell 脚本)。

通常,通过您的个人 .ssh/config 文件配置任何所需选项会更容易。有关更多详细信息,请查阅您的 ssh 文档。

GIT_SSH_VARIANT

如果设置了此环境变量,它会覆盖 Git 自动检测 GIT_SSH/GIT_SSH_COMMAND/core.sshCommand 是指 OpenSSH、plink 还是 tortoiseplink 的行为。此变量会覆盖用于相同目的的配置设置 ssh.variant

GIT_SSL_NO_VERIFY

设置并导出此环境变量为任何值,都会告诉 Git 在通过 HTTPS 进行抓取或推送时不要验证 SSL 证书。

GIT_ATTR_SOURCE

设置 gitattributes 将从中读取的 treeish。

GIT_ASKPASS

如果设置了此环境变量,则需要获取密码或口令(例如用于 HTTP 或 IMAP 认证)的 Git 命令将调用此程序,并以合适的提示作为命令行参数,然后从其标准输出读取密码。另请参见 git-config[1] 中的 core.askPass 选项。

GIT_TERMINAL_PROMPT

如果此布尔环境变量设置为 false,git 将不会在终端上进行提示(例如,在请求 HTTP 认证时)。

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

从指定的文件而不是全局或系统级配置文件中读取配置。如果设置了 GIT_CONFIG_SYSTEM,则在构建时定义的系统配置文件(通常是 /etc/gitconfig)将不会被读取。同样,如果设置了 GIT_CONFIG_GLOBAL,则 $HOME/.gitconfig$XDG_CONFIG_HOME/git/config 都不会被读取。可以设置为 /dev/null 以跳过读取相应级别的配置文件。

GIT_CONFIG_NOSYSTEM

是否跳过从系统范围的 $(prefix)/etc/gitconfig 文件中读取设置。此布尔环境变量可以与 $HOME$XDG_CONFIG_HOME 一起使用,为挑剔的脚本创建可预测的环境,或者您可以将其设置为 true,以在等待有足够权限的人修复有问题的 /etc/gitconfig 文件时暂时避免使用它。

GIT_FLUSH

如果此布尔环境变量设置为 true,则诸如 git blame(增量模式)、git rev-listgit loggit check-attrgit check-ignore 等命令将在每个记录被刷新后强制刷新输出流。如果此变量设置为 false,则这些命令的输出将使用完全缓冲的 I/O 进行。如果未设置此环境变量,Git 将根据 stdout 是否似乎重定向到文件来选择缓冲或面向记录的刷新。

GIT_TRACE

启用一般跟踪消息,例如别名扩展、内置命令执行和外部命令执行。

如果此变量设置为 "1"、"2" 或 "true"(不区分大小写),跟踪消息将打印到 stderr。

如果此变量设置为大于 2 且小于 10(严格)的整数值,则 Git 会将此值解释为已打开的文件描述符,并尝试将跟踪消息写入此文件描述符。

另外,如果此变量设置为绝对路径(以 / 字符开头),Git 会将其解释为文件路径,并尝试将跟踪消息附加到其中。

取消设置此变量,或将其设置为空、"0" 或 "false"(不区分大小写)会禁用跟踪消息。

GIT_TRACE_FSMONITOR

为文件系统监视器扩展启用跟踪消息。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_PACK_ACCESS

为所有访问包的操作启用跟踪消息。对于每次访问,都会记录包文件名和包中的偏移量。这可能有助于排查一些与包相关的性能问题。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_PACKET

为进出给定程序的所有数据包启用跟踪消息。这有助于调试对象协商或其他协议问题。以 "PACK" 开头的数据包会关闭跟踪(但请参见下面的 GIT_TRACE_PACKFILE)。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_PACKFILE

启用对给定程序发送或接收的 packfile 的跟踪。与其他跟踪输出不同,此跟踪是逐字的:没有头,也没有对二进制数据进行引用。您几乎肯定希望将其直接输出到文件(例如,GIT_TRACE_PACKFILE=/tmp/my.pack),而不是在终端上显示或与其他跟踪输出混合。

请注意,目前这仅适用于克隆和抓取的客户端。

GIT_TRACE_PERFORMANCE

启用性能相关的跟踪消息,例如每个 Git 命令的总执行时间。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_REFS

为对引用数据库的操作启用跟踪消息。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_SETUP

Git 完成设置阶段后,启用打印 .git、工作树和当前工作目录的跟踪消息。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_SHALLOW

启用有助于调试浅层仓库抓取/克隆的跟踪消息。有关可用的跟踪输出选项,请参阅 GIT_TRACE

GIT_TRACE_CURL

启用 curl 对 Git 传输协议的所有传入和传出数据(包括描述性信息)的完整跟踪转储。这类似于在命令行上执行 curl --trace-ascii。有关可用的跟踪输出选项,请参参阅 GIT_TRACE

GIT_TRACE_CURL_NO_DATA

当启用 curl 跟踪时(参见上面的 GIT_TRACE_CURL),不要转储数据(即,只转储信息行和头)。

GIT_TRACE2

启用来自 "trace2" 库的更详细的跟踪消息。GIT_TRACE2 的输出是一种简单的基于文本的格式,便于人类阅读。

如果此变量设置为 "1"、"2" 或 "true"(不区分大小写),跟踪消息将打印到 stderr。

如果此变量设置为大于 2 且小于 10(严格)的整数值,则 Git 会将此值解释为已打开的文件描述符,并尝试将跟踪消息写入此文件描述符。

另外,如果此变量设置为绝对路径(以 / 字符开头),Git 会将其解释为文件路径,并尝试将跟踪消息附加到其中。如果路径已存在且是目录,则跟踪消息将写入该目录中的文件(每个进程一个),文件名根据 SID 的最后一个组成部分和一个可选计数器命名(以避免文件名冲突)。

此外,如果此变量设置为 af_unix:[<socket-type>:]<absolute-pathname>,Git 将尝试将该路径打开为 Unix 域套接字。套接字类型可以是 streamdgram

取消设置此变量,或将其设置为空、"0" 或 "false"(不区分大小写)会禁用跟踪消息。

有关完整详细信息,请参阅 Trace2 文档

GIT_TRACE2_EVENT

此设置写入一种基于 JSON 的格式,适合机器解释。有关可用的跟踪输出选项,请参阅 GIT_TRACE2Trace2 文档以获取完整详细信息。

GIT_TRACE2_PERF

除了 GIT_TRACE2 中可用的基于文本的消息外,此设置还会写入一种基于列的格式,用于理解嵌套区域。有关可用的跟踪输出选项,请参阅 GIT_TRACE2Trace2 文档以获取完整详细信息。

GIT_TRACE_REDACT

默认情况下,当激活跟踪时,Git 会编辑 cookie 的值、"Authorization:" 头、"Proxy-Authorization:" 头和 packfile URI。将此布尔环境变量设置为 false 可防止此编辑。

GIT_NO_REPLACE_OBJECTS

设置并导出此环境变量会告诉 Git 忽略替换引用,并且不替换 Git 对象。

GIT_LITERAL_PATHSPECS

将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为字面值,而不是 glob 模式。例如,运行 GIT_LITERAL_PATHSPECS=1 git log -- *.c' 将搜索修改路径 *.c 的提交,而不是 glob 模式 *.c 匹配的任何路径。如果您向 Git 提供字面路径(例如,以前由 git ls-tree--raw 差异输出等提供的路径),您可能需要此功能。

GIT_GLOB_PATHSPECS

将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为 glob 模式(又称 "glob" 魔术)。

GIT_NOGLOB_PATHSPECS

将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为字面值(又称 "literal" 魔术)。

GIT_ICASE_PATHSPECS

将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为不区分大小写。

GIT_NO_LAZY_FETCH

将此布尔环境变量设置为 true 会告诉 Git 不要按需从 promisor 远程仓库懒惰地抓取缺失的对象。

GIT_REFLOG_ACTION

当引用更新时,会创建 reflog 条目来跟踪引用更新的原因(通常是更新引用的高级命令的名称),以及引用的旧值和新值。当由最终用户作为顶级命令调用时,脚本化的 Porcelain 命令可以使用 git-sh-setup 中的 set_reflog_action 辅助函数将其名称设置为此变量,以便记录在 reflog 正文中。

GIT_REF_PARANOIA

如果此布尔环境变量设置为 false,则在遍历引用列表时忽略损坏或命名不当的引用。通常 Git 会尝试包含任何此类引用,这可能导致某些操作失败。这通常是首选,因为潜在的破坏性操作(例如,git-prune[1])最好中止,而不是忽略损坏的引用(因此认为它们指向的历史不值得保存)。默认值为 1(即,对检测和中止所有操作保持警惕)。通常您不需要将其设置为 0,但在尝试从损坏的仓库中抢救数据时可能会有用。

GIT_COMMIT_GRAPH_PARANOIA

从提交图加载提交对象时,Git 会对对象数据库中的对象执行存在性检查。这样做是为了避免包含对已删除提交引用的过时提交图引起的问题,但这会带来性能损失。

默认值为 "false",这会禁用上述行为。将其设置为 "true" 会启用存在性检查,以便过时的提交永远不会从提交图中返回,但代价是性能下降。

GIT_ALLOW_PROTOCOL

如果设置为冒号分隔的协议列表,则行为就像 protocol.allow 设置为 never,并且每个列出的协议都将 protocol.<name>.allow 设置为 always(覆盖任何现有配置)。有关详细信息,请参阅 git-config[1]protocol.allow 的描述。

GIT_PROTOCOL_FROM_USER

将此布尔环境变量设置为 false 可阻止抓取/推送/克隆使用的、已配置为 user 状态的协议。这对于限制从不受信任的仓库递归初始化子模块,或对于向 git 命令提供可能不受信任的 URL 的程序非常有用。有关更多详细信息,请参阅 git-config[1]

GIT_PROTOCOL

仅供内部使用。用于线路协议的握手。包含一个冒号 : 分隔的键列表,带有可选值 <key>[=<value>]。必须忽略未知键和值的存在。

请注意,服务器可能需要配置以允许此变量通过某些传输。在访问本地仓库(即 file:// 或文件系统路径)以及通过 git:// 协议时,它将自动传播。对于 git-over-http,它在大多数配置中都应该自动工作,但请参阅 git-http-backend[1] 中的讨论。对于 git-over-ssh,ssh 服务器可能需要配置以允许客户端传递此变量(例如,通过 OpenSSH 使用 AcceptEnv GIT_PROTOCOL)。

此配置是可选的。如果变量未传播,则客户端将回退到原始的 "v0" 协议(但可能会错过一些性能改进或功能)。此变量目前仅影响克隆和抓取;它尚未用于推送(但未来可能会)。

GIT_OPTIONAL_LOCKS

如果此布尔环境变量设置为 false,Git 将完成任何请求的操作,而不会执行任何需要获取锁的可选子操作。例如,这将阻止 git status 作为副作用刷新索引。这对于在后台运行的进程很有用,它们不希望与仓库上的其他操作引起锁争用。默认值为 1

GIT_REDIRECT_STDIN
GIT_REDIRECT_STDOUT
GIT_REDIRECT_STDERR

仅限 Windows:允许将标准输入/输出/错误句柄重定向到环境变量指定的路径。这在多线程应用程序中特别有用,因为通过 CreateProcess() 传递标准句柄的规范方法不是一个选项,因为它需要将句柄标记为可继承(因此,**每个** 生成的进程都将继承它们,可能阻塞常规 Git 操作)。主要预期用例是使用命名管道进行通信(例如 \\.\pipe\my-git-stdin-123)。

支持两个特殊值:off 将简单地关闭相应的标准句柄,如果 GIT_REDIRECT_STDERR2>&1,则标准错误将重定向到与标准输出相同的句柄。

GIT_PRINT_SHA1_ELLIPSIS (已弃用)

如果设置为 yes,则在(缩写)SHA-1 值后打印省略号。这会影响分离 HEAD 的指示(git-checkout[1])和原始差异输出(git-diff[1])。在上述情况下打印省略号不再被认为是足够的,并且在可预见的未来很可能会移除对此功能的支持(以及该变量)。

GIT_ADVICE

如果设置为 0,则禁用所有建议消息。这些消息旨在向人类用户提供提示,帮助他们摆脱问题情境或利用新功能。用户可以使用 advice.* 配置键禁用单个消息。这些消息可能会干扰执行 Git 进程的工具,因此此变量可用于禁用这些消息。(--no-advice 全局选项也可用,但旧版 Git 可能在不理解此选项时失败。无法理解此环境变量的 Git 版本将忽略它。)

讨论

有关以下内容的更多详细信息,请参阅用户手册的 Git 概念章节gitcore-tutorial[7]

Git 项目通常由一个工作目录和一个顶层的 ".git" 子目录组成。.git 目录中包含(除其他外)一个表示项目完整历史记录的压缩对象数据库、一个将该历史记录链接到工作树当前内容的 "index" 文件,以及指向该历史记录的命名指针,例如标签和分支头。

对象数据库包含三种主要类型的对象:blob(存储文件数据);tree(指向 blob 和其他 tree 以构建目录层次结构);以及 commit(每个 commit 引用一个 tree 和一些父 commit)。

commit(相当于其他系统中的 "changeset" 或 "version")代表项目历史中的一个步骤,每个父 commit 代表紧前的一个步骤。具有多个父 commit 的 commit 表示独立开发线的合并。

所有对象都以其内容的 SHA-1 哈希值命名,通常写成 40 位十六进制数字的字符串。这些名称是全局唯一的。通过仅签署该 commit,可以担保导致该 commit 的整个历史。为此目的提供了第四种对象类型:标签 (tag)。

对象在首次创建时存储在单个文件中,但为了效率,之后可能会被压缩到 "pack file" 中。

称为引用的命名指针标记历史中有趣的点。引用可以包含对象的 SHA-1 名称或另一个引用的名称(后者称为 "符号引用")。名称以 refs/head/ 开头的引用包含正在开发的分支的最新提交(或 "头")的 SHA-1 名称。感兴趣的标签的 SHA-1 名称存储在 refs/tags/ 下。名为 HEAD 的符号引用包含当前已检出分支的名称。

索引文件会用所有路径的列表进行初始化,并且对于每个路径,都有一个 blob 对象和一组属性。blob 对象表示文件在当前分支头部时的内容。属性(上次修改时间、大小等)取自工作树中的相应文件。可以通过比较这些属性来发现工作树的后续更改。索引可以用新内容更新,并且可以从索引中存储的内容创建新的提交。

索引还能够为给定路径名存储多个条目(称为 "阶段")。这些阶段用于在合并进行中时保存文件的各种未合并版本。

安全性

某些配置选项和钩子文件可能导致 Git 运行任意 shell 命令。由于配置和钩子不使用 git clone 复制,因此克隆包含不受信任内容的远程仓库,并使用 git log 检查它们通常是安全的。

然而,当 .git 目录本身来自不受信任的来源时,在该 .git 目录(或其周围的工作树)中运行 Git 命令是不安全的。其配置和钩子中的命令会以通常的方式执行。

默认情况下,当仓库由运行命令的用户以外的人拥有时,Git 会拒绝运行。请参阅 git-config[1]safe.directory 的条目。虽然这有助于在多用户环境中保护您,但请注意,您也可能获得由您拥有的不受信任的仓库(例如,如果您从不受信任的来源提取 zip 文件或 tarball)。在这种情况下,您需要首先 "清理" 不受信任的仓库。

如果您有一个不受信任的 .git 目录,您应该首先使用 git clone --no-local 克隆它以获得干净的副本。Git 确实限制了 upload-pack(处理克隆或抓取的服务器端)将运行的选项和钩子集,但请注意,针对 upload-pack 的攻击面很大,因此这确实带来了一些风险。最安全的方法是作为非特权用户提供仓库服务(无论是通过 git-daemon[1]、ssh,还是使用其他工具更改用户 ID)。请参阅 git-upload-pack[1]SECURITY 部分中的讨论。

更多文档

请参阅 "description" 部分中的参考资料以开始使用 Git。以下内容对于初次使用者来说可能过于详细。

用户手册的 Git 概念章节gitcore-tutorial[7]都提供了对底层 Git 架构的介绍。

有关推荐工作流的概述,请参阅 gitworkflows[7]

另请参阅 howto 文档,获取一些有用的示例。

内部机制在 Git API 文档中有所记录。

从 CVS 迁移的用户可能也想阅读 gitcvs-migration[7]

作者

Git 由 Linus Torvalds 启动,目前由 Junio C Hamano 维护。大量贡献来自 Git 邮件列表 <git@vger.kernel.org>。https://openhub.net/p/git/contributors/summary 提供了更完整的贡献者列表。

如果您有 git.git 本身的克隆,git-shortlog[1]git-blame[1] 的输出可以显示项目中特定部分的作者。

报告 Bug

请向 Git 邮件列表 <git@vger.kernel.org> 报告 Bug,开发和维护主要在此进行。您无需订阅该列表即可发送邮件。请参阅 https://lore.kernel.org/git 上的列表存档,以查看以前的 Bug 报告和其他讨论。

与安全相关的问题应私下向 Git 安全邮件列表 <git-security@googlegroups.com> 披露。

GIT

Git[1] 套件的一部分

scroll-to-top