Git 中文参考(七)(2)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Git 中文参考(七)

Git 中文参考(七)(1)https://developer.aliyun.com/article/1565811


git-check-ignore

原文: git-scm.com/docs/git-check-ignore

名称

git-check-ignore - 调试 gitignore / exclude 文件

概要

git check-ignore [<options>] <pathname>…
git check-ignore [<options>] --stdin

描述

对于通过命令行或通过--stdin从文件给出的每个路径名,检查文件是否被.gitignore(或排除机制的其他输入文件)排除,并输出路径(如果它被排除)。

默认情况下,跟踪文件根本不显示,因为它们不受排除规则的约束;但请参阅’–no-index’。

OPTIONS

-q, --quiet 

不要输出任何内容,只需设置退出状态即可。这仅对单个路径名有效。

-v, --verbose 

还输出有关每个给定路径名的匹配模式(如果有)的详细信息。有关排除源内和排除源之间的优先级规则,请参阅 gitignore [5]

--stdin 

从标准输入读取路径名,每行一个,而不是命令行。

-z 

输出格式被修改为可机器解析(见下文)。如果还给出--stdin,则输入路径用 NUL 字符而不是换行符分隔。

-n, --non-matching 

显示与任何模式都不匹配的给定路径。这仅在启用--verbose时才有意义,否则将无法区分匹配模式的路径和不匹配模式的路径。

--no-index 

在进行检查时不要查看索引。这可以用于调试由例如跟踪路径的原因。 git add .并且未被用户预期的规则忽略,或者在开发包含否定的模式以匹配先前使用git add -f添加的路径时。

OUTPUT

默认情况下,将输出与忽略模式匹配的任何给定路径名,每行一个。如果没有模式匹配给定路径,则不会为该路径输出任何内容;这意味着路径不会被忽略。

如果指定了--verbose,则输出是以下形式的一系列行:

<信源> <结肠癌和 GT; < LINENUM> <结肠癌和 GT; <模式> < HT> <路径名>

<路径名>是要查询的文件的路径,< pattern>是匹配模式,< source>是模式的源文件,< linenum>是该源中模式的行号。如果模式包含!前缀或/后缀,则它将保留在输出中。 <信源>在引用core.excludesFile配置的文件时,或者在引用.git/info/exclude或每个目录的排除文件时相对于存储库根目录时,它将是绝对路径。

如果指定了-z,则输出中的路径名由空字符分隔;如果还指定了--verbose,则还使用空字符代替冒号和硬标签:

<信源> < NULL> < LINENUM> < NULL> <模式> < NULL> <路径名> < NULL>

如果指定了-n--non-matching,则还将输出不匹配的路径名,在这种情况下,每个输出记录中的所有字段除了<  pathname>将是空的。这在非交互式运行时非常有用,因此可以将文件递增地流式传输到长时间运行的检查忽略过程的  STDIN,并且对于每个文件,STDOUT 将指示该文件是否与模式匹配。  (如果没有这个选项,就不可能判断给定文件的输出是否缺少意味着它是否与任何模式不匹配,或者输出是否尚未生成。)

缓冲发生在 git [1]GIT_FLUSH选项中。调用者负责避免因输入缓冲区过满或从空输出缓冲区读取而导致的死锁。

退出状态

0 

忽略一个或多个提供的路径。

1 

没有提供的路径被忽略。

128 

遇到致命错误。

也可以看看

gitignore [5] git-config [1] git-ls-files [1]

GIT

部分 git [1] 套件

git-checkout-index

原文: git-scm.com/docs/git-checkout-index

名称

git-checkout-index - 将文件从索引复制到工作树

概要

git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
       [--stage=<number>|all]
       [--temp]
       [-z] [--stdin]
       [--] [<file>…]

描述

将索引中列出的所有文件复制到工作目录(不覆盖现有文件)。

OPTIONS

-u 
--index 

更新索引文件中已签出条目的统计信息。

-q 
--quiet 

如果文件存在或不在索引中,请保持安静

-f 
--force 

