Git 中文参考(一)(5)https://developer.aliyun.com/article/1565874
比较 commit 和 index;
git diff HEAD:file1 file2
比较对象和工作树实体;
git diff --no-index a b
比较两个非 git 的东西(1)和(2)。
diff.noprefix
如果设置, git diff 不显示任何源或目标前缀。
diff.orderFile
指示如何在差异中订购文件的文件。有关详细信息,请参阅 - git-diff [1] 的 -O 选项。如果diff.orderFile
是相对路径名,则将其视为相对于工作树顶部的相对路径名。
diff.renameLimit
执行复制/重命名检测时要考虑的文件数;相当于 git diff 选项-l
。如果关闭重命名检测,此设置无效。
diff.renames
Git 是否以及如何检测重命名。如果设置为“false”,则禁用重命名检测。如果设置为“true”,则启用基本重命名检测。如果设置为“copies”或“copy”,Git 也会检测副本。默认为 true。请注意,这仅影响 git diff Porcelain,如 git-diff [1] 和 git-log [1] ,而不是[等低级命令] git-diff-files [1]](https://git-scm.com/docs/git-diff-files) 。
diff.suppressBlankEmpty
一个布尔值,用于禁止在每个空输出行之前打印空格的标准行为。默认为 false。
diff.submodule
指定显示子模块差异的格式。 “short”格式只显示范围开头和结尾的提交名称。 “log”格式列出 git-submodule [1] summary
范围内的提交。 “diff”格式显示子模块更改内容的内联差异。默认为“short”。
diff.wordRegex
POSIX 扩展正则表达式用于在执行逐字差异计算时确定什么是“单词”。与正则表达式匹配的字符序列是“单词”,所有其他字符都是可忽略的空格。
diff.<driver>.command
自定义 diff 驱动程序命令。有关详细信息,请参阅 gitattributes [5] 。
diff.<driver>.xfuncname
diff 驱动程序应该用来识别 hunk 标头的正则表达式。也可以使用内置模式。有关详细信息,请参阅 gitattributes [5] 。
diff.<driver>.binary
将此选项设置为 true 可使 diff 驱动程序将文件视为二进制文件。有关详细信息,请参阅 gitattributes [5] 。
diff.<driver>.textconv
diff 驱动程序应调用的命令,以生成文本转换后的文件版本。转换的结果用于生成人类可读的差异。有关详细信息,请参阅 gitattributes [5] 。
diff.<driver>.wordRegex
diff 驱动程序用于拆分行中单词的正则表达式。有关详细信息,请参阅 gitattributes [5] 。
diff.<driver>.cachetextconv
将此选项设置为 true 可使 diff 驱动程序缓存文本转换输出。有关详细信息,请参阅 gitattributes [5] 。
diff.tool
控制 git-difftool [1] 使用哪种 diff 工具。此变量将覆盖merge.tool
中配置的值。下面的列表显示了有效的内置值。任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool..cmd 变量。
diff.guitool
当指定-g/-gui 标志时,控制 git-difftool [1] 使用哪个 diff 工具。此变量将覆盖merge.guitool
中配置的值。下面的列表显示了有效的内置值。任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool..cmd 变量。
- araxis
- bc
- bc3
- codecompare
- deltawalker
- diffmerge
- diffuse
- ecmerge
- emerge
- examdiff
- guiffy
- gvimdiff
- gvimdiff2
- gvimdiff3
- kdiff3
- kompare
- meld
- 了 opendiff
- p4merge
- tkdiff
- vimdiff
- vimdiff2
- vimdiff3
- winmerge
- xxdiff
diff.indentHeuristic
将此选项设置为true
以启用实验启发式算法,可以移动差异块边界以使补丁更易于阅读。
diff.algorithm
选择差异算法。变体如下:
default, myers
基本的贪心差异算法。目前,这是默认值。
minimal
花些额外的时间来确保产生尽可能小的差异。
patience
生成补丁时使用“耐心差异”算法。
histogram
该算法将耐心算法扩展为“支持低发生的共同元素”。
diff.wsErrorHighlight
突出显示差异的context
,old
或new
行中的空白错误。多个值用逗号分隔,none
重置先前的值,default
将列表重置为new
,all
是old,new,context
的简写。空白错误用color.diff.whitespace
着色。命令行选项--ws-error-highlight=
会覆盖此设置。
diff.colorMoved
如果设置为有效的或真值,则差异中的移动线的颜色会有所不同,有效模式的详细信息请参见 - [git-diff [1]中的颜色移动 。如果只是设置为 true,将使用默认颜色模式。设置为 false 时,移动的线条不会着色。
diff.colorMovedWS
当使用例如移动的线条着色时diff.colorMoved
设置,此选项控制如何处理有效模式的详细信息,请参阅 git-diff [1] 中的 –color-moved-ws 。
difftool.<tool>.path
覆盖给定工具的路径。如果您的工具不在 PATH 中,这非常有用。
difftool.<tool>.cmd
指定用于调用指定 diff 工具的命令。在 shell 中使用以下变量计算指定的命令: LOCAL 设置为包含 diff 前映像内容的临时文件的名称, REMOTE 设置为包含 diff 后映像内容的临时文件的名称。
difftool.prompt
在每次调用 diff 工具之前提示。
fastimport.unpackLimit
如果 git-fast-import [1] 导入的对象数低于此限制,则对象将被解压缩为松散的目标文件。但是,如果导入的对象数等于或超过此限制,则包将作为包存储。从快速导入存储包可以使导入操作更快完成,尤其是在慢速文件系统上。如果未设置,则使用transfer.unpackLimit
的值。
fetch.recurseSubmodules
此选项可以设置为布尔值,也可以设置为 on-demand。将其设置为布尔值会将 fetch 和 pull 的行为更改为无条件地在设置为 true 时递归到子模块或在设置为 false 时完全不递归。当设置为 on-demand(默认值)时,fetch 和 pull 将仅在其超级项目检索更新子模块引用的提交时递归到填充的子模块中。
fetch.fsckObjects
如果设置为 true,git-fetch-pack 将检查所有获取的对象。有关已检查的内容,请参阅transfer.fsckObjects
。默认为 false。如果未设置,则使用transfer.fsckObjects
的值。
fetch.fsck.<msg-id>
行为类似fsck.
,但由 git-fetch-pack [1] 代替 git-fsck [1] 使用。有关详细信息,请参阅fsck.
文档。
fetch.fsck.skipList
行为类似fsck.skipList
,但由 git-fetch-pack [1] 代替 git-fsck [1] 使用。有关详细信息,请参阅fsck.skipList
文档。
fetch.unpackLimit
如果通过 Git 本机传输获取的对象数低于此限制,则对象将解压缩为松散的对象文件。但是,如果接收到的对象的数量等于或超过此限制,则在添加任何丢失的 delta 基础之后,接收的包将作为包存储。从推送中存储包可以使推送操作更快完成,尤其是在慢速文件系统上。如果未设置,则使用transfer.unpackLimit
的值。
fetch.prune
如果为 true,则 fetch 将自动表现为在命令行上给出--prune
选项。另请参阅remote..prune
和 git-fetch [1] 的 PRUNING 部分。
fetch.pruneTags
如果为 true,则 fetch 将自动表现为修剪时提供refs/tags/*:refs/tags/*
refspec,如果尚未设置的话。这允许设置此选项和fetch.prune
以保持与上游引用的 1 = 1 映射。另请参见[HTD0] git-fetch [1] 的remote..pruneTags
和 PRUNING 部分。
fetch.output
控制如何打印 ref 更新状态。有效值为full
和compact
。默认值为full
。有关详细信息,请参见 git-fetch [1] 中的 OUTPUT 部分。
fetch.negotiationAlgorithm
控制在协商服务器发送的包文件的内容时如何发送有关本地存储库中的提交的信息。设置为“skipping”以使用跳过提交的算法以便更快地收敛,但可能导致大于必要的 packfile;默认值为“default”,它指示 Git 使用从不跳过提交的默认算法(除非服务器已确认它或其后代之一)。未知值将导致 git fetch 错误输出。
另请参见 git-fetch [1] 的--negotiation-tip
选项。
format.attach
启用多部分/混合附件作为 format-patch 的默认设置。该值也可以是双引号字符串,它将启用附件作为默认值,并将值设置为边界。请参阅 git-format-patch [1] 中的–attach 选项。
format.from
提供格式化补丁的--from
选项的默认值。接受布尔值,或名称和电子邮件地址。如果为 false,则 format-patch 默认为--no-from
,直接在修补程序邮件的“发件人:”字段中使用提交作者。如果为 true,则 format-patch 默认为--from
,在补丁邮件的“From:”字段中使用您的提交者标识,如果不同,则在补丁邮件正文中包含“From:”字段。如果设置为非布尔值,则 format-patch 使用该值而不是您的提交者标识。默认为 false。
format.numbered
一个布尔值,可以启用或禁用补丁主题中的序列号。它默认为“auto”,仅当有多个补丁时启用它。可以通过将所有消息设置为“true”或“false”来启用或禁用它。请参见 git-format-patch [1] 中的–numbered 选项。
format.headers
要通过邮件提交的修补程序中包含的其他电子邮件标头。见 git-format-patch [1] 。
format.to format.cc
其他收件人包含在通过邮件提交的补丁中。请参阅 git-format-patch [1] 中的–to 和–cc 选项。
format.subjectPrefix
format-patch 的默认设置是输出带有 [PATCH] 主题前缀的文件。使用此变量更改该前缀。
format.signature
format-patch 的默认设置是输出包含 Git 版本号的签名。使用此变量可更改该默认值。将此变量设置为空字符串(“”)以抑制签名生成。
format.signatureFile
与 format.signature 类似,但此变量指定的文件内容将用作签名。
format.suffix
format-patch 的默认设置是输出后缀为.patch
的文件。使用此变量更改该后缀(如果需要,请确保包含点)。
format.pretty
log/show/whatchanged 命令的默认漂亮格式,参见 git-log [1] , git-show [1] , git -whatchanged [1] 。
format.thread
git format-patch 的默认线程样式。可以是布尔值,也可以是shallow
或deep
。 shallow
线程使每个邮件都回复到系列的头部,其中头部是从求职信,--in-reply-to
和第一个补丁邮件中按顺序选择的。 deep
线程使每封邮件都回复上一封邮件。 true 布尔值与shallow
相同,false 值禁用线程。
format.signOff
一个布尔值,允许您默认启用 format-patch 的-s/--signoff
选项。 **注意:**将 Signed-off-by:行添加到补丁应该是一种有意识的行为,这意味着您证明您有权在相同的开源许可下提交此作品。有关进一步的讨论,请参阅 SubmittingPatches 文档。
format.coverLetter
一个布尔值,控制在调用 format-patch 时是否生成封面字母,但另外可以设置为“auto”,仅在有多个补丁时生成封面字母。
format.outputDirectory
设置自定义目录以存储生成的文件而不是当前工作目录。
format.useAutoBase
一个布尔值,允许您默认启用 format-patch 的--base=auto
选项。
filter.<driver>.clean
用于在签入时将工作树文件的内容转换为 blob 的命令。有关详细信息,请参阅 gitattributes [5] 。
filter.<driver>.smudge
该命令用于在结帐时将 blob 对象的内容转换为 worktree 文件。有关详细信息,请参阅 gitattributes [5] 。
fsck.<msg-id>
在 fsck 期间,git 可能会发现遗留数据的问题,这些问题不会被当前版本的 git 生成,如果设置了transfer.fsckObjects
,则不会通过网络发送。此功能旨在支持使用包含此类数据的旧存储库。
设置fsck.
将由 git-fsck [1] 选取,但要接受推送此类数据集receive.fsck.
,或者克隆或获取它设置fetch.fsck.
。
文档的其余部分为了简洁起见讨论了fsck.*
,但同样适用于相应的receive.fsck.*
和fetch. .*
。变量。
与color.ui
和core.editor
等变量不同,receive.fsck.
和fetch.fsck.
变量如果未设置则不会回退到fsck.
配置。要在不同情况下统一配置相同的 fsck 设置,所有这三个设置都必须设置为相同的值。
设置fsck.
时,可以通过配置fsck.
设置将错误切换为警告,反之亦然,其中
是 fsck 消息 ID,值为error
,warn
或ignore
之一。为方便起见,fsck 使用消息 ID 作为错误/警告的前缀,例如: “missingEmail:无效的作者/提交者行 - 缺少电子邮件”意味着设置fsck.missingEmail = ignore
将隐藏该问题。
- 一般来说,最好枚举
fsck.skipList
存在问题的现有对象,而不是列出这些有问题的对象共享被忽略的破坏类型,因为后者将允许忽略相同破坏的新实例。 - 设置未知
fsck.
值将导致 fsck 死亡,但对receive.fsck.
和fetch.fsck.
执行相同操作只会导致 git 发出警告。
fsck.skipList
指向已知以非致命方式破坏的对象名称列表(即每行一个未缩写的 SHA-1)的路径,应该被忽略。在 Git 2.20 和更高版本的注释(#)的版本中,空行以及任何前导和尾随空格都将被忽略。除了每行 SHA-1 之外的所有内容都会在旧版本上出错。
尽管早期提交包含可以安全忽略的错误(例如无效的提交者电子邮件地址),但应该接受已建立的项目时此功能非常有用。注意:使用此设置无法跳过损坏的对象。
与fsck.
类似,此变量具有相应的receive.fsck.skipList
和fetch.fsck.skipList
变体。
与color.ui
和core.editor
等变量不同,receive.fsck.skipList
和fetch.fsck.skipList
变量如果未设置则不会回退到fsck.skipList
配置。要在不同情况下统一配置相同的 fsck 设置,所有这三个设置都必须设置为相同的值。
旧版本的 Git(2.20 之前)记录了对象名称列表应该排序。这绝不是必需的,对象名称可以按任何顺序出现,但是在读取列表时,我们跟踪列表是否为了内部二进制搜索实现的目的而排序,这可以使用已排序的列表保存自己的一些工作。除非你有一个庞大的列表,否则你没有理由不去预先对列表进行排序。在 Git 版本 2.20 之后使用哈希实现,因此现在没有理由对列表进行预排序。
gc.aggressiveDepth
git gc -aggressive 使用的 delta 压缩算法中使用的深度参数。默认为 50。
gc.aggressiveWindow
git gc -aggressive 使用的 delta 压缩算法中使用的窗口大小参数。默认为 250。
gc.auto
当存储库中存在大约多个松散对象时,git gc --auto
将打包它们。一些 Porcelain 命令使用此命令不时执行轻量级垃圾收集。默认值为 6700。将此值设置为 0 将禁用它。
gc.autoPackLimit
当存储库中没有标记*.keep
文件的多个包时,git gc --auto
会将它们合并为一个更大的包。默认值为 50。将此值设置为 0 将禁用它。
gc.autoDetach
如果系统支持,则立即返回git gc --auto
并在后台运行。默认为 true。
gc.bigPackThreshold
如果非零,则在运行git gc
时保留所有大于此限制的包。这与--keep-base-pack
非常相似,只是保留了满足阈值的所有包,而不仅仅是基本包。默认为零。支持 k , m 或 g 的通用单位后缀。
请注意,如果保留包的数量大于 gc.autoPackLimit,则忽略此配置变量,将重新打包除基本包之外的所有包。在此之后,包的数量应该低于 gc.autoPackLimit,并且应该再次遵守 gc.bigPackThreshold。
gc.writeCommitGraph
如果为 true,那么当 git-gc [1] 运行时,gc 将重写提交图文件。当使用 git-gc [1] –auto 时,如果需要内务处理,则会更新提交图。默认值为 false。有关详细信息,请参阅 git-commit-graph [1]。
gc.logExpiry
如果文件 gc.log 存在,那么git gc --auto
将打印其内容并退出状态为零而不是运行,除非该文件超过 gc.logExpiry old。默认为“1.day”。有关指定其值的更多方法,请参见gc.pruneExpire
。
gc.packRefs
在存储库中运行git pack-refs
会使其在 1.5.1.2 之前的 Git 版本上通过 HTTP 等哑传输不可克隆。此变量确定 git gc 是否运行git pack-refs
。这可以设置为notbare
以在所有非裸存储库中启用它,或者可以将其设置为布尔值。默认值为true
。
gc.pruneExpire
当 git gc 运行时,它将调用 prune --expire 2.weeks.ago 。使用此配置变量覆盖宽限期。值“now”可用于禁用此宽限期并始终立即修剪不可到达的对象,或者“never”可用于抑制修剪。当 git gc 与写入存储库的另一个进程同时运行时,此功能有助于防止损坏;请参阅 git-gc [1] 的“注意”部分。
gc.worktreePruneExpire
当 git gc 运行时,它调用 git worktree prune --expire 3.months.ago 。此配置变量可用于设置不同的宽限期。值“now”可以用于禁用宽限期并立即修剪$GIT_DIR/worktrees
,或者“never”可以用于抑制修剪。
gc.reflogExpire
gc.<pattern>.reflogExpire
git reflog expire 删除比此时更早的 reflog 条目;默认为 90 天。值“now”立即使所有条目到期,并且“never”完全抑制到期。使用“” (例如“refs/stash”)设置中间仅适用于与匹配的引用。
gc.reflogExpireUnreachable
gc.<pattern>.reflogExpireUnreachable
git reflog expire 删除比此时更早的 reflog 条目,并且无法从当前提示访问;默认为 30 天。值“now”立即使所有条目到期,并且“never”完全抑制到期。使用“” (例如,“refs/stash”)在中间,该设置仅适用于与匹配的引用。
gc.rerereResolved
当 git rerere gc 运行时,您之前解决的冲突合并的记录将保留这么多天。您还可以使用更易读的“1.month.ago”等。默认值为 60 天。见 git-rerere [1] 。
gc.rerereUnresolved
当 git rerere gc 运行时,您未解决的冲突合并的记录将保留这么多天。您还可以使用更易读的“1.month.ago”等。默认值为 15 天。见 git-rerere [1] 。
gitcvs.commitMsgAnnotation
将此字符串附加到每个提交消息。设置为空字符串以禁用此功能。默认为“via git-CVS emulator”。
gitcvs.enabled
是否为此存储库启用了 CVS 服务器接口。参见 git-cvsserver [1] 。
gitcvs.logFile
CVS 服务器接口良好的日志文件的路径…记录各种东西。参见 git-cvsserver [1] 。
gitcvs.usecrlfattr
如果为 true,服务器将查找文件的行尾转换属性以确定要使用的-k
模式。如果属性强制 Git 将文件视为文本,则-k
模式将保留为空,因此 CVS 客户端会将其视为文本。如果它们禁止文本转换,则将使用 -kb 模式设置该文件,该模式将抑制客户端可能执行的任何换行。如果属性不允许确定文件类型,则使用gitcvs.allBinary
。参见 gitattributes [5] 。
gitcvs.allBinary
如果gitcvs.usecrlfattr
无法解析要使用的正确 -kb 模式,则使用此选项。如果为 true,则所有未解析的文件将以模式 -kb 发送到客户端。这会导致客户端将它们视为二进制文件,这会抑制任何换行,否则可能会执行此操作。或者,如果将其设置为“guess”,则检查文件的内容以确定它是否为二进制,类似于core.autocrlf
。
gitcvs.dbName
git-cvsserver 用于缓存从 Git 存储库派生的修订信息的数据库。确切的含义取决于使用的数据库驱动程序,对于 SQLite(这是默认驱动程序),这是一个文件名。支持变量替换(详见 git-cvsserver [1] )。不得包含分号(;
)。默认值:%Ggitcvs。%m.sqlite
gitcvs.dbDriver
使用 Perl DBI 驱动程序。您可以在此处为此指定任何可用的驱动程序,但它可能不起作用。 git-cvsserver 使用 DBD :: SQLite 进行测试,报告与 DBD :: Pg 一起使用,报告不是与 DBD 一起使用:: mysql 。实验功能。可能不包含双冒号(:
)。默认值: SQLite 。参见 git-cvsserver [1] 。
gitcvs.dbUser, gitcvs.dbPass
数据库用户和密码。仅在设置gitcvs.dbDriver
时有用,因为 SQLite 没有数据库用户和/或密码的概念。 gitcvs.dbUser 支持变量替换(详见 git-cvsserver [1] )。
gitcvs.dbTableNamePrefix
数据库表名称前缀。在所使用的任何数据库表的名称前面,允许将单个数据库用于多个存储库。支持变量替换(详见 git-cvsserver [1] )。任何非字母字符都将替换为下划线。
除gitcvs.usecrlfattr
和gitcvs.allBinary
之外的所有 gitcvs 变量也可以指定为 gitcvs。。 (其中 access_method 是“ext”和“pserver”之一)使它们仅适用于给定的访问方法。
gitweb.category
gitweb.description
gitweb.owner
gitweb.url
有关说明,请参见 gitweb [1] 。
gitweb.avatar
gitweb.blame
gitweb.grep
gitweb.highlight
gitweb.patches
gitweb.pickaxe
gitweb.remote_heads
gitweb.showSizes
gitweb.snapshot
有关说明,请参见 gitweb.conf [5] 。
grep.lineNumber
如果设置为 true,则默认启用-n
选项。
grep.column
如果设置为 true,则默认启用--column
选项。
grep.patternType
设置默认匹配行为。使用 basic ,extended,fixed 或 perl 的值将启用--basic-regexp
,--extended-regexp
,--fixed-strings
,或--perl-regexp
选项相应,而值 default 将返回默认匹配行为。
grep.extendedRegexp
如果设置为 true,则默认启用--extended-regexp
选项。当grep.patternType
选项设置为 default 以外的值时,将忽略此选项。
grep.threads
要使用的 grep 工作线程数。有关详细信息,请参阅 git-grep [1] 中的grep.threads
。
grep.fallbackToNoIndex
如果设置为 true,如果 git grep 在 git 存储库之外执行,则回退到 git grep --no-index。默认为 false。
gpg.program
在制作或验证 PGP 签名时,使用此自定义程序而不是$PATH
上的“gpg
”。程序必须支持与 GPG 相同的命令行界面,即验证分离的签名,运行“gpg --verify $file - <$signature
”,并且程序预期通过退出代码 0 发出良好的签名,并生成 ASCII -armored 分离签名,“gpg -bsau $key
”的标准输入被输入要签名的内容,并且程序应该将结果发送到其标准输出。
gpg.format
指定使用--gpg-sign
进行签名时要使用的密钥格式。默认值为“openpgp”,另一个可能的值为“x509”。
gpg.<format>.program
Git 中文参考(一)(7)https://developer.aliyun.com/article/1565876