Git 中文参考(一)(1)https://developer.aliyun.com/article/1565870
同步存储库
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-parse-remote[1]
有助于解析远程存储库访问参数的例程
git-receive-pack[1]
接收推入存储库的内容
git-shell[1]
受限制的登录 shell 仅用于 Git SSH 访问
git-upload-archive[1]
将存档发送回 git-archive
git-upload-pack[1]
将对象打包回 git-fetch-pack
内部帮助器命令
这些是其他命令使用的内部帮助程序命令;最终用户通常不直接使用它们。
git-check-attr[1]
显示 gitattributes 信息
git-check-ignore[1]
调试 gitignore / exclude 文件
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-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 使用简单的文本格式来存储每个存储库和每个用户的自定义项。这样的配置文件可能如下所示:
# # 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] 。
标识符术语
<object>
指示任何类型对象的对象名称。
<blob>
表示 blob 对象名称。
<tree>
表示树对象名称。
<commit>
表示提交对象名称。
<tree-ish>
表示树,提交或标记对象名称。采用< tree-ish>的命令参数最终想要在<树>上运行。对象但自动解除引用< commit>和< tag>指向< tree>的对象。
<commit-ish>
表示提交或标记对象名称。采用< commit-ish>的命令参数最终想要在< commit>上运行对象但自动解除引用< tag>指向< commit>的对象。
<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 命令使用以下环境变量:
Git 存储库
这些环境变量适用于 _ 所有 _ 核心 Git 命令。 Nb:值得注意的是,它们可能被 SCMS 上面的 GMS 使用/覆盖,所以如果使用外部前端则要小心。
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
如果将此变量设置为路径,则通常在中的非工作树文件将从此路径中获取。特定于工作树的文件(如
或索引)取自GITDIR中的非工作树文件将从此路径中获取。特定于工作树的文件(如HEAD或索引)取自 GIT_DIR 中的非工作树文件将从此路径中获取。特定于工作树的文件(如 HEAD 或索引)取自 GIT_DIR。有关详细信息,请参阅 gitrepository-layout [5] 和 git-worktree [1] 。此变量的优先级低于其他路径变量,例如 GIT_INDEX_FILE,GIT_OBJECT_DIRECTORY …
Git 承诺
GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE
EMAIL
Git Diffs
GIT_DIFF_OPTS
只有有效设置为“–unified = ??”或者“-u ??”设置创建统一差异时显示的上下文行数。这优先于 Git diff 命令行上传递的任何“-U”或“–unified”选项值。
GIT_EXTERNAL_DIFF
设置环境变量GIT_EXTERNAL_DIFF
时,将调用由其命名的程序,而不是上面描述的 diff 调用。对于添加,删除或修改的路径,使用 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-hexdigit SHA-1 哈希,
<old|new>-mode
是文件模式的八进制表示。
文件参数可以指向用户的工作文件(例如“git-diff-files”中的new-file
),/dev/null
(例如添加新文件时的old-file
)或临时文件(例如old-file
)在索引中)。 GIT_EXTERNAL_DIFF
不应该担心取消链接临时文件—当GIT_EXTERNAL_DIFF
退出时它会被删除。
对于未合并的路径,使用 1 参数< path>调用GIT_EXTERNAL_DIFF
。
对于每个路径GIT_EXTERNAL_DIFF
被调用,设置了两个环境变量GIT_DIFF_PATH_COUNTER
和GIT_DIFF_PATH_TOTAL
。
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_EDITOR
此环境变量会覆盖$EDITOR
和$VISUAL
。当在交互模式下启动编辑器时,它由几个 Git 命令使用。另请参阅 git-var [1] 和 git-config [1] 中的core.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。此变量会覆盖用于相同目的的配置设置ssh.variant
。
GIT_ASKPASS
如果设置了此环境变量,则需要获取密码或密码短语(例如,用于 HTTP 或 IMAP 身份验证)的 Git 命令将使用适当的提示作为命令行参数调用此程序,并从其 STDOUT 读取密码。另请参见 git-config [1] 中的core.askPass
选项。
GIT_TERMINAL_PROMPT
如果此环境变量设置为0
,则 git 将不会在终端上提示(例如,在请求 HTTP 身份验证时)。
GIT_CONFIG_NOSYSTEM
是否跳过从系统范围$(prefix)/etc/gitconfig
文件中读取设置。此环境变量可与$HOME
和$XDG_CONFIG_HOME
一起用于为挑剔脚本创建可预测的环境,或者您可以临时设置它以避免在等待具有足够权限的人员使用错误的/etc/gitconfig
文件时进行修复。
GIT_FLUSH
如果此环境变量设置为“1”,则命令如 git blame (在增量模式下), git rev-list , git log , git check-attr 和 git check-ignore 将在刷新每条记录后强制刷新输出流。如果此变量设置为“0”,则将使用完全缓冲的 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_SETUP
在 Git 完成其设置阶段后,启用跟踪消息打印.git,工作树和当前工作目录。有关可用的跟踪输出选项,请参见GIT_TRACE
。
GIT_TRACE_SHALLOW
启用跟踪消息,以帮助调试获取/克隆浅存储库。有关可用的跟踪输出选项,请参见GIT_TRACE
。
GIT_TRACE_CURL
启用 git 传输协议的所有传入和传出数据(包括描述性信息)的卷曲完整跟踪转储。这类似于在命令行上执行 curl --trace-ascii
。此选项会覆盖设置GIT_CURL_VERBOSE
环境变量。有关可用的跟踪输出选项,请参见GIT_TRACE
。
GIT_TRACE_CURL_NO_DATA
启用卷曲跟踪时(参见上面的GIT_TRACE_CURL
),不要转储数据(即只转储信息行和标题)。
GIT_REDACT_COOKIES
这可以设置为以逗号分隔的字符串列表。当启用卷曲跟踪时(参见上面的GIT_TRACE_CURL
),每当转储客户端发送的“Cookies:”头时,其密钥在该列表中的 cookie(区分大小写)的值将被编辑。
GIT_LITERAL_PATHSPECS
将此变量设置为1
将导致 Git 按字面处理所有 pathspec,而不是作为 glob 模式。例如,运行GIT_LITERAL_PATHSPECS=1 git log -- '*.c'
将搜索触及路径*.c
的提交,而不是 glob *.c
匹配的任何路径。如果要向 Git 提供文字路径(例如,之前通过git ls-tree
,--raw
diff 输出等给你的路径),你可能会想要这个。
GIT_GLOB_PATHSPECS
将此变量设置为1
将导致 Git 将所有 pathspecs 视为 glob 模式(也称为“glob”魔术)。
GIT_NOGLOB_PATHSPECS
将此变量设置为1
将导致 Git 将所有 pathspecs 视为文字(也称为“文字”魔法)。
GIT_ICASE_PATHSPECS
将此变量设置为1
将导致 Git 将所有 pathspec 视为不区分大小写。
GIT_REFLOG_ACTION
更新 ref 时,除了 ref 的旧值和新值之外,还会创建 reflog 条目以跟踪 ref 更新的原因(通常是更新 ref 的高级命令的名称) 。脚本化的 Porcelain 命令可以使用git-sh-setup
中的 set_reflog_action 辅助函数将其名称设置为此变量,当它被最终用户作为顶级命令调用时,将记录在 reflog 的主体中。
GIT_REF_PARANOIA
如果设置为1
,则在迭代 refs 列表时包含损坏或命名错误的引用。在正常的,未损坏的存储库中,这没有任何作用。但是,启用它可能有助于 git 在存在损坏的 refs 的情况下检测并中止某些操作。当执行像 git-prune [1] 这样的破坏性操作时,Git 会自动设置此变量。您不应该自己设置它,除非您想要确保操作已触及每个参考(例如,因为您正在克隆存储库以进行备份)。
GIT_ALLOW_PROTOCOL
如果设置为以冒号分隔的协议列表,则表现为protocol.allow
设置为never
,并且每个列出的协议都将protocol.<name>.allow
设置为always
(覆盖任何现有配置)。换句话说,将不允许任何未提及的协议(即,这是白名单,而不是黑名单)。有关详细信息,请参阅 git-config [1] 中protocol.allow
的说明。
GIT_PROTOCOL_FROM_USER
设置为 0 以防止 fetch / push / clone 使用的协议配置为user
状态。这对于限制来自不受信任的存储库的递归子模块初始化或对于将可能不受信任的 URL 提供给 git 命令的程序非常有用。有关详细信息,请参阅 git-config [1] 。
GIT_PROTOCOL
仅限内部使用。用于握线协议。包含一个冒号 : 分隔的键列表,其中包含可选值 _ 键[= value]_ 。必须忽略未知键和值的存在。
GIT_OPTIONAL_LOCKS
如果设置为0
,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 (deprecated)
如果设置为yes
,则在(缩写)SHA-1 值后面打印省略号。这会影响分离的 HEAD( git-checkout [1] )和原始 diff 输出( git-diff [1] )的指示。在所提到的情况下打印省略号不再被认为是足够的,并且在可预见的将来可能会删除对它的支持(以及变量)。
Git 中文参考(一)(3)https://developer.aliyun.com/article/1565872