强制覆盖现有文件

-a 
--all 

检出索引中的所有文件。不能与显式文件名一起使用。

-n 
--no-create 

不要签出新文件,只刷新已经签出的文件。

--prefix=<string> 

创建文件时,请添加< string> (通常是包含尾随的目录/)

--stage=<number>|all 

不要检出未合并的条目,而是从命名阶段复制出文件。 <数>必须介于 1 和 3 之间。注意: - stage = all 自动隐含–temp。

--temp 

而不是将文件复制到工作目录,而是将内容写入临时文件。临时名称关联将写入 stdout。

--stdin 

而不是从命令行获取路径列表,从标准输入中读取路径列表。默认情况下,路径由 LF(即每行一个路径)分隔。

-z 

仅对--stdin有意义;路径用 NUL 字符而不是 LF 分隔。

-- 

不要将任何更多的参数解释为选项。

标志的顺序过去很重要,但现在不再重要。

刚做git checkout-index什么也没做。你可能意味着git checkout-index -a。如果你想强制它,你想要git checkout-index -f -a

直觉不是这里的目标。重复性是。 “没有参数意味着没有工作”行为的原因是你应该能够做到的脚本:

$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --

这将强制所有现有的*.h文件替换为其缓存副本。如果一个空命令行暗示“全部”,那么这将强制刷新索引中的所有内容,这不是重点。但是因为 git checkout-index 接受–stdin 它会更快使用:

$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin

当你知道其余的是文件名时,--是个好主意。它可以防止文件名出现问题,例如-a。在脚本中使用--可能是一个很好的策略。

使用–temp 或–stage = all

当使用--temp(或--stage=all暗示)_ 时,git checkout-index_ 将为每个要检出的索引条目创建一个临时文件。索引不会使用统计信息进行更新。如果调用者需要所有未合并条目的所有阶段,以便外部合并工具可以处理未合并文件,则这些选项非常有用。

列表将写入 stdout,提供临时文件名与跟踪路径名的关联。列表格式有两种变体:

  1. tempname TAB 路径 RS
    第一种格式是省略--stage或不是--stage=all时使用的格式。字段 tempname 是保存文件内容的临时文件名,path 是索引中的跟踪路径名。仅输出所请求的条目。
  2. stage1temp SP stage2temp SP stage3tmp TAB 路径 RS
    第二种格式是--stage=all时使用的格式。如果索引中存在阶段条目,则三阶段临时字段(stage1temp,stage2temp,stage3temp)列出临时文件的名称;如果没有阶段条目,则列出.。将始终从输出中省略仅具有阶段 0 条目的路径。

在两种格式中,RS(记录分隔符)默认为换行符,但如果在命令行上传递-z,则为空字节。临时文件名始终是安全字符串;它们永远不会包含目录分隔符或空格字符。 path 字段始终相对于当前目录,临时文件名始终相对于顶级目录。

如果要复制到临时文件的对象是符号链接,则链接的内容将写入普通文件。最终用户或瓷器可以使用这些信息。

例子

To update and refresh only the files already checked out 
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
Using git checkout-index to "export an entire tree" 

前缀能力基本上使得 git checkout-index 用作“导出为树”功能变得微不足道。只需将所需的树读入索引,然后执行:

$ git checkout-index --prefix=git-export-dir/ -a

git checkout-index将索引“导出”到指定目录中。

最后的“/”很重要。导出的名称实际上只是以指定的字符串为前缀。将此与下面的示例进行对比。

Export files with a prefix 
$ git checkout-index --prefix=.merged- Makefile

这将检出当前缓存的Makefile副本到文件.merged-Makefile中。

GIT

部分 git [1] 套件

git-commit-tree

原文: git-scm.com/docs/git-commit-tree

名称

git-commit-tree - 创建一个新的提交对象

概要

git commit-tree <tree> [(-p <parent>)…]
git commit-tree [(-p <parent>)…] [-S[<keyid>]] [(-m <message>)…]
      [(-F <file>)…] <tree>

描述

