git-remote
名称
git-remote - 管理一组跟踪的存储库
概要
git remote [-v | --verbose] git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url> git remote rename <old> <new> git remote remove <name> git remote set-head <name> (-a | --auto | -d | --delete | <branch>) git remote set-branches [--add] <name> <branch>… git remote get-url [--push] [--all] <name> git remote set-url [--push] <name> <newurl> [<oldurl>] git remote set-url --add [--push] <name> <newurl> git remote set-url --delete [--push] <name> <url> git remote [-v | --verbose] show [-n] <name>… git remote prune [-n | --dry-run] <name>… git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
描述
管理您跟踪其分支的存储库集(“远程”)。
OPTIONS
-v
--verbose
稍微冗长一点,并在名字后显示远程网址。注意:必须放在remote
和subcommand
之间。
COMMANDS
没有参数,显示现有遥控器的列表。有几个子命令可用于对遥控器执行操作。
add
添加名为< name>的远程名称对于< url>的存储库。然后,命令git fetch
可用于创建和更新远程跟踪分支< name> /< branch>。
使用-f
选项,在设置远程信息后立即运行git fetch
。
使用--tags
选项,git fetch
从远程存储库导入每个标记。
使用--no-tags
选项,git fetch
不会从远程存储库导入标记。
默认情况下,仅导入已获取分支上的标记(请参阅 git-fetch [1] )。
使用-t
选项,而不是默认的 glob refspec 用于远程跟踪refs/remotes//
命名空间下的所有分支,而是创建仅跟踪的 refspec。您可以提供多个
-t
来跟踪多个分支而不占用所有分支。
使用-m
选项,symbolic-ref refs/remotes//HEAD
被设置为指向远程的分支。另请参见 set-head 命令。
使用--mirror=fetch
创建获取镜像时,refs 不会存储在 refs / remotes / 命名空间中,而是遥控器上 refs / 中的所有内容都将被直接镜像进入本地存储库中的 refs / 。此选项仅在裸存储库中有意义,因为获取将覆盖任何本地提交。
使用--mirror=push
创建推镜时,git push
将始终表现为--mirror
通过。
rename
重命名名为< old>的远程名称到< new>。将更新远程的所有远程跟踪分支和配置设置。
如果< old>和< new>是相同的,< old>是$GIT_DIR/remotes
或$GIT_DIR/branches
下的文件,远程转换为配置文件格式。
remove
rm
删除名为< name>的远程数据库。将删除远程的所有远程跟踪分支和配置设置。
set-head
设置或删除指定远程的默认分支(即 symbolic-ref refs/remotes//HEAD
的目标)。不需要具有远程的默认分支,但允许指定远程的名称来代替特定分支。例如,如果origin
的默认分支设置为master
,则可以在通常指定origin/master
的任何位置指定origin
。
使用-d
或--delete
,删除符号 ref refs/remotes//HEAD
。
使用-a
或--auto
,查询远程以确定其HEAD
,然后将 symbolic-ref refs/remotes//HEAD
设置为同一分支。例如,如果远程HEAD
指向next
,“git remote set-head origin -a
”将 symbolic-ref refs/remotes/origin/HEAD
设置为refs/remotes/origin/next
。这仅在refs/remotes/origin/next
已存在时才有效;如果不是,它必须先取出。
使用显式设置 symbolic-ref
refs/remotes//HEAD
。例如,“git remote set-head origin master”将 symbolic-ref refs/remotes/origin/HEAD
设置为refs/remotes/origin/master
。这仅在refs/remotes/origin/master
已存在时才有效;如果不是,它必须先取出。
set-branches
更改命名远程跟踪的分支列表。在初始设置遥控器之后,这可用于跟踪可用远程分支的子集。
命名分支将被解释为使用 git remote add 命令行上的-t
选项指定。
使用--add
,而不是替换当前跟踪的分支列表,添加到该列表。
get-url
检索远程的 URL。这里扩展了insteadOf
和pushInsteadOf
的配置。默认情况下,仅列出第一个 URL。
使用--push
,将查询推送 URL 而不是提取 URL。
使用--all
,将列出远程的所有 URL。
set-url
更改远程的 URL。设置远程< name>的第一个网址匹配正则表达式< oldurl> (如果没有给出< oldurl>则是第一个 URL)到< newurl>。如果< oldurl>与任何 URL 都不匹配,发生错误并且没有任何更改。
使用--push
,操纵推送 URL 而不是获取 URL。
使用--add
,不添加现有 URL,而是添加新 URL。
使用--delete
,而不是更改现有网址,所有匹配正则表达式< url>的网址已删除远程< name>。尝试删除所有非推送 URL 是一个错误。
请注意,推送 URL 和提取 URL 即使可以设置不同,仍必须引用相同的位置。您推送到推送 URL 的内容应该是您从提取 URL 中立即获取的内容。如果您尝试从一个位置(例如您的上游)获取并推送到另一个位置(例如您的发布存储库),请使用两个单独的遥控器。
show
提供有关远程< name>的一些信息。
使用-n
选项,不会先使用git ls-remote
查询远程磁头;而是使用缓存的信息。
prune
删除与< name>关联的陈旧引用。默认情况下,< name>下的过时远程跟踪分支被删除,但根据全局配置和远程配置,我们甚至可以修剪那些尚未推送的本地标签。相当于git fetch --prune
,但不会获取新的引用。
请参阅 git-fetch [1] 的 PRUNING 部分,了解它将根据各种配置进行修剪的内容。
使用--dry-run
选项,报告将修剪哪些分支,但不实际修剪它们。
update
获取由远程数据库定义的存储库中的远程数据库或远程组的更新。< group>。如果在命令行中既未指定 group 也未指定 remote,则将使用配置参数 remotes.default;如果未定义 remotes.default,则所有没有配置参数 remote 的遥控器将被更新。< name> .skipDefaultUpdate 设置为 true。 (参见 git-config [1] )。
使用--prune
选项,对所有已更新的遥控器运行修剪。
讨论
使用remote.origin.url
和remote.origin.fetch
配置变量实现远程配置。 (参见 git-config [1] )。
例子
- 添加一个新的远程,获取,并从中检出一个分支
$ git remote origin $ git branch -r origin/HEAD -> origin/master origin/master $ git remote add staging git://git.kernel.org/.../gregkh/staging.git $ git remote origin staging $ git fetch staging ... From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging * [new branch] master -> staging/master * [new branch] staging-linus -> staging/staging-linus * [new branch] staging-next -> staging/staging-next $ git branch -r origin/HEAD -> origin/master origin/master staging/master staging/staging-linus staging/staging-next $ git checkout -b staging staging/master ...
- 模仿 git clone 但仅跟踪选定的分支
$ mkdir project.git $ cd project.git $ git init $ git remote add -f -t master -m master origin git://example.com/git.git/ $ git merge origin
也可以看看
git-fetch [1] git-branch [1] git-config [1]
GIT
部分 git [1] 套件
git-submodule
名称
git-submodule - 初始化,更新或检查子模块
概要
git submodule [--quiet] add [<options>] [--] <repository> [<path>] git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…] git submodule [--quiet] init [--] [<path>…] git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…) git submodule [--quiet] update [<options>] [--] [<path>…] git submodule [--quiet] summary [<options>] [--] [<path>…] git submodule [--quiet] foreach [--recursive] <command> git submodule [--quiet] sync [--recursive] [--] [<path>…] git submodule [--quiet] absorbgitdirs [--] [<path>…]
描述
检查,更新和管理子模块。
有关子模块的更多信息,请参阅 gitsubmodules [7] 。
COMMANDS
add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
将给定存储库添加为给定路径下的子模块,该路径指向要在当前项目旁边提交的变更集:当前项目称为“超级项目”。
<库>是新子模块的原始存储库的 URL。这可以是绝对 URL,或者(如果它以./或…/开头),相对于超级项目的默认远程存储库的位置(请注意,指定存储库 foo.git ,这是位于超级项目 bar.git 旁边,您必须使用 …/foo.git 而不是 ./foo.git - 作为一个在遵循相对 URL 规则时可能会有所期望 - 因为 Git 中相对 URL 的评估与相对目录的相同。
默认远程是当前分支的远程跟踪分支的远程。如果不存在这样的远程跟踪分支或者 HEAD 被分离,则假定“origin”是默认远程。如果超级项目没有配置默认远程,则超级项目是其自己的权威上游,而是使用当前工作目录。
可选参数< path>是克隆子模块在超级项目中存在的相对位置。如果< path>如果未给出,则使用源存储库的规范部分(“repo”表示“/path/to/repo.git”,“foo”表示“host.xz:foo / .git”)。如果< path>存在并且已经是一个有效的 Git 存储库,然后它将在没有克隆的情况下进行提交。 <路径>除非--name
用于指定逻辑名称,否则它也会在其配置条目中用作子模块的逻辑名称。
给定的 URL 记录在.gitmodules
中,供后续用户克隆超级项目使用。如果 URL 是相对于超级项目的存储库给出的,则推测是超级项目,子模块存储库将保存在同一相对位置,并且只需要提供超级项目的 URL。 git-submodule 将使用.gitmodules
中的相对 URL 正确定位子模块。
status [--cached] [--recursive] [--] [<path>…]
显示子模块的状态。这将打印每个子模块当前检出的提交的 SHA-1,以及子模块路径和 SHA-1 的 git describe 的输出。如果子模块未初始化,则每个 SHA-1 可能以-
为前缀,如果当前检出的子模块提交与包含存储库的索引中找到的 SHA-1 不匹配,则+
和U
如果子模块有合并冲突。
如果指定了--recursive
,则此命令将递归到嵌套的子模块中,并显示其状态。
如果您只对当前初始化的子模块相对于索引或 HEAD 中记录的提交的更改感兴趣, git-status [1] 和 git-diff [1] 也将提供该信息(并且还可以报告对子模块工作树的更改)。
init [--] [<path>…]
通过在.git / config 中设置submodule.$name.url
来初始化索引中记录的子模块(已在其他地方添加并提交)。它使用.gitmodules
中的相同设置作为模板。如果 URL 是相对的,则将使用默认远程解析。如果没有默认远程,则假定当前存储库位于上游。
可选<路径>参数限制将初始化哪些子模块。如果未指定路径且已配置 submodule.active,则将初始化配置为活动的子模块,否则将初始化所有子模块。
如果存在,它还将复制submodule.$name.update
的值。此命令不会更改.git / config 中的现有信息。然后,您可以在.git / config 中自定义子模块克隆 URL 以进行本地设置,然后继续git submodule update
;如果您不打算自定义任何子模块位置,也可以在没有显式 init 步骤的情况下使用git submodule update --init
。
有关默认远程的定义,请参阅 add 子命令。
deinit [-f|--force] (--all|[--] <path>…)
取消注册给定的子模块,即从.git / config 中删除整个submodule.$name
部分及其工作树。对git submodule update
,git submodule foreach
和git submodule sync
的进一步调用将跳过任何未注册的子模块,直到它们再次初始化为止,因此如果您不想再在工作树中本地检出子模块,请使用此命令。
当命令在没有 pathspec 的情况下运行时,它会出错,而不是去除所有内容,以防止出错。
如果指定了--force
,则即使子模块包含本地修改,也将删除该子模块的工作树。
如果你真的想要从存储库中删除子模块并提交使用 git-rm [1] 。有关删除选项,请参阅 gitsubmodules [7] 。
update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>…]
通过克隆缺失的子模块并更新子模块的工作树,更新已注册的子模块以匹配超级项目所期望的内容。 “更新”可以通过多种方式完成,具体取决于命令行选项和submodule..update
配置变量的值。命令行选项优先于配置变量。如果两者都没有给出,则执行 _ 检出 _。从命令行以及通过submodule..update
配置支持的 _ 更新 _ 程序是:
checkout
超级项目中记录的提交将在分离的 HEAD 上的子模块中检出。
如果指定了--force
,则子模块将被检出(使用git checkout --force
),即使包含存储库的索引中指定的提交已经与子模块中检出的提交匹配。
rebase
子模块的当前分支将重新定位到超级项目中记录的提交。
merge
超级项目中记录的提交将合并到子模块中的当前分支中。
以下 _ 更新 _ 程序仅可通过submodule..update
配置变量获得:
custom command
执行带有单个参数的任意 shell 命令(超级项目中记录的提交的 sha1)。当submodule..update
设置为 _!命令 _ 时,感叹号后面的余数是自定义命令。
none
子模块未更新。
如果子模块尚未初始化,并且您只想使用.gitmodules
中存储的设置,则可以使用--init
选项自动初始化子模块。
如果指定了--recursive
,则此命令将递归到已注册的子模块中,并更新其中的任何嵌套子模块。
summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>…]
显示给定提交(默认为 HEAD)和工作树/索引之间的提交摘要。对于所讨论的子模块,显示了给定超级项目提交与索引或工作树(由--cached
切换)之间的子模块中的一系列提交。如果给出了选项--files
,则显示超级项目的索引与子模块的工作树之间的子模块中的一系列提交(此选项不允许使用--cached
选项或提供显式承诺)。
在 git-diff [1] 中使用--submodule=log
选项也可以提供该信息。
foreach [--recursive] <command>
在每个签出的子模块中计算任意 shell 命令。该命令可以访问变量name,name, name, sm_path,displaypath,displaypath, displaypath, sha1 和toplevel:toplevel: toplevel: name 是.gitmodules
中相关子模块部分的名称,smpath是直接记录的子模块的路径superproject,smpath是直接记录的子模块的路径superproject, sm_path 是直接记录的子模块的路径 superproject, displaypath 包含从当前工作目录到子模块根目录的相对路径,sha1是直接超级项目中记录的提交,sha1是直接超级项目中记录的提交, sha1 是直接超级项目中记录的提交, toplevel 是直接超级项目顶级的绝对路径。请注意,为了避免与 Windows 上的 $ PATH 冲突, $ path 变量现在是 $ sm_path 变量的弃用同义词。此命令将忽略超级项目中定义但未检出的任何子模块。除非给出--quiet
,否则 foreach 会在评估命令之前打印每个子模块的名称。如果给出了--recursive
,则递归遍历子模块(即,给定的 shell 命令也在嵌套的子模块中进行计算)。任何子模块中命令的非零返回都会导致处理终止。这可以通过添加 ||来覆盖: 到命令结束。
例如,下面的命令将显示每个子模块的路径和当前检出的提交:
git submodule foreach 'echo $path `git rev-parse HEAD`'
sync [--recursive] [--] [<path>…]
将子模块的远程 URL 配置设置与.gitmodules
中指定的值同步。它只会影响那些已经在.git / config 中有 URL 条目的子模块(初始化或新添加时就是这种情况)。当子模块 URL 更改上游并且您需要相应地更新本地存储库时,这非常有用。
git submodule sync
同步所有子模块,而git submodule sync -- A
仅同步子模块“A”。
如果指定了--recursive
,则此命令将递归到已注册的子模块中,并同步其中的任何嵌套子模块。
absorbgitdirs
如果子模块的 git 目录在子模块内,则将子模块的 git 目录移动到其 superprojects $GIT_DIR/modules
路径,然后通过设置core.worktree
并添加指向的.git 文件来连接 git 目录及其工作目录。嵌入在 superprojects git 目录中的 git 目录。
独立克隆并随后作为子模块或旧设置添加的存储库在子模块内部具有子模块 git 目录,而不是嵌入到 superprojects git 目录中。
默认情况下,此命令是递归的。
OPTIONS
-q
--quiet
仅打印错误消息。
--progress
此选项仅对添加和更新命令有效。除非指定了-q,否则在将标准错误流附加到终端时,默认情况下会报告进度状态。即使标准错误流未定向到终端,此标志也会强制进度状态。
--all
此选项仅对 deinit 命令有效。取消注册工作树中的所有子模块。
-b
--branch
存储库的分支添加为子模块。分支名称在update --remote
中记录为update --remote
中的submodule..branch
。 .
的特殊值用于指示子模块中分支的名称应与当前存储库中的当前分支的名称相同。
-f
--force
此选项仅对 add,deinit 和 update 命令有效。运行 add 时,允许添加否则忽略的子模块路径。当运行 deinit 时,子模块工作树将被删除,即使它们包含本地更改。运行更新时(仅对结帐过程有效),在切换到其他提交时,丢弃子模块中的本地更改;并且始终在子模块中运行 checkout 操作,即使包含存储库的索引中列出的提交与子模块中签出的提交匹配也是如此。
--cached
此选项仅对 status 和 summary 命令有效。这些命令通常使用子模块 HEAD 中的提交,但使用此选项时,将使用存储在索引中的提交。
--files
此选项仅对 summary 命令有效。当使用此选项时,此命令将索引中的提交与子模块 HEAD 中的提交进行比较。
-n
--summary-limit
此选项仅对 summary 命令有效。限制摘要大小(总计显示的提交数)。给 0 将禁用摘要;负数表示无限制(默认值)。此限制仅适用于已修改的子模块。对于添加/删除/ typechanged 子模块,大小始终限制为 1。
--remote
此选项仅对 update 命令有效。不使用超级项目记录的 SHA-1 来更新子模块,而是使用子模块的远程跟踪分支的状态。使用的遥控器是分支的遥控器(branch..remote
),默认为origin
。使用的远程分支默认为master
,但可以通过在.gitmodules
或.git/config
中设置submodule..branch
选项来覆盖分支名称(优先使用.git/config
)。
这适用于任何支持的更新过程(--checkout
,--rebase
等)。唯一的变化是目标 SHA-1 的来源。例如,submodule update --remote --merge
会将上游子模块更改合并到子模块中,而submodule update --merge
会将超级项目 gitlink 更改合并到子模块中。
为了确保当前跟踪分支状态,update --remote
在计算 SHA-1 之前获取子模块的远程存储库。如果您不想获取,则应使用submodule update --remote --no-fetch
。
使用此选项可将上游子项目的更改与子模块的当前 HEAD 集成。或者,您可以从子模块运行git pull
,除了远程分支名称之外,它是等效的:update --remote
使用默认上游存储库和submodule..branch
,而git pull
使用子模块的branch..merge
。如果您想在超级项目中分配默认上游分支,请选择submodule..branch
,如果您希望在子模块本身工作时想要更原始的感觉,请选择branch..merge
。
-N
--no-fetch
此选项仅对 update 命令有效。不要从远程站点获取新对象。
--checkout
此选项仅对 update 命令有效。在子模块中的分离 HEAD 上签出超级项目中记录的提交。这是默认行为,此选项的主要用途是在设置为checkout
以外的值时覆盖submodule.$name.update
。如果未将键submodule.$name.update
显式设置或设置为checkout
,则此选项是隐式的。
--merge
此选项仅对 update 命令有效。将超级项目中记录的提交合并到子模块的当前分支中。如果给出此选项,则不会分离子模块的 HEAD。如果合并失败阻止了此过程,则必须使用通常的冲突解决工具解决子模块中产生的冲突。如果键submodule.$name.update
设置为merge
,则此选项是隐式的。
--rebase
此选项仅对 update 命令有效。将当前分支重新引导到超级项目中记录的提交。如果给出此选项,则不会分离子模块的 HEAD。如果合并失败阻止了此过程,则必须使用 git-rebase [1] 解决这些故障。如果键submodule.$name.update
设置为rebase
,则此选项是隐式的。
--init
此选项仅对 update 命令有效。初始化所有在更新之前尚未调用“git submodule init”的子模块。
--name
此选项仅对 add 命令有效。它将子模块的名称设置为给定的字符串,而不是默认为其路径。该名称必须作为目录名有效,并且不能以 / 结尾。
--reference <repository>
此选项仅对添加和更新命令有效。这些命令有时需要克隆远程存储库。在这种情况下,此选项将传递给 git-clone [1] 命令。
注:不是使用此选项除非您已阅读 git-clone [1] 的--reference
,--shared
和--dissociate
选项仔细。
--dissociate
此选项仅对添加和更新命令有效。这些命令有时需要克隆远程存储库。在这种情况下,此选项将传递给 git-clone [1] 命令。
注:参见--reference
选项的注意事项。
--recursive
此选项仅对 foreach,update,status 和 sync 命令有效。递归遍历子模块。该操作不仅在当前仓库的子模块中执行,而且还在这些子模块内的任何嵌套子模块中执行(依此类推)。
--depth
此选项对添加和更新命令有效。创建一个 _ 浅 _ 克隆,其历史记录被截断为指定的修订数。见 git-clone [1]
--[no-]recommend-shallow
此选项仅对 update 命令有效。子模块的初始克隆将使用默认情况下.gitmodules
文件提供的推荐submodule..shallow
。要忽略建议,请使用--no-recommend-shallow
。
-j <n>
--jobs <n>
此选项仅对 update 命令有效。与多个作业并行克隆新的子模块。默认为submodule.fetchJobs
选项。
<path>…
子模块的路径。指定时,这将限制命令仅对指定路径上找到的子模块进行操作。 (添加时需要此参数)。
FILES
初始化子模块时,使用包含存储库的顶级目录中的.gitmodules
文件来查找每个子模块的 URL。该文件的格式应与$GIT_DIR/config
相同。每个子模块 url 的关键是“submodule。$ name.url”。有关详细信息,请参阅 gitmodules [5] 。
也可以看看
gitsubmodules [7] , gitmodules [5] 。
GIT
部分 git [1] 套件
git-show
名称
git-show - 显示各种类型的对象
概要
git show [<options>] [<object>…]
描述
显示一个或多个对象(blob,树,标签和提交)。
对于提交,它显示日志消息和文本差异。它还以 git diff-tree --cc 生成的特殊格式显示合并提交。
对于标签,它显示标签消息和引用的对象。
对于树,它显示名称(相当于 git ls-tree 和–name-only)。
对于普通 blob,它显示了普通内容。
该命令采用适用于 git diff-tree 命令的选项来控制如何显示提交引入的更改。
本手册页仅介绍最常用的选项。
OPTIONS
<object>…
要显示的对象的名称(默认为 HEAD )。有关拼写对象名称的更完整列表,请参阅 gitrevisions [7] 中的“指定修订”部分。
--pretty[=<format>]
--format=<format>
以给定格式打印提交日志的内容,其中 < format> 可以是 oneline ,_ 短 , 培养基 , 全 , 更丰富 , 之一电子邮件 , 原始 , 格式:< string>_ 和 tformat:< string> 。当 < format> 不属于上述情况,并且其中包含 _%占位符 _,其行为就像 –pretty = tformat:< format> 给出了。
有关每种格式的一些其他详细信息,请参阅“PRETTY FORMATS”部分。当 =< format> 部分省略,默认为 medium 。
注意:您可以在存储库配置中指定默认的漂亮格式(请参阅 git-config [1] )。
--abbrev-commit
而不是显示完整的 40 字节十六进制提交对象名称,而只显示部分前缀。可以使用“–abbrev =< n>”指定非默认位数(如果显示,也会修改 diff 输出)。
对于使用 80 列终端的人来说,这应该使“–pretty = oneline”更具可读性。
--no-abbrev-commit
显示完整的 40 字节十六进制提交对象名称。这否定了--abbrev-commit
以及暗示它的选项,例如“–oneline”。它还会覆盖log.abbrevCommit
变量。
--oneline
这是一起使用的“–pretty = oneline --abbrev-commit”的简写。
--encoding=<encoding>
提交对象在其编码头中记录用于日志消息的编码;此选项可用于告诉命令以用户首选的编码重新编码提交日志消息。对于非管道命令,默认为 UTF-8。请注意,如果一个对象声称在X
中编码并且我们在X
中输出,我们将逐字输出该对象;这意味着原始提交中的无效序列可能会复制到输出中。
--expand-tabs=<n>
--expand-tabs
--no-expand-tabs
执行选项卡扩展(将每个选项卡替换为足够的空格以填充到日志消息中的 < n> 的倍数的下一个显示列),然后在输出中显示它。 --expand-tabs
是--expand-tabs=8
的简写,--no-expand-tabs
是--expand-tabs=0
的简写,它会禁用制表符扩展。
默认情况下,选项卡以相当格式展开,将日志消息缩进 4 个空格(即 medium ,默认情况下, full 和 fulller )。
--notes[=<treeish>]
在显示提交日志消息时,显示注释提交的注释(请参阅 git-notes [1] )。当命令行中没有给出--pretty
,--format
或--oneline
选项时,这是git log
,git show
和git whatchanged
命令的默认值。
默认情况下,显示的注释来自core.notesRef
和notes.displayRef
变量(或相应的环境覆盖)中列出的注释 refs。有关详细信息,请参阅 git-config [1] 。
使用可选的 < treeish> 参数,使用树形查找要显示的注释。树形可以在以refs/notes/
开头时指定完整的引用名称;当它以notes/
开始时,refs/
和其他refs/notes/
作为前缀以形成 ref 的全名。
可以组合多个–notes 选项来控制显示哪些音符。示例:“ - notes = foo”将仅显示“refs / notes / foo”中的注释; “–notes = foo --notes”将显示“refs / notes / foo”和默认音符 ref(s)中的两个音符。
--no-notes
不要显示笔记。这取消了上面的--notes
选项,通过重置显示注释的注释列表。选项按命令行中给出的顺序进行解析,例如, “–notes --notes = foo --no-notes --notes = bar”只会显示“refs / notes / bar”中的注释。
--show-notes[=<treeish>]
--[no-]standard-notes
不推荐使用这些选项。请使用上面的–notes / - no-notes 选项。
--show-signature
通过将签名传递给gpg --verify
并显示输出来检查已签名的提交对象的有效性。
漂亮的格式
如果提交是合并,并且如果漂亮格式不是 oneline ,_ 电子邮件 _ 或 raw ,则在 _ 作者之前插入另一行:_ 行。该行以“Merge:”开头,并且打印祖先提交的 sha1,用空格分隔。请注意,如果您限制了对历史记录的查看,则列出的提交可能不一定是直接父提交的列表:例如,如果您只对与某个目录或文件相关的更改感兴趣。
有几种内置格式,您可以通过设置漂亮的格式来定义其他格式。< name>将选项配置为另一种格式名称或 _ 格式:_ 字符串,如下所述(参见 git-config [1] )。以下是内置格式的详细信息:
- oneline
<sha1> <title line>
- 这是为了尽可能紧凑。
- _ 短 _
commit <sha1> Author: <author>
<title line>
- _ 中 _
commit <sha1> Author: <author> Date: <author date>
<title line>
<full commit message>
- _ 全 _
commit <sha1> Author: <author> Commit: <committer>
<title line>
<full commit message>
- _ 更丰富 _
commit <sha1> Author: <author> AuthorDate: <author date> Commit: <committer> CommitDate: <committer date>
<title line>
<full commit message>
Git 中文参考(四)(2)https://developer.aliyun.com/article/1565830