NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 10.8 环境变量 Git 总是在一个bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 **全局行为** * `GIT_EXEC_PATH`:决定 Git 到哪找它的子程序 * `PREFIX`类似,除了用于系统级别的配置。 Git 在`$PREFIX/etc/gitconfig`查找此文件。 * `GIT_CONFIG_NOSYSTEM`:禁用系统级别的配置文件。 * `GIT_PAGER`:控制在命令行上显示多页输出的程序。 * `GIT_EDITOR`当用户需要编辑一些文本(比如提交信息)时, Git 会启动这个编辑器。 **版本库位置** * `GIT_DIR`:`.git`目录的位置。 如果这个没有设置, Git 会按照目录树逐层向上查找`.git`目录,直到到达`~`或`/`。 * `GIT_CEILING_DIRECTORIES`:控制查找`.git`目录的行为。 * `GIT_WORK_TREE`:非空版本库的工作目录的根路径。 如果没指定,就使用`$GIT_DIR`的父目录。 * `GIT_INDEX_FILE`:索引文件的路径。 * `GIT_OBJECT_DIRECTORY`:指定`.git/objects`目录的位置。 * `GIT_ALTERNATE_OBJECT_DIRECTORIES`:一个冒号分割的列表,用来告诉 Git 到哪里去找不在`GIT_OBJECT_DIRECTORY`目录中的对象。 **路径规则** * `GIT_GLOB_PATHSPECS`and`GIT_NOGLOB_PATHSPECS`控制通配符在路径规则中的默认行为。`GIT_GLOB_PATHSPECS`设置为 1,通配符表现为通配符;`GIT_NOGLOB_PATHSPECS`设置为 1,通配符仅匹配字面。 * `GIT_LITERAL_PATHSPECS`:禁用上面的两种行为;通配符将不能用,前缀覆盖也不能用。 * `GIT_ICASE_PATHSPECS`:所有的路径规格忽略大小写。 **提交** Git 提交对象的创建通常最后是由`git-commit-tree`来完成,`git-commit-tree`用这些环境变量作主要的信息源。 * `GIT_AUTHOR_NAME`:`author` 字段的可读的名字。 * `GIT_AUTHOR_EMAIL`:`author` 字段的邮件。 * `GIT_AUTHOR_DATE`:`author` 字段的时间戳。 * `GIT_COMMITTER_NAME`:`committer` 字段的可读的名字。 * `GIT_COMMITTER_EMAIL`:`committer` 字段的邮件。 * `GIT_COMMITTER_DATE`:`committer` 字段的时间戳。 **网络** * `GIT_CURL_VERBOSE`: 告诉 Git 显示所有由那个库产生的消息。 * `GIT_SSL_NO_VERIFY`:告诉 Git 不用验证 SSL 证书。 * 如果 Git 操作在网速低于`GIT_HTTP_LOW_SPEED_LIMIT`字节/秒,并且持续`GIT_HTTP_LOW_SPEED_TIME`秒以上的时间,Git 会终止那个操作。 * `GIT_HTTP_USER_AGENT`:设置 Git 在通过 HTTP 通讯时用到的 user-agent。 **比较和合并** * `GIT_DIFF_OPTS`:用来控制在`git diff`命令中显示的内容行数。 * `GIT_EXTERNAL_DIFF`:用来覆盖`diff.external`配置的值。 * `GIT_MERGE_VERBOSITY`:控制递归合并策略的输出。 允许的值有下面这些(默认值是 2): * 0 什么都不输出,除了可能会有一个错误信息。 * 1 只显示冲突。 * 2 还显示文件改变。 * 3 显示因为没有改变被跳过的文件。 * 4 显示处理的所有路径。 * 5 显示详细的调试信息。 **调试** * `GIT_TRACE`:控制常规跟踪。 * `GIT_TRACE_PACK_ACCESS`:控制访问打包文件的跟踪信息。 * `GIT_TRACE_PACKET`:打开网络操作包级别的跟踪信息。 * `GIT_TRACE_PERFORMANCE`:控制性能数据的日志打印。 * `GIT_TRACE_SETUP`:显示 Git 发现的关于版本库和交互环境的信息。 关于调试的环境变量可用值如下: * `true`,`1`,或 `2` – 跟踪类别写到标准错误输出。 * 以`/`开头的绝对路径 – 跟踪输出会被写到那个文件。 **其它** * `GIT_SSH`: Git 连接 SSH 主机时会用指定的程序代替`ssh`。 * `GIT_ASKPASS`:覆盖了`core.askpass`配置。 * `GIT_NAMESPACE`控制有命令空间的引用的访问,与`--namespace`标志是相同的。 * `GIT_FLUSH`:强制 Git 在向标准输出增量写入时使用没有缓存的 I/O。 * `GIT_REFLOG_ACTION`:可以指定描述性的文字写到 reflog 中。