这通常不是最终用户想要直接运行的。参见 git-commit [1]

基于提供的树对象创建新的提交对象,并在 stdout 上发出新的提交对象 ID。除非给出-m-F选项,否则将从标准输入读取日志消息。

提交对象可以包含任意数量的父项。只有一个父,它是一个普通的提交。拥有多个父级会使提交在多行历史记录之间合并。初始(root)提交没有父母。

虽然树表示工作目录的特定目录状态,但提交在“时间”中表示该状态,并说明如何到达那里。

通常一个提交会识别一个新的“HEAD”状态,而 Git 并不关心你在哪里保存关于该状态的注释,实际上我们倾向于只将结果写入.git/HEAD所指向的文件,所以我们总能看到最后承诺的状态是什么。

OPTIONS

<tree> 

现有的树对象

-p <parent> 

每个-p表示父提交对象的 id。

-m <message> 

提交日志消息中的段落。这可以被给予不止一次并且每个<消息>成为自己的段落。

-F <file> 

从给定文件中读取提交日志消息。使用-从标准输入读取。

-S[<keyid>] 
--gpg-sign[=<keyid>] 

GPG 签名提交。 keyid参数是可选的,默认为提交者标识;如果指定,它必须粘在没有空格的选项上。

--no-gpg-sign 

不要 GPG 签名提交,以反击命令行先前给出的--gpg-sign选项。

提交信息

提交封装:

  • 所有父对象 id
  • 作者姓名,电子邮件和日期
  • 提交者姓名和电子邮件以及提交时间。

在命令行上提供父对象 ID 时,作者和提交者信息取自以下环境变量,如果设置:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE

(nb“<”,“>”和“\ n”s 被剥离)

如果未设置(某些)这些环境变量,则从配置项 user.name 和 user.email 获取信息,如果不存在,则获取环境变量 EMAIL,或者,如果未设置,则系统用户用于发送邮件的名称和主机名(取自/etc/mailname并在该文件不存在时回退到完全限定的主机名)。

从 stdin 读取提交注释。如果未通过“<”提供更改日志条目重定向, git commit-tree 将等待一个输入并终止于^ D.

日期格式

GIT_AUTHOR_DATEGIT_COMMITTER_DATE环境变量支持以下日期格式:

Git internal format 

它是 ,其中是自 UNIX 纪元以来的秒数。 是 UTC 的正偏移或负偏移。例如,CET(比 UTC 早 1 小时)是+0100

RFC 2822 

RFC 2822 描述的标准电子邮件格式,例如Thu, 07 Apr 2005 22:13:13 +0200

ISO 8601 

ISO 8601 标准规定的时间和日期,例如2005-04-07T22:13:13。解析器也接受空格而不是T字符。

| 注意 | 此外,日期部分以下列格式接受:YYYY.MM.DDMM/DD/YYYYDD.MM.YYYY。 |

讨论

Git 在某种程度上是字符编码不可知的。

  • blob 对象的内容是未解释的字节序列。核心级别没有编码转换。
  • 路径名以 UTF-8 规范化形式 C 编码。这适用于树对象,索引文件,ref 名称,以及命令行参数,环境变量和配置文件中的路径名(.git/config(参见 git) -config [1] ), gitignore [5]gitattributes [5]gitmodules [5] )。
    请注意,核心级别的  Git 仅将路径名称视为非 NUL 字节序列,没有路径名称编码转换(Mac 和 Windows 除外)。因此,即使在使用传统扩展 ASCII  编码的平台和文件系统上,使用非 ASCII 路径名也会起作用。但是,在此类系统上创建的存储库将无法在基于 UTF-8 的系统(例如  Linux,Mac,Windows)上正常工作,反之亦然。此外,许多基于 Git 的工具只是假设路径名为 UTF-8,并且无法正确显示其他编码。
  • 提交日志消息通常以  UTF-8 编码,但也支持其他扩展 ASCII 编码。这包括 ISO-8859-x,CP125x 和许多其他,但 _ 不是 _  UTF-16/32,EBCDIC 和 CJK 多字节编码(GBK,Shift-JIS,Big5,EUC-x,CP9xx 等。 )。

