1
1
=== 环境变量
2
2
3
- Git 总是在一个 `bash` shell 中运行,并用一些 shell 环境变量来决定它的运行方式。
4
- 有时候,知道它们是什么和它们如何让 Git 按照你想要的方式去运行会很有用。
5
- 这不是 Git 用到的所有环境变量的列表,但我们包含了大部分有用的 。
3
+ Git 总是在一个 `bash` shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。
4
+ 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。
5
+ 这里不会列出所有的 Git 环境变量,但我们会覆盖最有的那部分 。
6
6
7
7
8
8
==== 全局行为
9
9
10
- Git 的一些行为像通常的程序一样依赖环境变量 。
10
+ 像通常的程序一样, Git 的某些行为依赖于环境变量 。
11
11
12
12
*`GIT_EXEC_PATH`* 决定 Git 到哪找它的子程序 (像 `git-commit`, `git-diff` 等等)。
13
13
用可以用 `git --exec-path` 来查看当前设置.
14
14
15
15
*`HOME`* 通常不会考虑修改这个变量(太多其它东西都依赖它),这是 Git 查找全局配置文件的地方。
16
16
如果你想要一个真正的便携版 Git, 包括全局配置, 你可以在便携版 Git 的 shell 配置中覆盖 `HOME` 设置。
17
17
18
- *`PREFIX`* 类似的,但是这个是系统范围的配置用的 。
19
- Git 在 `$PREFIX/etc/gitconfig` 查找这个文件 .
18
+ *`PREFIX`* 也类似,除了用于系统范围配置 。
19
+ Git 在 `$PREFIX/etc/gitconfig` 查找此文件 .
20
20
21
21
*`GIT_CONFIG_NOSYSTEM`*, 如果设置了,就禁用系统范围的配置文件。
22
- 这在系统配置影响了你的命令,你又无权限修改的时候很有用 。
22
+ 这在系统配置影响了你的命令,而你又无权限修改的时候很有用 。
23
23
24
- *`GIT_PAGER`* 控制在命令行上显示多页输出时用的程序 。
24
+ *`GIT_PAGER`* 控制在命令行上显示多页输出的程序 。
25
25
如果这个没有设置,就会用 `PAGER` .
26
26
27
27
*`GIT_EDITOR`* 当用户需要编辑一些文本(比如提交信息)时, Git 会启动这个编辑器。
@@ -33,29 +33,29 @@ Git 的一些行为像通常的程序一样依赖环境变量。
33
33
Git 用了几个变量来确定它如何与当前版本库交互。
34
34
35
35
*`GIT_DIR`* 是 `.git` 目录的位置.
36
- 如果这个没有设置, Git 会按照目录树向上寻找 `.git` 目录,直到到达 `~` 或 `/`。
36
+ 如果这个没有设置, Git 会按照目录树逐层向上查找 `.git` 目录,直到到达 `~` 或 `/`。
37
37
38
38
*`GIT_CEILING_DIRECTORIES`* 控制查找 `.git` 目录的行为。
39
- 如果你访问加载很慢的目录(如在磁带上的目录或能过网络访问目录 ),你可能会想让 Git 早点停止尝试,尤其是在 shell 中快速编译时 。
39
+ 如果你访问加载很慢的目录(如那些磁带上的或通过网络连接访问的 ),你可能会想让 Git 早点停止尝试,尤其是 shell 构建时调用了 Git 。
40
40
41
- *`GIT_WORK_TREE`* 是非空版本库的工作目录的根的位置
41
+ *`GIT_WORK_TREE`* 是非空版本库的工作目录的根路径
42
42
如果没指定,就使用 `$GIT_DIR` 的父目录。
43
43
44
44
*`GIT_INDEX_FILE`* 是索引文件的路径(只有非空版本库有)
45
45
46
- *`GIT_OBJECT_DIRECTORY`* 用来指定通常放在 `.git/objects` 下面的目录的位置 。
46
+ *`GIT_OBJECT_DIRECTORY`* 用来指定 `.git/objects` 目录的位置 。
47
47
48
- *`GIT_ALTERNATE_OBJECT_DIRECTORIES`* 一个按克隆分开的列表 (格式类似 `/dir/one:/dir/two:…`) 用来告诉 Git 到哪里去找不在 `GIT_OBJECT_DIRECTORY` 目录中的对象.
49
- 如果你有很多项目有相同内容的大文件,这个可以用来避免存储很多备份 。
48
+ *`GIT_ALTERNATE_OBJECT_DIRECTORIES`* 一个冒号分割的列表 (格式类似 `/dir/one:/dir/two:…`) 用来告诉 Git 到哪里去找不在 `GIT_OBJECT_DIRECTORY` 目录中的对象.
49
+ 如果你有很多项目有相同内容的大文件,这个可以用来避免存储过多备份 。
50
50
51
51
52
- ==== 路径规格
52
+ ==== 路径规则
53
53
54
- 所谓 ``pathspec'' 是指你在 Git 中如何指定路径, 包括用通配符 。
54
+ 所谓 ``pathspec'' 是指你在 Git 中如何指定路径, 包括通配符的使用 。
55
55
它们会在 `.gitignore` 文件中用到,命令行里也会用到 (`git add *.c`)。
56
56
57
- *`GIT_GLOB_PATHSPECS` and `GIT_NOGLOB_PATHSPECS`* 控制通配符在路径规格中的默认行为 。
58
- 如果 `GIT_GLOB_PATHSPECS` 设置为 1, 通配符就是通配符 (这是默认设置); 如果 `GIT_NOGLOB_PATHSPECS` 设置为 1,通配符就是普通字符 。意思是 `*.c` 只会匹配 _文件名是_ ``*.c'' 的文件, 而不是以 `.c` 结尾的文件。
57
+ *`GIT_GLOB_PATHSPECS` and `GIT_NOGLOB_PATHSPECS`* 控制通配符在路径规则中的默认行为 。
58
+ 如果 `GIT_GLOB_PATHSPECS` 设置为 1, 通配符表现为通配符 (这是默认设置); 如果 `GIT_NOGLOB_PATHSPECS` 设置为 1,通配符仅匹配字面 。意思是 `*.c` 只会匹配 _文件名是_ ``*.c'' 的文件, 而不是以 `.c` 结尾的文件。
59
59
你可以在各个路径规格中用 `:(glob)` 或 `:(literal)` 开头来覆盖这个配置,如 `:(glob)*.c` 。
60
60
61
61
*`GIT_LITERAL_PATHSPECS`* 禁用上面的两种行为;通配符不能用,前缀覆盖也不能用。
@@ -65,7 +65,7 @@ Git 用了几个变量来确定它如何与当前版本库交互。
65
65
66
66
==== 提交
67
67
68
- Git 提交对象的创建通常最后是由 `git-commit-tree` 来完成, `git-commit-tree` 用这些环境变量作主要的信息源。 如果没有这些值就回退用配置的值 。
68
+ Git 提交对象的创建通常最后是由 `git-commit-tree` 来完成, `git-commit-tree` 用这些环境变量作主要的信息源。 仅当这些值不存在才回退到预置的值 。
69
69
70
70
*`GIT_AUTHOR_NAME`* 是 ``author'' 字段的人类可读的名字。
71
71
@@ -96,19 +96,19 @@ Git 使用 `curl` 库通过 HTTP来完成网络操作, 所以 *`GIT_CURL_VERBO
96
96
这些值会覆盖 `http.lowSpeedLimit` 和 `http.lowSpeedTime` 配置的值。
97
97
98
98
*`GIT_HTTP_USER_AGENT`* 设置 Git 在通过 HTTP 通讯时用到的 user-agent。
99
- 默认值类似 `git/2.0.0` 这个样子 。
99
+ 默认值类似于 `git/2.0.0` 。
100
100
101
101
102
102
==== 比较和合并
103
103
104
104
*`GIT_DIFF_OPTS`* 这个有点起错名字了
105
- 仅有的有效值是 `-u<n>` 或 `--unified=<n>`,用来控制在 `git diff` 命令中显示的内容行数。
105
+ 有效值仅支持 `-u<n>` 或 `--unified=<n>`,用来控制在 `git diff` 命令中显示的内容行数。
106
106
107
107
*`GIT_EXTERNAL_DIFF`* 用来覆盖 `diff.external` 配置的值。
108
- 如果设置了这个值, Git 会在调用 `git diff` 时调用指定的程序 。
108
+ 如果设置了这个值, 当执行Git `git diff` 时,Git 会调用该程序 。
109
109
110
110
*`GIT_DIFF_PATH_COUNTER`* and *`GIT_DIFF_PATH_TOTAL`* 在 `GIT_EXTERNAL_DIFF` 或 `diff.external` 指定的程序内容有用。
111
- 前面一个表示在一系列文件中哪个是被比较的 (从 1 开始),后面一个表示批量一次多少个文件 。 ( 原文: The former represents which file in a series is being diffed (starting with 1), and the latter is the total number of files in the batch. )
111
+ 前者表示在一系列文件中哪个是被比较的 (从 1 开始),后者表示每批文件的总数 。 ( 原文: The former represents which file in a series is being diffed (starting with 1), and the latter is the total number of files in the batch. )
112
112
113
113
*`GIT_MERGE_VERBOSITY`* 控制递归合并策略的输出。
114
114
允许的值有下面这些:
@@ -124,7 +124,7 @@ Git 使用 `curl` 库通过 HTTP来完成网络操作, 所以 *`GIT_CURL_VERBO
124
124
125
125
==== 调试
126
126
127
- 想 _真正地_ 知道 Git 是什么 ?
127
+ 想 _真正地_ 知道 Git 正在做什么 ?
128
128
Git 内置了相当完整的跟踪信息,你需要做的就是把它们打开。
129
129
这些变量的可以用的值如下:
130
130
@@ -212,7 +212,7 @@ Your branch is up-to-date with 'origin/master'.
212
212
nothing to commit, working directory clean
213
213
----
214
214
215
- ==== 其它的
215
+ ==== 其它
216
216
217
217
*`GIT_SSH`*, 如果指定了, Git 连接 SSH 主机时会用指定的程序代替 `ssh` 。
218
218
它会被用 `$GIT_SSH [username@]host [-p <port>] <command>` 的命令方式调用。
@@ -228,10 +228,10 @@ nothing to commit, working directory clean
228
228
229
229
*`GIT_FLUSH`* 当增量地向标准输出写入时可以强制 Git 使用没有缓存的 I/O。
230
230
设置为 1 让 Git 刷新更多, 设置为 0 则使所有的输出被缓存。
231
- 默认值(如果这个变量没有设置 )是根据活动和输出模式的不同选择合适的缓存方案。吕
231
+ 默认值(若此变量未设置 )是根据活动和输出模式的不同选择合适的缓存方案。
232
232
233
233
*`GIT_REFLOG_ACTION`* 让你可以指定描述性的文字写到 reflog 中。
234
- 这儿有一个栗子 :
234
+ 这有个例子 :
235
235
236
236
[source,console]
237
237
----
0 commit comments