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 用户手册[1] 提供了更深入的介绍。
掌握了基本概念后,您可以返回此页面以了解 Git 提供的命令。 您可以使用“git help command”来了解有关各个 Git 命令的更多信息。 gitcli(7) 手册页面概述了命令行命令的语法。
Git 最新文档的格式化和超链接副本可以在以下网址查看:
https://git.github.io/htmldocs/git.html 或 https://git-scm.com/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 <path>
以类似于在
此选项会影响需要路径名的选项,例如 --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 <name>=<value>
将配置参数传递给命令。 给定的值将覆盖配置文件中的值。
请注意,在 git -c foo.bar ... 中省略 = 是允许的,并且会将 foo.bar 设置为布尔值 true(就像在配置文件中使用 [foo]bar 一样)。包含等号但使用空值(例如 git -c foo.bar= ...)会将 foo.bar 设置为空字符串,git config --type=bool 会将其转换为 false。
^ -config-env=<name>=<envvar>
类似于 -c <name\>=<value>,为配置变量 <name> 赋予一个值,其中 <envvar> 是要从中检索值的环境变量的名称。与 -c 不同,没有直接将值设置为空字符串的快捷方式,而是环境变量本身必须设置为空字符串。如果 <envvar> 不存在于环境中,则会出错。<envvar> 不能包含等号,以避免与 <name> 包含等号时的歧义。
这对于需要将临时配置选项传递给 git 的情况非常有用,但您是在操作系统上执行此操作,该操作系统上的其他进程可以读取您的命令行(例如 /proc/self/cmdline),但不能读取您的环境(例如 /proc/self/environ)。在 Linux 上,这是默认行为,但您的系统可能不是这样。
请注意,这可能会为诸如 http.extraHeader 之类的变量提供安全性,其中敏感信息位于值中,但对于 url.<base>.insteadOf 之类的变量则不然,敏感信息可以位于键中。
^ -exec-path[=<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=<path>
设置存储库(.git 目录)的路径。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是绝对路径或相对于当前工作目录的路径。
使用此选项(或 GIT_DIR 环境变量)指定 .git 目录的位置,会关闭尝试查找包含 .git 子目录的目录(这是发现存储库和工作树顶层目录的方法),并告诉 Git 您位于工作树的顶层。如果您不在工作树的顶层目录中,则应告诉 Git 工作树的顶层目录在哪里,方法是使用 --work-tree=<path> 选项(或 GIT_WORK_TREE 环境变量)。
如果你只想像在 <path\> 中启动 Git 一样运行 Git,请使用 git -C <path\>.
`--work-tree=<path>`
设置工作树的路径。它可以是绝对路径或相对于当前工作目录的路径。这也可以通过设置 GIT_WORK_TREE 环境变量和 core.worktree 配置变量来控制(有关更多详细信息,请参阅 gitconfig(1) 中的 core.worktree)。
`--namespace=<path>`
设置 Git 命名空间。有关更多详细信息,请参阅 gitnamespaces(7)。等效于设置 GIT_NAMESPACE 环境变量。
`--bare`
将仓库视为一个裸仓库。如果未设置 GIT_DIR 环境变量,则将其设置为当前工作目录。
`--no-replace-objects`
不使用替换引用来替换 Git 对象。这等效于将 GIT_NO_REPLACE_OBJECTS 环境变量设置为任何值。有关更多信息,请参阅 git-replace(1)。
`--no-lazy-fetch`
不要按需从承诺远程获取缺少的对象。与 git cat-file -e <object\> 结合使用,可以查看对象是否在本地可用。这等效于将 GIT_NO_LAZY_FETCH 环境变量设置为 1。
`--no-optional-locks`
不执行需要锁的可选操作。这等效于将 GIT_OPTIONAL_LOCKS 设置为 0。
`--no-advice`
禁用所有提示信息的打印。
`--literal-pathspecs`
按字面意思处理路径规范(即,不进行通配符匹配,不进行路径规范的特殊处理)。这等效于将 GIT_LITERAL_PATHSPECS 环境变量设置为 1。
`--glob-pathspecs`
将“glob” magic 添加到所有路径规范。这等效于将 GIT_GLOB_PATHSPECS 环境变量设置为 1。可以通过使用路径规范 magic :(literal) 来禁用单个路径规范的通配符匹配。
`--noglob-pathspecs`
将“literal” magic 添加到所有路径规范。这等效于将 GIT_NOGLOB_PATHSPECS 环境变量设置为 1。可以通过使用路径规范 magic :(glob) 来启用单个路径规范的通配符匹配。
`--icase-pathspecs`
将“icase” magic 添加到所有路径规范。这等效于将 GIT_ICASE_PATHSPECS 环境变量设置为 1。
`--list-cmds=<group>[,<group>...]`
按组列出命令。这是一个内部/实验选项,将来可能会更改或删除。支持的组是:builtins、parseopt(使用 parse-options 的内置命令)、main(位于 libexec 目录中的所有命令)、others(具有 git- 前缀的所有位于 $PATH 中的其他命令)、list-<category>(请参阅 command-list.txt 中的类别)、nohelpers(排除辅助命令)、alias 和 config(从配置变量 completion.commands 中检索命令列表)。
`--attr-source=<tree-ish>`
从 <tree-ish> 而不是工作树读取 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)
使用二分查找来找到引入错误的提交。
git-branch(1)
列出、创建或删除分支。
git-bundle(1)
通过存档移动对象和引用。
git-checkout(1)
切换分支或恢复工作树文件。
git-cherry-pick(1)
应用现有提交所做的更改。
git-citool(1)
^ it-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)
打包分支和标签,以实现对存储库的高效访问。
git-prune(1)
从对象数据库中删除所有不可访问的对象。
git-reflog(1)
管理 reflog 信息。
git-refs(1)
对 refs 的底层访问。
git-remote(1)
管理一组跟踪的存储库。
git-repack(1)
打包存储库中未打包的对象。
git-replace(1)
创建、列出、删除用于替换对象的 refs。
查询器:
git-annotate(1)
使用提交信息注释文件行。
git-blame(1)
显示上次修改文件的每一行的修订版本和作者。
git-bugreport(1)
收集用户提交错误报告的信息。
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)
将 stdin 中的补丁集合发送到 IMAP 文件夹。
git-p4(1)
从 Perforce 存储库导入和提交。
git-quiltimport(1)
将 quilt 补丁集应用到当前分支。
git-request-pull(1)
生成未决更改的摘要。
git-send-email(1)
将补丁集合作为电子邮件发送。
git-svn(1)
Subversion 存储库和 Git 之间的双向操作。
重置、还原和撤销
有三个命令名称相似:git reset、git restore 和 git revert。
git-revert(1) 是关于创建一个新的提交,以撤消其他提交所做的更改。
git-restore(1) 是关于从索引或另一个提交中恢复工作树中的文件。此命令不会更新您的分支。该命令也可以用于从另一个提交中恢复索引中的文件。
git-reset(1) 是关于更新您的分支,移动分支的末端,以便添加或删除分支中的提交。此操作会更改提交历史记录。
git reset 还可以用于恢复索引,与 git restore 重叠。
低级命令(管道命令)
虽然 Git 包含自己的用户界面层,但其低级命令足以支持 开发替代用户界面。 这样的用户界面的开发者可以从阅读 git-update-index(1) 和 git-read-tree(1) 开始。
这些低级命令的接口(输入、输出、选项集和语义) 应该比用户界面命令更稳定,因为这些命令主要用于脚本化使用。 另一方面,用户界面命令的接口可能会发生变化, 以便改进最终用户的体验。
以下描述将低级命令分为操作对象(在存储库、索引和工作树中)的命令、查询和比较对象的命令,以及在存储库之间移动对象和引用的命令。
操作命令
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)
通过 HTTP 实现的 Git 服务器端。
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 脚本的 i18n 设置代码。
git-sh-setup(1)
通用的 Git shell 脚本设置代码。
git-stripspace(1)
删除不必要的空白字符。
指南
以下文档页面是关于 Git 概念的指南。
gitcore-tutorial(7)
面向开发人员的 Git 核心教程。
gitcredentials(7)
为 Git 提供用户名和密码。
gitcvs-migration(7)
Git 用于 CVS 用户。
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 推荐的工作流程概述。
存储库、命令和文件接口
此文档讨论了存储库和命令接口,用户预计会直接与之交互。有关更多详细信息,请参阅 git-help(1) 中的 --user-formats。
gitattributes(5)
为每个路径定义属性。
gitcli(7)
Git 命令行界面和约定。
githooks(5)
Git 使用的钩子。
gitignore(5)
指定要忽略的有意未跟踪的文件。
gitmailmap(5)
映射作者/提交者名称和/或电子邮件地址。
gitmodules(5)
定义子模块属性。
gitrepository-layout(5)
Git 存储库布局。
gitrevisions(7)
指定 Git 中的修订和范围。
文件格式、协议和其他开发人员接口
此文档讨论了文件格式、网络协议和其他 Git 开发人员接口。有关更多详细信息,请参阅 git-help(1) 中的 --developer-interfaces。
gitformat-bundle(5)
bundle 文件格式。
gitformat-chunk(5)
基于块的文件格式。
gitformat-commit-graph(5)
Git 提交图格式。
gitformat-index(5)
Git 索引格式。
gitformat-pack(5)
Git 压缩包格式。
gitformat-signature(5)
Git 加密签名格式。
gitprotocol-capabilities(5)
协议 v0 和 v1 功能。
gitprotocol-common(5)
各种协议共有的内容。
gitprotocol-http(5)
基于 HTTP 的 Git 协议。
gitprotocol-pack(5)
压缩包如何在网络上传输。
gitprotocol-v2(5)
Git 网络协议,版本 2。
配置机制
Git 使用简单的文本格式来存储每个存储库和每个用户的自定义设置。 这样的配置文件可能如下所示:
#
# '#' 或 ';' 字符表示注释。
#
; 核心变量
[core]
; 不信任文件模式
filemode = false
; 用户身份
[user]
name = "Junio C Hamano"
email = "_"
各种命令会从配置文件中读取并相应地调整其操作。 请参阅 git-config(1) 以获取列表和有关配置机制的更多详细信息。
标识符术语
<object>
表示任何类型的对象的对象名称。
<blob>
表示 blob 对象名称。
<tree>
表示树对象名称。
<commit>
表示提交对象名称。
<tree-ish>
表示树、提交或标签对象名称。 接受 <tree-ish> 参数的命令最终希望对 <tree> 对象进行操作,但会自动取消引用指向 <tree> 的 <commit> 和 <tag> 对象。
<commit-ish>
表示一个提交或标签对象名称。接受
<type>
表示需要一个对象类型。当前可以是:blob、tree、commit 或 tag。
<file>
表示一个文件名——几乎总是相对于 GIT_INDEX_FILE 描述的树结构根目录。
符号标识符
任何接受 <object> 的 Git 命令也可以使用以下符号表示法:
HEAD
表示当前分支的头部。
<tag>
一个有效的标签名称(即 refs/tags/<tag> 引用)。
<head>
一个有效的头部名称(即 refs/heads/<head> 引用)。
有关指定对象名称的更多方法,请参阅 gitrevisions(7) 中的“指定修订”部分。
文件/目录结构
请参阅 gitrepository-layout(5) 文档。
有关每个钩子的更多信息,请阅读 githooks(5)。
更高级别的 SCM 可能会在 $GIT_DIR 中提供和管理其他信息。
术语
请参阅 gitglossary(7)。
环境变量
各种 Git 命令都会关注环境变量并更改其行为。标记为“布尔值”的环境变量采用与布尔值配置变量相同的值,即“true”、“yes”、“on”和正数被视为“yes”,而“false”、“no”、“off”和“0”被视为“no”。
以下是这些变量:
系统
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-it 和 vanilla-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 中的非工作树文件将从此路径中获取,而不是从 $GIT_DIR 中获取。工作树特定的文件,如 HEAD 或索引,将从 $GIT_DIR 中获取。有关详细信息,请参阅 gitrepository-layout(5) 和 git-worktree(1)。
GIT_DEFAULT_HASH
如果设置了此变量,则新仓库的默认哈希算法将设置为此值。此值在克隆时将被忽略,并且始终使用远程仓库的设置。默认值为 "sha1"。请参阅 git-init(1) 中的 --object-format。
GIT_DEFAULT_REF_FORMAT
如果设置了此变量,则新仓库的默认引用后端格式将设置为此值。默认值为 "files"。请参阅 git-init(1) 中的 --ref-format。
Git 提交
GIT_AUTHOR_NAME
在创建提交或标签对象或写入引用日志时,用作作者身份的可读名称。它会覆盖 user.name 和 author.name 配置设置。
GIT_AUTHOR_EMAIL
创建提交或标签对象,或编写引用日志时使用的作者身份的电子邮件地址。 覆盖 user.email 和 author.email 配置设置。
GIT_AUTHOR_DATE
创建提交或标签对象,或编写引用日志时使用的作者身份的日期。 有效格式请参见 git-commit(1)。
GIT_COMMITTER_NAME
创建提交或标签对象,或编写引用日志时使用的提交者身份的人类可读名称。 覆盖 user.name 和 committer.name 配置设置。
GIT_COMMITTER_EMAIL
创建提交或标签对象,或编写引用日志时使用的作者身份的电子邮件地址。 覆盖 user.email 和 committer.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 不会使用其内置的差异机制。 对于添加、删除或修改的路径,将使用 7 个参数调用 GIT_EXTERNAL_DIFF:
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 退出时删除。
对于未合并的路径,将使用 1 个参数
对于每次调用 GIT_EXTERNAL_DIFF 的路径,都会设置两个环境变量:GIT_DIFF_PATH_COUNTER 和 GIT_DIFF_PATH_TOTAL。
GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE
如果此布尔环境变量设置为 true,则预期 GIT_EXTERNAL_DIFF 命令返回退出代码 0,如果它认为输入文件相等,或者返回 1,如果它认为它们不同,就像 [diff]({filename}../../diff)(1) 一样。 如果设置为 false(默认值),则预期该命令无论是否相等都返回退出代码 0。 任何其他退出代码都会导致 Git 报告致命错误。
GIT_DIFF_PATH_COUNTER
一个从 1 开始计数器,每个路径递增 1。
GIT_DIFF_PATH_TOTAL
路径的总数。
other
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
此环境变量在编辑交互式重置的待办事项列表时,会覆盖配置的 Git 编辑器。另请参见 git-rebase(1) 和 gitconfig(1) 中的 sequence.editor 选项。
GIT_SSH, GIT_SSH_COMMAND
如果设置了这两个环境变量中的任何一个,那么 git fetch 和 git 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。此变量覆盖 config 设置 ssh.variant,后者也具有相同的目的。
GIT_SSL_NO_VERIFY
设置并导出此环境变量会告知 Git 在通过 HTTPS 进行获取或推送时不要验证 SSL 证书。
GIT_ATTR_SOURCE
设置将读取 gitattributes 的 treeish。
GIT_ASKPASS
如果设置了此环境变量,那么需要获取密码或密码短语的 Git 命令(例如,用于 HTTP 或 IMAP 身份验证)将调用此程序,并将适当的提示作为命令行参数传递,并从其 STDOUT 读取密码。另请参见 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-list`、`git log`、`git check-attr` 和 `git 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
启用对给定程序发送或接收的包文件的跟踪。与其他跟踪输出不同,此跟踪是逐字输出的:没有标题,也没有二进制数据的引用。您几乎肯定希望将其定向到文件(例如,GIT_TRACE_PACKFILE=/tmp/my.pack),而不是将其显示在终端上或与其他跟踪输出混合。
请注意,目前这仅实现于克隆和提取操作的客户端部分。
GIT_TRACE_PERFORMANCE
启用与性能相关的跟踪消息,例如每个 Git 命令的总执行时间。 请参阅 GIT_TRACE 以获取可用的跟踪输出选项。
GIT_TRACE_REFS
启用有关 ref 数据库操作的跟踪消息。请参阅 GIT_TRACE 以获取可用的跟踪输出选项。
GIT_TRACE_SETUP
启用在 Git 完成其设置阶段后打印 .git、工作树和当前工作目录的跟踪消息。请参阅 GIT_TRACE 以获取可用的跟踪输出选项。
GIT_TRACE_SHALLOW
启用可以帮助调试浅层存储库的克隆/提取的跟踪消息。请参阅 GIT_TRACE 以获取可用的跟踪输出选项。
GIT_TRACE_CURL
启用 git 传输协议的所有传入和传出数据的 curl 完整跟踪转储,包括描述性信息。这类似于在命令行上执行 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:[
此外,如果该变量设置为 af_unix:[
取消设置该变量,或将其设置为“0”或“false”(不区分大小写),将禁用跟踪消息。
有关完整详细信息,请参阅 Trace2 文档[2]。
GIT_TRACE2_EVENT
此设置写入基于 JSON 的格式,该格式适用于机器解释。请参阅 GIT_TRACE2 以获取可用的跟踪输出选项,并参阅 Trace2 文档[2] 以获取完整详细信息。
GIT_TRACE2_PERF
除了 GIT_TRACE2 中可用的基于文本的消息之外,此设置还会写入基于列的格式,用于了解嵌套区域。请参阅 GIT_TRACE2 以获取可用的跟踪输出选项,并参阅 Trace2 文档[2] 以获取完整详细信息。
GIT_TRACE_REDACT
默认情况下,当启用跟踪时,Git 会屏蔽 cookie 值、“Authorization:” 标头、“Proxy-Authorization:” 标头和 packfile URI。将此布尔环境变量设置为 false 可防止进行此屏蔽。
GIT_NO_REPLACE_OBJECTS
设置并导出此环境变量可告知 Git 忽略替换引用,并且不替换 Git 对象。
GIT_LITERAL_PATHSPECS
将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为字面量,而不是作为通配符模式。例如,运行 GIT_LITERAL_PATHSPECS=1 git log -- '\*.c' 将搜索修改过路径为 *.c 的提交,而不是搜索与通配符 *.c 匹配的任何路径。如果您向 Git 传递字面路径(例如,先前由 git ls-tree、--raw diff 输出等提供给您的路径),则可能需要这样做。
GIT_GLOB_PATHSPECS
将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为通配符模式(也称为“通配符”)。
GIT_NOGLOB_PATHSPECS
将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为字面量(也称为“字面量”)。
GIT_ICASE_PATHSPECS
将此布尔环境变量设置为 true 会导致 Git 将所有路径规范视为不区分大小写。
GIT_NO_LAZY_FETCH
将此布尔环境变量设置为 true 会告知 Git 不要延迟从承诺的远程仓库中获取缺少的对象。
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
当从 commit-graph 加载提交对象时,Git 会对对象数据库中的对象执行存在性检查。这是为了避免出现问题,例如过时的 commit-graph 包含对已删除提交的引用,但这会带来性能方面的损失。
默认值为“false”,这会禁用上述行为。将其设置为“true”将启用存在性检查,以便永远不会从 commit-graph 返回过时的提交,但会降低性能。
GIT_ALLOW_PROTOCOL
如果设置为以冒号分隔的协议列表,则行为类似于将 protocol.allow 设置为 never,并且将列表中每个协议的 protocol.
GIT_PROTOCOL_FROM_USER
将此布尔环境变量设置为 false,以防止 fetch/push/clone 使用配置为用户状态的协议。这对于限制来自不受信任的存储库的递归子模块初始化或对于向 git 命令提供潜在不受信任的 URL 的程序很有用。有关更多详细信息,请参阅 git-config(1)。
GIT_PROTOCOL
仅供内部使用。用于协商线路协议。包含一个以冒号 : 分隔的键列表,其中包含可选的值
请注意,服务器可能需要进行配置才能允许此变量通过某些传输方式。访问本地存储库(即 file:// 或文件系统路径)以及通过 git:// 协议访问时,它将自动传播。对于 git-over-http,它在大多数配置中都应该可以自动工作,但请参见 git-httpbackend(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_STDERR 为 2>&1,则标准错误将被重定向到与标准输出相同的句柄。
GIT_PRINT_SHA1_ELLIPSIS(已弃用)
如果设置为 yes,则在(缩写的)SHA-1 值后打印省略号。这会影响分离的 HEAD 指示(git-checkout(1))和原始 diff 输出(git-diff(1))。
在上述情况下打印省略号不再被认为是合适的,并且支持可能会在不久的将来删除(以及该变量)。
GIT_ADVICE
如果设置为 0,则禁用所有提示消息。这些消息旨在为用户提供提示,以帮助他们摆脱困境或利用新功能。用户可以使用 advice.* 配置键禁用单个消息。
这些消息可能会干扰执行 Git 进程的工具,因此提供了此环境变量来禁用这些消息。(--no-advice 全局选项也可以使用,但旧版本的 Git 可能无法理解此选项。环境变量将被 Git 版本忽略,这些版本不理解该选项。)
讨论
有关以下内容的更多详细信息,请参阅用户手册的 Git 概念章节[3]和 gitcore-tutorial(7)。
一个 Git 项目通常由一个工作目录组成,该工作目录在顶层包含一个“.git”子目录。 .git 目录包含各种内容,包括一个压缩的对象数据库,该数据库表示项目的完整历史记录;一个“索引”文件,该文件将该历史记录链接到工作树的当前内容;以及指向该历史记录的命名指针,例如标签和分支头。
对象数据库包含三种主要类型的对象:blob,它保存文件数据;树,它指向 blob 和其他树以构建目录层次结构;以及提交,每个提交都引用单个树和一定数量的父提交。
提交等同于其他系统中称为“更改集”或“版本”,它表示项目历史中的一个步骤,并且每个父提交表示一个直接之前的步骤。具有多个父提交的提交表示独立开发线路的合并。
所有对象都通过其内容的 SHA-1 哈希来命名,通常表示为 40 个十六进制数字的字符串。这些名称在全局范围内是唯一的。通过仅对一个提交进行签名,就可以验证所有导致该提交的历史记录。第四种对象类型,即标签,用于此目的。
最初创建时,对象存储在单独的文件中,但为了提高效率,以后可以将其压缩到“包文件”中。
名为 refs 的命名指针标记了历史记录中的有趣点。 ref 可以包含对象的 SHA-1 名称或另一个 ref 的名称(后者称为“符号 ref”)。名称以 refs/head/ 开头的 refs 包含开发分支的最新提交(或“head”)的 SHA-1 名称。感兴趣的标签的 SHA-1 名称存储在 refs/tags/ 下。名为 HEAD 的符号 ref 包含当前检出的分支的名称。
索引文件会初始化一个包含所有路径的列表,并且对于每个路径,都会有一个 blob 对象和一组属性。blob 对象表示当前分支 head 处的文件的内容。属性(上次修改时间、大小等)是从工作树中的相应文件获取的。可以通过比较这些属性来发现工作树的后续更改。索引可以更新为包含新的内容,并且可以从索引中存储的内容创建新的提交。
索引还可以存储多个条目(称为“阶段”)用于给定的路径名。这些阶段用于在合并过程中保存各种未合并的文件版本。
安全
某些配置选项和钩子文件可能会导致 Git 运行任意 shell 命令。由于配置和钩子不会使用 git clone 复制,因此通常可以安全地克隆来自不受信任来源的远程仓库,并使用 git log 等命令对其进行检查。
但是,当 .git 目录本身来自不受信任的来源时,在 .git 目录(或围绕它的工作树)中运行 Git 命令是不安全的。其中的命令将以通常的方式执行。
默认情况下,如果仓库不属于运行该命令的用户,Git 将拒绝运行。请参阅 git-config(1) 中 safe.directory 的条目。虽然这可以在多用户环境中帮助保护您,但请注意,您也可以获取由您拥有的不受信任的仓库(例如,如果您从不受信任的来源提取 zip 文件或 tar 包)。在这种情况下,您首先需要“清理”不受信任的仓库。
如果您有一个不受信任的 .git 目录,您应该首先使用 git clone --no-local 克隆它,以获得一个干净的副本。Git 限制了 upload-pack(它处理克隆或提取的服务器端)将运行的选项和钩子集,但请注意,upload-pack 的攻击面很大,因此这会带来一些风险。最安全的方法是以非特权用户身份提供仓库(通过 git-daemon(1)、ssh 或使用其他工具来更改用户 ID)。请参阅 git-upload-pack(1) 的安全部分中的讨论。
进一步的文档
请参阅“描述”部分中的参考资料,以开始使用 Git。以下内容可能比首次用户所需的更详细。
用户手册[3]的 Git 概念章节和 gitcore-tutorial(7) 都提供了对 Git 基础架构的介绍。
请参阅 gitworkflows(7) 以获取有关推荐工作流程的概述。
请参阅 howto[4] 文档以获取一些有用的示例。
内部文档记录在 Git API 文档[5]中。
从 CVS 迁移的用户可能还想阅读 gitcvs-migration(7)。
作者
Git 由 Linus Torvalds 启动,目前由 Junio C Hamano 维护。Git 邮件列表 <_[6]> 提供了许多贡献。 https://openhub.net/p/git/contributors/summary 提供了更完整的贡献者列表。
如果您有 git.git 本身的克隆,git-shortlog(1) 和 git-blame(1) 的输出可以向您展示项目中特定部分的作者。
报告错误
请向 Git 邮件列表 <_[6]> 报告错误,该列表是 Git 的主要开发和维护场所。您不必订阅该列表即可向其发送消息。请访问 https://lore.kernel.org/git 查阅之前的错误报告和其他讨论。
与安全性相关的问题应私下向 Git 安全邮件列表 <_[7]> 披露。
参见
^ ittutorial(7)、gittutorial-2(7)、giteveryday(7)、gitcvs-migration(7)、gitglossary(7)、gitcoretutorial(7)、gitcli(7)、Git 用户手册[1]、gitworkflows(7)
GIT
git(1) 套件的一部分
备注
Git 用户手册
file:///usr/share/doc/git/html/user-manual.html
Trace2 文档
file:///usr/share/doc/git/html/technical/api-trace2.html
用户手册中的 Git 概念章节
file:///usr/share/doc/git/html/user-manual.html#git-concepts
howto
file:///usr/share/doc/git/html/howto-index.html
Git API 文档
file:///usr/share/doc/git/html/technical/api-index.html
_
mailto:_
_
mailto:_