简体中文 ▾ Topics ▾ Latest version ▾ git last updated in 2.52.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 提供的命令。 你可以通过 "git help" 命令了解更多关于单个 Git 命令的信息。 gitcli[7] 手册页面提供了命令行命令语法的概述。

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

选项

-v
--version

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

此选项在内部转换为 git version ... 并接受与git-version[1] 命令相同的选项。如果 --version 后接 --help 选项,则会优先展示 --version 选项的帮助信息。

-h
--help

打印概要和最常用的命令列表。如果给出选项 --all-a,则打印所有可用的命令。如果给出某个命令,该选项将调出该命令的手册页面。

因为 git --help ... 会在内部转换为 git help ...,所以有关其他可以控制手册页面显示方式的选项可以参阅 git-help[1] 来获得更详细的信息。

-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 设置为布尔值 true(就像配置文件中的 [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.<原始 URL 前缀>.insteadOf 这种变量的安全性,因为其敏感信息可能会包含在部分键中。

--exec-path[=<核心程序路径>]

安装 Git 核心程序的路径。 这也可以通过设置 GIT_EXEC_PATH 环境变量来控制。如果没有给出路径,git 会打印当前的设置,然后退出。

--html-path

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

--man-path

打印该版本 Git man page 的 manpath(参阅 man(1))之后退出。

--info-path

打印记录该版本 Git 信息文件的安装路径并退出。

-p
--paginate

如果标准输出是一个终端,则将所有的输出输出到 less(git 默认的分页器)(或者是 $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

Do not use replacement refs to replace Git objects. This is equivalent to exporting the GIT_NO_REPLACE_OBJECTS environment variable with any value. See git-replace[1] for more information.

--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" 模式匹配功能。这相当于将 GIT_GLOB_PATHSPECS 环境变量设置为 1。可以用路径规范字符 ":(literal)" 在单个路径规格上禁用 "glob" 模式匹配功能。

--noglob-pathspecs

在所有路径规范中添加 "literal" 模式匹配功能。这相当于将 GIT_NOGLOB_PATHSPECS 环境变量设为 1。可以使用路径规范字符 ":(glob)" 在单个路径规范上启用通配符模式匹配功能。

--icase-pathspecs

在所有的路径规范中添加 "icase" 模式匹配功能。这相当于将 GIT_ICASE_PATHSPECS 环境变量设置为 1

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

按组列出命令。这是一个内部/实验性的选项,将来可能会改变或删除。支持的组有:buildins、parseopt(使用 parse-options 的内置命令)、main(libexec 目录下的所有命令)、others( $PATH 中其他带有 git- 前缀的命令)、list-<目录>(参阅 command-list.txt 中的目录【原文是这么说的,但是下面那个 Git 命令章节已经列出了所有命令列表】)、nohelpers(排除辅助命令)、alias 和 config(在配置 completion.commands 中检索命令列表)

--attr-source=<树对象>

从 <树对象> 而不是工作区中读取 gitattributes。参见 gitattributes[5]。这相当于设置 GIT_ATTR_SOURCE 环境变量。

Git 命令

我们把 Git 分为上层封装命令(“瓷件”)和底层核心命令(“管件”)。

上层封装命令(瓷件)

我们将瓷件命令分为主要命令和一些辅助性的用户工具。

主要瓷件命令

Warning

Missing zh_HANS-CN/{build_dir}/cmds-mainporcelain.adoc

See original version for this content.

辅助命令

操控:

Warning

Missing zh_HANS-CN/{build_dir}/cmds-ancillarymanipulators.adoc

See original version for this content.

审阅:

Warning

Missing zh_HANS-CN/{build_dir}/cmds-ancillaryinterrogators.adoc

See original version for this content.

与其他应用交互

这些命令是为了与外部 SCM(源代码管理工具)以及通过电子邮件与其他人进行交互。

Warning

Missing zh_HANS-CN/{build_dir}/cmds-foreignscminterface.adoc

See original version for this content.