Git 中文参考(八)(1)

简介: Git 中文参考(八)

git-show-ref


名称

git-show-ref - 列出本地存储库中的引用

概要

git show-ref [-q|--quiet] [--verify] [--head] [-d|--dereference]
       [-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags]
       [--heads] [--] [<pattern>…]
git show-ref --exclude-existing[=<pattern>]

描述

显示本地存储库中可用的引用以及关联的提交 ID。可以使用模式过滤结果,并且可以将标记解除引用到对象 ID 中。此外,它还可用于测试特定引用是否存在。

默认情况下,显示标签,磁头和远程参考。

–exclude-existing 表单是一个反向的过滤器。它从 stdin 读取 refs,每行一个 ref,并显示本地存储库中不存在的那些。

鼓励使用此实用程序,以便直接访问.git目录下的文件。

OPTIONS

--head 

显示 HEAD 引用,即使它通常会被过滤掉。

--heads 
• 1
--tags 
• 1

分别限于“refs / heads”和“refs / tags”。这些选择并不相互排斥;当给出两者时,显示存储在“refs / heads”和“refs / tags”中的引用。

-d 
• 1
--dereference 

取消引用标记到对象 ID 中。它们将显示为附加“^ {}”。

-s 
--hash[=<n>] 

仅显示 SHA-1 哈希值,而不是引用名称。与–dereference 结合使用时,仍会在 SHA-1 之后显示解除引用的标记。

--verify 

通过要求精确的 ref 路径来启用更严格的引用检查。除了返回错误代码 1 之外,如果未指定--quiet,它还将打印错误消息。

--abbrev[=<n>] 

缩写对象名称。使用--hash时,您不必说--hash --abbrev; --hash=n会这样做。

-q 
--quiet 

不要将任何结果打印到 stdout。与--verify结合使用时,可以用于静默检查是否存在引用。

--exclude-existing[=<pattern>] 

Make git show-ref 充当从“^(?:<anything>\s)?<refname>(?:\^{})?$”形式的  stdin 读取 refs 的过滤器,并对每个执行以下操作:(1)在行尾添加“^ {}”如果有的话(2)忽略是否提供了模式并且不匹配  refname; (3)警告 refname 不是格式良好的 refname 并跳过; (4)忽略 refname 是否是本地存储库中存在的  ref; (5)否则输出该行。

<pattern>… 

显示与一个或多个模式匹配的引用。模式从全名的末尾匹配,并且仅匹配完整的部分,例如, master 匹配 refs / heads / masterrefs / remotes / origin / masterrefs / tags / jedi / master 但不 refs / heads / mymasterrefs / remotes / master / jedi

OUTPUT

输出格式为:< SHA-1 ID> < space> <参考名称>

$ git show-ref --head --dereference
832e76a9899f560a90ffd62ae2ce83bbeff58f54 HEAD
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/master
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/origin
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
...

当使用–hash(而不是–dereference)时,输出格式为:< SHA-1 ID>

$ git show-ref --heads --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...

例子

要显示所有称为“master”的引用,无论是标记还是标题或其他任何内容,并且无论它们的引用命名层次结构有多深,请使用:

git show-ref master

如果存在这样的引用,这将显示“refs / heads / master”以及“refs / remote / other-repo / master”。

使用--verify标志时,该命令需要一个确切的路径:

git show-ref --verify refs/heads/master

只会匹配名为“master”的确切分支。

如果没有匹配, git show-ref 将返回错误代码 1,并且在验证的情况下,它将显示错误消息。

对于脚本,你可以要求它安静地使用“–quiet”标志,它可以让你做类似的事情

git show-ref --quiet --verify -- "refs/heads/$headname" ||
    echo "$headname is not a valid branch"

检查特定分支是否存在(请注意我们实际上不想显示任何结果,并且我们希望使用完整的 refname 以便不会触发模糊部分匹配的问题)。

要仅显示标记或仅显示正确的分支头,请分别使用“–tags”和/或“–heads”(使用两者表示它显示标记和头部,但不显示 refs /子目录下的其他随机引用)。

要进行自动标记对象解除引用,请使用“-d”或“–dereference”标志,这样就可以了

git show-ref --tags --dereference

获取所有标签的列表以及它们取消引用的内容。

FILES

