一、Manipulators
1. apply
- 将补丁应用于文件和/或索引
- 解释: 将补丁应用于文件和/或索引。
- 使用方式:
git apply <patch>
,通过给定的补丁文件将更改应用于工作目录中的文件或者只应用于暂存区。 - 导致结果: 应用指定的补丁,使文件或索引中的更改生效。
2. checkout-index
- 从索引复制文件到工作树
- 解释: 从索引复制文件到工作树。
- 使用方式:
git checkout-index <options> -- <pathspec>
,将索引中的指定文件复制到工作树中。 - 导致结果: 在工作目录中创建或更新指定文件,使其与索引中的版本一致。
3. commit-graph
- 编写和验证Git提交图文件
- 解释: 编写和验证 Git 提交图文件。
- 使用方式:
git commit-graph <command>
,执行与提交图相关的操作。 - 导致结果: 生成并维护提交图文件,用于提高 Git 存储库的性能。
4. commit-tree
- 创建一个新的提交对象
- 解释: 创建一个新的提交对象。
- 使用方式:
git commit-tree <tree>
,通过指定的树对象创建一个新的提交对象。 - 导致结果: 生成一个新的提交对象,包含指定树的快照,并成为 Git 存储库中的新提交。
5. hash-object
- 计算对象ID并可选择地从文件创建Blob
- 解释: 计算对象 ID 并可选择地从文件创建 Blob。
- 使用方式:
git hash-object [-t <type>] [-w] [--path=<path>] [--stdin] [--] <file>
,计算给定文件内容的对象 ID 或创建一个 Blob 对象。 - 导致结果: 返回对象 ID 或将文件内容作为 Blob 存储在 Git 对象数据库中。
6. index-pack
- 为现有的打包存档构建索引文件
- 解释: 为现有的打包存档构建索引文件。
- 使用方式:
git index-pack <pack-file>
,为指定的打包文件构建索引文件。 - 导致结果: 创建一个索引文件,提高存储库对打包文件的访问性能。
7. merge-file
- 运行三方文件合并
- 解释: 运行三方文件合并。
- 使用方式:
git merge-file <output> <base> <current> <other>
,运行文件的三方合并,将基础、当前和其他版本的文件合并为输出文件。 - 导致结果: 生成一个包含合并结果的文件,需要手动解决合并冲突。
8. merge-index
- 运行需要合并的文件的合并
- 解释: 运行需要合并的文件的合并。
- 使用方式:
git merge-index [-o] <file> [<remote> [<base> [<current> <other>]]]
,运行文件的三方合并,将索引中的文件合并为输出文件。 - 导致结果: 在工作目录中生成一个包含合并结果的文件,需要手动解决合并冲突。
9. mktag
- 创建具有额外验证的标签对象
- 解释: 创建具有额外验证的标签对象。
- 使用方式:
git mktag <tag>
,创建带有额外验证的新标签对象。 - 导致结果: 生成具有额外验证的标签对象,可以在 Git 存储库中使用。
10. mktree
- 从ls-tree格式的文本构建树对象
- 解释: 从 ls-tree 格式的文本构建树对象。
- 使用方式:
git mktree < <input>
,通过给定的 ls-tree 格式文本创建一个新的树对象。 - 导致结果: 生成一个包含目录结构信息的新树对象。
11. multi-pack-index
- 编写和验证多包索引文件
- 解释: 编写和验证多包索引文件。
- 使用方式:
git multi-pack-index <command>
,执行与多包索引相关的操作。 - 导致结果: 生成并维护多包索引文件,提高 Git 存储库对多个包文件的访问性能。
12. pack-objects
- 创建对象的打包存档
- 解释: 创建对象的打包存档。
- 使用方式:
git pack-objects <options> <packfile>
,将对象打包成一个可压缩的存档文件。 - 导致结果: 创建一个包含多个对象的打包存档文件,以提高存储库性能。
13. prune-packed
- 删除已经在打包文件中的多余对象
- 解释: 删除已经在打包文件中的多余对象。
- 使用方式:
git prune-packed
,删除已经存在于打包文件中的多余对象。 - 导致结果: 清理存储库,删除不再需要的对象,提高存储效率。
14. read-tree
- 将树信息读入索引
- 解释: 将树信息读入索引。
- 使用方式:
git read-tree <tree>
,通过指定的树对象将索引与工作目录同步。 - 导致结果: 将指定树的内容应用于索引和工作目录,使它们保持一致。
15. symbolic-ref
- 读取、修改和删除符号引用
- 解释: 读取、修改和删除符号引用。
- 使用方式:
- 读取符号引用:
git symbolic-ref <options> <name>
- 修改符号引用:
git symbolic-ref [-m <reason>] HEAD <ref>
- 删除符号引用:
git symbolic-ref --delete <name>
- 读取符号引用:
- 导致结果:
- 读取符号引用:显示指定符号引用的目标引用。
- 修改符号引用:修改 HEAD 的引用,通常用于切换分支。
- 删除符号引用:移除指定的符号引用。
16. unpack-objects
- 从打包的存档中解压缩对象
- 解释: 从打包的存档中解压缩对象。
- 使用方式:
git unpack-objects [-n] [-q] < packfile
,从指定的打包存档中解压缩对象。 - 导致结果: 将打包存档中的对象解压缩并放置在 Git 对象数据库中,以便在存储库中使用。
17. update-index
- 将文件内容注册到工作树中的索引
- 解释: 将文件内容注册到工作树中的索引。
- 使用方式:
git update-index [--add] [--remove] [--replace] [--chmod=<+x/-x/0xxx>] [--assume-unchanged] [--skip-worktree] [--refresh] [--really-refresh] [--ignore-missing] [--ignore-submodules] [--] <file>
,更新索引以反映工作树中文件的变更。 - 导致结果: 将指定文件的状态更改注册到 Git 索引中,以备下一次提交。
18. update-ref
- 安全地更新引用中存储的对象名称
- 解释: 安全地更新引用中存储的对象名称。
- 使用方式:
git update-ref [-d] [--no-deref] <name> <newvalue> [<oldvalue>]
,更新引用以存储新的对象名称。 - 导致结果: 更新引用中存储的对象名称,确保操作是原子的,可以在存储库中安全地更新引用。
19. write-tree
- 从当前索引创建树对象
- 解释: 从当前索引创建树对象。
- 使用方式:
git write-tree
,将当前 Git 索引的状态写入一个新的树对象。 - 导致结果: 生成一个新的树对象,包含当前索引中所有文件和目录的状态,可以作为提交对象的基础。
二、Interrogators
1. cat-file
- 提供仓库对象的内容、类型和大小信息
- 解释: 提供仓库对象的内容、类型和大小信息。
- 使用方式:
git cat-file <options> <object>
,根据指定选项查看对象的内容、类型或大小。 - 导致结果: 显示指定对象的详细信息,可用于检查仓库中特定对象的属性。
2. cherry
- 查找尚未应用到上游的提交
- 解释: 查找尚未应用到上游的提交。
- 使用方式:
git cherry [-v] <upstream> [<head>]
,比较指定上游和头部之间的提交,找到尚未应用到上游的提交。 - 导致结果: 显示一系列差异的提交,这些提交尚未合并到上游分支中。
3. diff-files
- 比较工作树和索引中文件的差异
- 解释: 比较工作树和索引中文件的差异。
- 使用方式:
git diff-files [<options>]
,比较工作树中的文件与索引中相应文件的差异。 - 导致结果: 显示工作树文件与索引文件之间的差异,可用于了解未暂存更改。
4. diff-index
- 比较树与工作树或索引之间的差异
- 解释: 比较树与工作树或索引之间的差异。
- 使用方式:
git diff-index [<options>] <tree-ish> [--] [<path>…]
,比较指定树与工作树或索引之间的差异。 - 导致结果: 显示指定树与工作树或索引之间的差异,可用于检查提交之间的变更。
5. diff-tree
- 比较两个树对象之间的内容和模式
- 解释: 比较两个树对象之间的内容和模式。
- 使用方式:
git diff-tree [-r] [--name-only] [--name-status] [--full-index] [--abbrev] [<options>] <tree-ish> [<path>…]
,比较两个树对象之间的内容和模式。 - 导致结果: 显示两个树对象之间的差异,可用于了解提交之间文件的变更情况。
6. for-each-ref
- 输出每个引用的信息
- 解释: 输出每个引用的信息。
- 使用方式:
git for-each-ref [<options>] <format>
,按指定格式输出每个引用的信息。 - 导致结果: 显示每个引用的详细信息,包括引用的名称、指向的提交、标签等。
7. for-each-repo
- 在一组仓库上运行 Git 命令
- 解释: 在一组仓库上运行 Git 命令。
- 使用方式:
git for-each-repo <command>
,在配置的一组仓库上运行指定的 Git 命令。 - 导致结果: 在配置的多个仓库上执行相同的 Git 命令,用于批量处理操作。
8. get-tar-commit-id
- 从使用 git-archive 创建的存档中提取提交 ID
- 解释: 从使用 git-archive 创建的存档中提取提交 ID。
- 使用方式:
git get-tar-commit-id <archive>
,从存档文件中提取包含的提交 ID。 - 导致结果: 显示存档文件所对应的提交 ID,用于确定存档的源代码版本。
9. ls-files
- 显示索引和工作树中文件的信息
- 解释: 显示有关索引(暂存区)和工作树中文件的信息。
- 使用方式:
git ls-files [<options>] [<file>]
,以列表形式显示有关文件的信息。 - 导致结果: 显示文件的状态(未修改、已修改、已删除等),以及它们在索引和工作树中的位置。
10. ls-remote
- 列出远程仓库中的引用
- 解释: 列出远程仓库中的引用(references)。
- 使用方式:
git ls-remote [<options>] [<repository>]
,显示远程仓库中的分支、标签等引用信息。 - 导致结果: 提供远程仓库中引用的列表,用于查看远程仓库的状态。
11. ls-tree
- 列出树对象的内容
- 解释: 列出树对象的内容。
- 使用方式:
git ls-tree [<options>] <tree-ish>
,显示指定树对象中的文件和子树信息。 - 导致结果: 列出指定树对象的内容,包括文件类型、文件模式、对象哈希等信息。
12. merge-base
- 找到合并的尽可能好的共同祖先
- 解释: 找到合并的尽可能好的共同祖先。
- 使用方式:
git merge-base <commit1> <commit2>
,找到两个提交之间的最近共同祖先。 - 导致结果: 提供一个适合作为合并基础的共同祖先,用于执行合并操作。
13. name-rev
- 为给定的提交找到符号名称
- 解释: 为给定的提交找到符号名称。
- 使用方式:
git name-rev [<options>] <object>...
,为提交找到易读的符号名称。 - 导致结果: 返回给定提交的符号名称,有助于理解提交在版本历史中的位置。
14. pack-redundant
- 查找多余的打包文件
- 解释: 查找多余的打包文件。
- 使用方式:
git pack-redundant
,识别并显示在打包中重复的对象。 - 导致结果: 提供有关哪些打包文件包含冗余对象的信息,帮助优化存储。
15. rev-list
- 以反向时间顺序列出提交对象
- 解释: 以反向时间顺序列出提交对象。
- 使用方式:
git rev-list [<options>] <commit>
,按照反向时间顺序列出给定提交对象的所有子孙。 - 导致结果: 提供提交对象的列表,按照反向时间顺序排列。
16. rev-parse
- 选取并调整参数
- 解释: 选取并调整参数。
- 使用方式:
git rev-parse [<options>] <args>
,解析参数并显示相应的 Git 对象的标识符。 - 导致结果: 提供参数对应的 Git 对象标识符,有助于理解和操作 Git 对象。
17. show-index
- 显示打包归档的索引
- 解释: 显示打包归档的索引。
- 使用方式:
git show-index
,显示打包归档文件的索引内容。 - 导致结果: 提供打包文件索引的详细信息,帮助了解和检查打包归档。
18. show-ref
- 列出本地仓库中的引用
- 解释: 列出本地仓库中的引用。
- 使用方式:
git show-ref [<options>] [<heads> | <tags> | <refs>...]
,显示本地仓库中的分支、标签等引用。 - 导致结果: 提供本地仓库中引用的列表,方便查看仓库的引用状态。
19. unpack-file
- 创建带有 blob 内容的临时文件
- 解释: 创建带有 blob 内容的临时文件。
- 使用方式:
git unpack-file [-n] [-q] [-s] [-v] [-f] [-z] [-c] [-t] <blob>
,为指定 blob 创建一个临时文件。 - 导致结果: 创建包含指定 blob 内容的临时文件,方便进行进一步的操作和查看。
20. var
- 显示 Git 逻辑变量
- 解释: 显示 Git 逻辑变量。
- 使用方式:
git var <variable>
,用于显示指定的 Git 逻辑变量的值。 - 导致结果: 提供指定 Git 逻辑变量的当前值,这些变量可能涉及到 Git 的内部运行和配置。
21. verify-pack
- 验证打包的 Git 存档文件
- 解释: 验证打包的 Git 存档文件。
- 使用方式:
git verify-pack [-v] <index-file>
,验证指定的 Git 打包文件的完整性和有效性。 - 导致结果: 提供有关打包文件是否有效、包含的对象是否完整的信息,用于确保打包文件的正确性。
三、Syncing Repositories
1. daemon
- 一个用于 Git 仓库的简单服务器
- 解释:
daemon
是用于 Git 仓库的简单服务器,允许通过 Git 协议进行访问。 - 使用方式:
git daemon [--options] [-- <directory>...]
,启动一个 Git 守护进程,使其他人可以通过 Git 协议访问指定的仓库目录。 - 导致结果: 允许其他用户通过 Git 协议访问指定目录中的仓库,用于提供基于网络的 Git 仓库访问。
2. fetch-pack
- 从另一个仓库接收缺失的对象
- 解释: 从另一个仓库接收缺失的对象。
- 使用方式:
git fetch-pack [-v] [--all] [--quiet] [--keep] [--thin] [--include-tag] [--depth=<depth>] [--no-progress] <repository>
,用于从另一个仓库获取缺失的对象。 - 导致结果: 从指定仓库中获取缺失的对象,使本地仓库保持最新状态。
3. http-backend
- Git 通过 HTTP 协议的服务器端实现
- 解释:
http-backend
是 Git 在服务器端通过 HTTP 协议进行通信的实现。 - 使用方式: 通常由 Web 服务器(如 Apache)调用,用于处理通过 HTTP 协议的 Git 操作请求。
- 导致结果: 提供了通过 HTTP 协议与 Git 仓库进行交互的服务端支持。
4. send-pack
- 通过 Git 协议将对象推送到另一个仓库
- 解释: 通过 Git 协议将对象推送到另一个仓库。
- 使用方式:
git send-pack [--all] [--force] [--receive-pack=<git-receive-pack> | --exec=<git-receive-pack>] <repository>
,用于将本地仓库的对象推送到远程仓库。 - 导致结果: 将本地的提交和对象推送到指定的远程仓库,更新远程仓库的内容。
5. update-server-info
- 更新辅助信息文件以帮助非智能服务器
- 解释: 更新辅助信息文件以帮助非智能服务器。
- 使用方式:
git update-server-info
,在 Git 仓库中运行,用于更新辅助信息文件,以支持非智能服务器对 Git 仓库的访问。 - 导致结果: 更新服务器信息文件,以确保服务器能够提供对 Git 仓库的有效访问。
四、Internal Helpers
1. check-attr
- 显示 gitattributes 信息
- 解释: 显示与 gitattributes 文件相关的信息,这些文件定义了文件在 Git 中的处理方式,如何进行比较、合并以及其他属性。
- 使用方式:
git check-attr [options] <attributes> -- <pathspec>
,检查指定文件或路径的属性。 - 导致结果: 提供有关指定文件或路径的 gitattributes 属性的详细信息。
2. check-ignore
- 调试 gitignore / 排除文件
- 解释: 用于调试 gitignore 文件,查看哪些文件被 Git 忽略或排除。
- 使用方式:
git check-ignore [options] <pathspec>...
,检查指定路径下的文件是否被.gitignore文件忽略。 - 导致结果: 显示哪些文件由于匹配.gitignore规则而被忽略,帮助用户了解 Git 如何处理文件排除。
3. check-mailmap
- 显示联系人的规范名称和电子邮件地址
- 解释: 显示联系人的规范名称和电子邮件地址,可以用于查看提交历史中的作者和提交者信息。
- 使用方式:
git check-mailmap [options]
,检查并显示联系人信息。 - 导致结果: 提供联系人的规范化名称和电子邮件地址,帮助维护清晰的提交历史。
4. check-ref-format
- 确保引用名称格式正确
- 解释: 用于确保 Git 引用(reference)的名称格式正确。
- 使用方式:
git check-ref-format <refname>
,检查引用名称是否符合规范。 - 导致结果: 如果引用名称格式正确,不会有输出;否则,会显示错误信息。
5. column
- 以列的形式显示数据
-
解释:
column
命令用于以列的形式显示输入的数据,便于查看和分析。 -
使用方式:
git column [options]
,其中 options 是用于配置输出格式的参数。 -
导致结果: 将输入的数据按列排列,提高数据可读性。这对于处理大量信息或需要比较不同列之间的数据时非常有用。
6. credential
- 检索和存储用户凭据
-
解释:
credential
命令用于检索和存储用户凭据,这在与远程存储库进行交互时很常见,例如通过 HTTPS 访问。 -
使用方式:
git credential fill
:用于从标准输入获取凭据,并输出格式化的凭据信息。git credential approve
:用于批准凭据,并将它们存储在适当的位置,以便后续使用。
-
导致结果: 允许 Git 在需要时使用用户凭据,例如在推送到远程存储库时。
7. credential-cache
- 临时存储密码在内存中
-
解释:
credential-cache
命令是一个辅助工具,用于在内存中临时存储密码,以便在一定时间内免除再次输入密码的需要。 -
使用方式:
git credential-cache [options]
,其中 options 是用于配置存储时间等参数的选项。 -
导致结果: 提高了用户体验,避免了在短时间内的多次操作中重复输入密码的不便。
8. credential-store
- 在磁盘上存储凭据信息
-
解释:
credential-store
命令是一个辅助工具,用于将用户凭据信息存储在磁盘上,以便 Git 在需要时进行访问。 -
使用方式:
git credential-store [options]
,其中 options 是用于配置存储位置等参数的选项。 -
导致结果: 允许用户在访问需要凭据的操作时,通过读取磁盘上的存储信息来避免重新输入凭据。
9. fmt-merge-msg
- 生成合并提交消息
-
解释:
fmt-merge-msg
命令用于生成合并提交的消息,通常在执行合并操作后用于编辑或确认合并的提交信息。 -
使用方式:
git fmt-merge-msg [options]
,其中 options 是用于配置生成消息的选项。 -
导致结果: 提供一个格式化的合并提交消息,方便用户编辑或确认,记录合并操作的相关信息。
10. hook
- 运行 Git 钩子
- 解释: 运行 Git 钩子。
- 使用方式:
git hook <hook-name>
,用于触发指定名称的 Git 钩子。例如,git hook pre-commit
会执行预提交钩子。 - 导致结果: 执行与指定 Git 钩子相关联的脚本或动作,允许在特定的 Git 操作前或后执行自定义操作,如代码检查或测试。
11. interpret-trailers
- 添加或解析提交消息中的结构化信息
- 解释: 添加或解析提交消息中的结构化信息。
- 使用方式:
git interpret-trailers [options] <in-file>
,用于在提交消息中添加或解析结构化信息,例如 Signed-off-by 签名或 Change-Id 标识。 - 导致结果: 提供了一种在提交消息中嵌入元数据的方式,以便更容易跟踪和管理提交信息。
12. mailinfo
- 从单个电子邮件消息中提取补丁和作者信息
- 解释: 从单个电子邮件消息中提取补丁和作者信息。
- 使用方式:
git mailinfo < <mbox>
,从指定的电子邮件消息中提取补丁和作者信息,通常与git am
一起使用。 - 导致结果: 通过解析电子邮件消息,使得 Git 能够应用该消息中包含的补丁到代码库中。
13. mailsplit
- 简单的 UNIX mbox 分割程序
- 解释: 简单的 UNIX mbox 分割程序。
- 使用方式:
git mailsplit [options] < <mbox>
,用于将单个 UNIX mbox 文件拆分成多个单独的电子邮件文件。 - 导致结果: 方便地将一个包含多个邮件的 mbox 文件拆分成独立的邮件文件,以便进一步处理。
14. merge-one-file
- 与 git-merge-index 一起使用的标准辅助程序
- 解释: 与 git-merge-index 一起使用的标准辅助程序。
- 使用方式:
git merge-one-file <ancestor> <current> <other> [--stdout]
,用于在合并冲突时生成一个合并后的文件。 - 导致结果: 通过合并传递的三个版本的文件,生成一个包含冲突解决的文件,可用于提交。
15. patch-id
- 为补丁计算唯一标识
- 解释: 为补丁计算唯一标识。
- 使用方式:
git patch-id [<options>] [--] [<patch>]
,计算给定补丁的唯一标识,通常用于比较不同代码版本之间的变化。 - 导致结果: 提供了一种标识补丁变更的方式,用于快速比较和识别变更。
16. sh-i18n
- 用于 shell 脚本的 Git 国际化设置代码
- 解释: Git 的用于 shell 脚本的国际化设置代码。
- 使用方式: 通常在 Git 的 shell 脚本中使用,以支持多语言环境下的输出。
- 导致结果: 通过在脚本中使用这些设置,使得 Git 在不同语言环境下能够提供本地化的用户界面和消息。
17. sh-setup
- Git shell 脚本的通用设置代码
- 解释: Git shell 脚本的通用设置代码。
- 使用方式: 在 Git 的 shell 脚本中包含
git sh-setup
,以获得通用的设置和函数。 - 导致结果: 通过使用这些通用设置,简化和标准化了 Git 的 shell 脚本的开发和维护。
18. stripspace
- 移除不必要的空格
- 解释: 移除不必要的空格。
- 使用方式:
git stripspace < <file>
,用于清理文件中的空白字符,尤其是在提交消息等文本文件中。 - 导致结果: 通过去除文件中的不必要空格,使得代码库中的文本文件更加整洁和易于维护。这在提交消息等地方尤为有用,因为它有助于保持良好的代码风格和一致性。