虽然我们鼓励提交日志消息以 UTF-8 编码,但核心和 Git 瓷器都不是为了强制项目使用 UTF-8。如果特定项目的所有参与者发现使用遗留编码更方便,Git 不会禁止它。但是,有一些事情需要牢记。

  1. git commitgit commit-tree 发出警告,如果提供给它的提交日志消息看起来不像有效的 UTF-8 字符串,除非你明确说你的项目使用了遗产编码。说这个的方法是在.git/config文件中使用 i18n.commitencoding,如下所示:
[i18n]
  commitEncoding = ISO-8859-1
  1. 使用上述设置创建的提交对象在其encoding标题中记录i18n.commitEncoding的值。这是为了帮助其他人以后再看。缺少此标头意味着提交日志消息以 UTF-8 编码。
  2. git loggit showgit blame 和朋友们查看提交对象的encoding头,并尝试将日志消息重新编码为除非另有说明,否则为 UTF-8。您可以使用.git/config文件中的i18n.logOutputEncoding指定所需的输出编码,如下所示:
[i18n]
  logOutputEncoding = ISO-8859-1
  1. 如果您没有此配置变量,则使用i18n.commitEncoding的值。

请注意,我们故意选择在提交以在提交对象级别强制使用 UTF-8 时不重新编写提交日志消息,因为重新编码为 UTF-8 不一定是可逆操作。

FILES

在/ etc /邮件名

也可以看看

git-write-tree [1]

GIT

部分 git [1] 套件

git-count-objects

原文: git-scm.com/docs/git-count-objects

名称

git-count-objects - 计算解压缩的对象数及其磁盘消耗

概要

git count-objects [-v] [-H | --human-readable]

描述

这会计算解压缩的目标文件的数量和它们消耗的磁盘空间,以帮助您确定何时是重新打包的好时机。

OPTIONS

-v 
--verbose 

报告更详细:

count:松散物体的数量

size:松散对象消耗的磁盘空间,以 KiB 为单位(除非指定了-H)

in-pack:包内对象的数量

size-pack:包消耗的磁盘空间,以 KiB 为单位(除非指定了-H)

prune-packable:包中也存在的松散物体的数量。可以使用git prune-packed修剪这些对象。

garbage:对象数据库中既不是有效的松散对象也不是有效包的文件数

size-garbage:垃圾文件占用的磁盘空间,以 KiB 为单位(除非指定-H)

alternate:备用对象数据库的绝对路径;可能会出现多次,每条路径一行。请注意,如果路径包含不可打印的字符,则它可能被双引号括起来并包含 C 样式的反斜杠转义序列。

-H 
--human-readable 

以人类可读格式打印尺寸

GIT

部分 git [1] 套件


Git 中文参考(七)(3)https://developer.aliyun.com/article/1565813

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
26 3
|
4月前
|
监控 程序员 开发工具
如何规范Git提交-参考阿里云开发者社区
这篇文章分享了如何规范Git提交,介绍了commit message的格式规范,并通过webhook监控机制来确保代码提交的规范性,从而提高研发效率和代码维护质量。
|
5月前
|
存储 缓存 网络安全
Git 中文参考(一)(8)
Git 中文参考(一)
54 2
|
5月前
|
存储 网络安全 开发工具
Git 中文参考(一)(7)
Git 中文参考(一)
59 2
|
5月前
|
存储 算法 Java
Git 中文参考(一)(6)
Git 中文参考(一)
53 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(5)
Git 中文参考(一)
38 2
|
5月前
|
存储 开发工具 git
Git 中文参考(一)(4)
Git 中文参考(一)
42 2
|
5月前
|
存储 安全 开发工具
Git 中文参考(一)(3)
Git 中文参考(一)
26 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(2)
Git 中文参考(一)
46 2
|
5月前
|
存储 人工智能 开发工具
Git 中文参考(五)(9)
Git 中文参考(五)
144 2