.git/refs/*.git/packed-refs

也可以看看

git-for-each-ref [1]git-ls-remote [1]git-update-ref [1]gitrepository-layout [5]

GIT

部分 git [1] 套件

git-symbolic-ref

原文: git-scm.com/docs/git-symbolic-ref

名称

git-symbolic-ref - 读取,修改和删除符号引用

概要

git symbolic-ref [-m <reason>] <name> <ref>
git symbolic-ref [-q] [--short] <name>
git symbolic-ref --delete [-q] <name>

描述

给定一个参数,读取给定符号 ref 的哪个分支头指向并输出其相对于.git/目录的路径。通常,您会将HEAD作为< name>查看工作树所在分支的参数。

给定两个参数,创建或更新符号引用< name>指向给定分支< ref>。

给定--delete和另一个参数,删除给定的符号引用。

符号引用是一个常规文件,用于存储以ref: refs/开头的字符串。例如,您的.git/HEAD是一个常规文件,其内容为ref: refs/heads/master

OPTIONS

-d 
--delete 

删除符号 ref< name>。

-q 
--quiet 

如果< name&gt ;,请不要发出错误消息不是一个象征性的参考,而是一个独立的 HEAD;而是以静默方式退出非零状态。

--short 

显示< name>的值时作为一个象征性的参考,试图缩短价值,例如从refs/heads/mastermaster

-m 

更新< name>的 reflog 与< reason>。这仅在创建或更新符号引用时有效。

笔记

在过去,.git/HEAD是指向refs/heads/master的符号链接。当我们想切换到另一个分支时,我们做了ln -sf refs/heads/newbranch .git/HEAD,当我们想知道我们在哪个分支时,我们做了readlink .git/HEAD。但是符号链接不是完全可移植的,因此它们现在已被弃用,并且默认情况下使用符号引用(如上所述)。

如果符号引用的内容被正确打印,则 git symbolic-ref 将以状态 0 退出,如果请求的名称不是符号引用,则状态为 1;如果发生另一个错误,则为 128。

GIT

部分 git [1] 套件

git-update-index

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

名称

git-update-index - 将工作树中的文件内容注册到索引

概要

git update-index
       [--add] [--remove | --force-remove] [--replace]
       [--refresh] [-q] [--unmerged] [--ignore-missing]
       [(--cacheinfo <mode>,<object>,<file>)…]
       [--chmod=(+|-)x]
       [--[no-]assume-unchanged]
       [--[no-]skip-worktree]
       [--[no-]fsmonitor-valid]
       [--ignore-submodules]
       [--[no-]split-index]
       [--[no-|test-|force-]untracked-cache]
       [--[no-]fsmonitor]
       [--really-refresh] [--unresolve] [--again | -g]
       [--info-only] [--index-info]
       [-z] [--stdin] [--index-version <n>]
       [--verbose]
       [--] [<file>…]

描述

修改索引或目录高速缓存。提到的每个文件都被更新到索引中,并且任何 _ 未合并 _ 或 _ 需要更新 _ 状态被清除。

另请参阅 git-add [1] ,以便以更加用户友好的方式对索引执行一些最常见的操作。

git update-index 处理文件的方式可以使用各种选项进行修改:

OPTIONS

--add 

如果指定的文件不在索引中,则添加它。默认行为是忽略新文件。

--remove 

如果指定的文件在索引中但缺少,则将其删除。默认行为是忽略已删除的文件。

--refresh 

查看当前索引并通过检查 stat()信息来检查是否需要合并或更新。

-q 

安静。如果–refresh 发现索引需要更新,则默认行为是错误输出。无论如何,此选项使 git update-index 继续。

--ignore-submodules 

不要尝试更新子模块。只有在–refresh 之前传递时才会遵循此选项。

--unmerged 

如果–refresh 在索引中找到未合并的更改,则默认行为是错误输出。无论如何,此选项使 git update-index 继续。

--ignore-missing 

在–refresh 期间忽略丢失的文件

--cacheinfo <mode>,<object>,<path> 
--cacheinfo <mode> <object> <path> 

直接将指定的信息插入索引。为了向后兼容,您还可以将这三个参数作为三个单独的参数提供,但鼓励新用户使用单参数表单。

--index-info 

从 stdin 读取索引信息。

--chmod=(+|-)x 

设置更新文件的执行权限。

--[no-]assume-unchanged 

指定此标志时,不会更新为路径记录的对象名称。相反,此选项设置/取消设置路径的“假定未更改”位。当“假设未更改”位打开时,用户承诺不更改文件并允许  Git 假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知 Git。当在具有非常慢的  lstat(2)系统调用(例如 cifs)的文件系统上处理大项目时,这有时是有用的。

如果需要在索引中修改此文件,Git 将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

--really-refresh 

--refresh类似,但无条件地检查统计信息,而不考虑“假定未更改”设置。

--[no-]skip-worktree 

指定其中一个标志时,不会更新为路径记录的对象名称。相反,这些选项设置和取消设置路径的“skip-worktree”位。有关详细信息,请参阅下面的“跳过工作树位”部分。

--[no-]fsmonitor-valid 

指定其中一个标志时,不会更新为路径记录的对象名称。相反,这些选项设置和取消设置路径的“fsmonitor valid”位。有关详细信息,请参阅下面的“文件系统监视器”部分

-g 
--again 

在索引条目与HEAD提交的索引条目不同的路径上运行 git update-index 本身。

--unresolve 

如果意外清除,则恢复 _ 未合并 _ 或 _ 需要在合并期间更新文件的 _ 状态。

--info-only 

不要在对象数据库中为所有< file>创建对象跟随这面旗帜的论据;只需将其对象 ID 插入索引即可。

--force-remove 

即使工作目录仍有这样的文件,也要从索引中删除该文件。 (意味着 - 删除。)

--replace 

默认情况下,当索引中存在文件path时, git update-index 拒绝添加path/file的尝试。同样,如果存在文件path/file,则无法添加文件path。使用–replace 标志,将自动删除与添加的条目冲突的现有条目以及警告消息。

--stdin 

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

--verbose 

报告从索引中添加和删除的内容。

--index-version <n> 

将结果索引写入指定的磁盘格式版本。支持的版本为 2,3 和 4.当前默认版本为 2 或 3,具体取决于是否使用了额外功能,例如git add -N

版本 4 执行简单的路径名压缩,在大型存储库上将索引大小减少 30%-50%,从而加快了加载时间。版本 4 相对年轻(2012 年 10 月首次发布于 1.8.0)。其他 Git 实现(如 JGit 和 libgit2)可能还不支持它。

-z 

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

--split-index 
--no-split-index 

启用或禁用拆分索引模式。如果已启用拆分索引模式并再次给出--split-index,则$ GIT_DIR / index 中的所有更改都将推回到共享索引文件。

无论core.splitIndex配置变量的值如何,这些选项都会生效(参见 git-config [1] )。但是当更改违反配置值时会发出警告,因为配置的值将在下次读取索引时生效,这将消除该选项的预期效果。

--untracked-cache 
--no-untracked-cache 

启用或禁用未跟踪的缓存功能。请在启用之前使用--test-untracked-cache

无论core.untrackedCache配置变量的值如何,这些选项都会生效(参见 git-config [1] )。但是当更改违反配置值时会发出警告,因为配置的值将在下次读取索引时生效,这将消除该选项的预期效果。

--test-untracked-cache 

仅对工作目录执行测试以确保可以使用未跟踪的缓存。如果您真的想使用它,则必须使用--untracked-cache--force-untracked-cachecore.untrackedCache配置变量手动启用未跟踪的缓存。如果测试失败,则退出代码为 1,并且消息说明根据需要不起作用的内容,否则退出代码为 0 并打印 OK。

--force-untracked-cache 

--untracked-cache相同。提供与旧版 Git 的向后兼容性,其中--untracked-cache曾暗示--test-untracked-cache,但此选项将无条件地启用扩展。

--fsmonitor 
--no-fsmonitor 

启用或禁用文件系统监视器功能。无论core.fsmonitor配置变量的值如何,这些选项都会生效(参见 git-config [1] )。但是当更改违反配置值时会发出警告,因为配置的值将在下次读取索引时生效,这将消除该选项的预期效果。

-- 

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

<file> 

要采取行动的文件。请注意以 _ 开头的文件。_ 被丢弃。这包括./filedir/./file。如果您不想这样,那么使用更干净的名称。结束 / 的目录和 // 的路径也是如此


Git 中文参考(八)(2)https://developer.aliyun.com/article/1565792

相关文章
|
21天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
29 3
|
4月前
|
监控 程序员 开发工具
如何规范Git提交-参考阿里云开发者社区
这篇文章分享了如何规范Git提交,介绍了commit message的格式规范,并通过webhook监控机制来确保代码提交的规范性,从而提高研发效率和代码维护质量。
|
5月前
|
存储 缓存 网络安全
Git 中文参考(一)(8)
Git 中文参考(一)
56 2
|
5月前
|
存储 网络安全 开发工具
Git 中文参考(一)(7)
Git 中文参考(一)
61 2
|
5月前
|
存储 算法 Java
Git 中文参考(一)(6)
Git 中文参考(一)
54 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(5)
Git 中文参考(一)
38 2
|
5月前
|
存储 开发工具 git
Git 中文参考(一)(4)
Git 中文参考(一)
45 2
|
5月前
|
存储 安全 开发工具
Git 中文参考(一)(3)
Git 中文参考(一)
26 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(2)
Git 中文参考(一)
48 2
|
5月前
|
存储 人工智能 开发工具
Git 中文参考(五)(9)
Git 中文参考(五)
144 2