Git 中文参考(六)(4)

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

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


COMMANDS

init 

使用 git svn 的其他元数据目录初始化一个空的 Git 存储库。 Subversion URL 可以指定为命令行参数,也可以指定为-T / -t / -b 的完整 URL 参数。可选地,可以将要操作的目标目录指定为第二个参数。通常,此命令初始化当前目录。

-T<trunk_subdir> 
--trunk=<trunk_subdir
-t<tags_subdir> 
--tags=<tags_subdir> 
-b<branches_subdir> 
--branches=<branches_subdir> 
-s 
--stdlayout 

这些是 init 的可选命令行选项。这些标志中的每一个都可以指向相对存储库路径(–tags = project / tags)或完整  URL(–tags = https://foo.org/project/tags)。如果您的 Subversion  存储库在多个路径下放置标记或分支,您可以指定多个–tags 和/或–branches 选项。选项–stdlayout 是将  trunk,tags,branches 设置为相对路径的简便方法,这是 Subversion 的默认设置。如果同时给出任何其他选项,则它们优先。

--no-metadata 

在[svn-remote]配置中设置 noMetadata 选项。建议不要使用此选项,请在使用此选项之前阅读本联机帮助页的 svn.noMetadata 部分。

--use-svm-props 

在[svn-remote]配置中设置 useSvmProps 选项。

--use-svnsync-props 

在[svn-remote]配置中设置 useSvnsyncProps 选项。

--rewrite-root=<URL> 

在[svn-remote]配置中设置 rewriteRoot 选项。

--rewrite-uuid=<UUID> 

在[svn-remote]配置中设置 rewriteUUID 选项。

--username=<user> 

对于 SVN 处理(http,https 和 plain svn)身份验证的传输,请指定用户名。对于其他传输(例如svn+ssh://),您必须在 URL 中包含用户名,例如svn+ssh://foo@svn.bar.com/project

--prefix=<prefix> 

如果指定了 trunk / branches /  tags,则允许指定前缀为遥控器名称的前缀。前缀不会自动包含尾部斜杠,因此请确保在参数中包含一个前缀,如果这是您想要的。如果指定了–branches  / -b,则前缀必须包含尾部斜杠。在任何情况下都强烈建议设置前缀(带斜杠),因为你的 SVN 跟踪引用将位于“refs / remotes /  $ prefix / ”,这与 Git 自己的远程跟踪引用兼容 layout(refs / remotes / $ remote / )。如果要跟踪共享公共存储库的多个项目,则设置前缀也很有用。默认情况下,前缀设置为 origin /

| 注意 | 在 Git v2.0 之前,默认前缀是“”(没有前缀)。这意味着 SVN 跟踪引用被放在“refs / remotes / *”,这与 Git 自己的远程跟踪引用的组织方式不兼容。如果您仍然需要旧的默认值,可以通过在命令行上传递--prefix ""来获取它(如果你的 Perl 的 Getopt :: Long 是< v2.37,--prefix=""可能不起作用)。 |

--ignore-refs=<regex> 

传递给 initclone 时,此正则表达式将作为配置键保留。有关--ignore-refs的说明,请参见 fetch

--ignore-paths=<regex> 

传递给 initclone 时,此正则表达式将作为配置键保留。有关--ignore-paths的说明,请参见 fetch

--include-paths=<regex> 

传递给 initclone 时,此正则表达式将作为配置键保留。有关--include-paths的说明,请参见 fetch

--no-minimize-url 

当跟踪多个目录(使用–stdlayout, - blank 或–tags 选项)时,git svn 将尝试连接到 Subversion  存储库的根目录(或允许的最高级别)。如果整个项目在存储库中移动,则此默认设置允许更好地跟踪历史记录,但可能会导致读取访问限制到位的存储库出现问题。传递--no-minimize-url将允许 git svn 按原样接受 URL,而不尝试连接到更高级别的目录。默认情况下,当仅跟踪一个 URL /分支时,此选项处于关闭状态(这样做不太好)。

fetch 

从我们正在跟踪的 Subversion 远程获取未经修改的修订。 $ GIT_DIR / config 文件中[svn-remote“…”]部分的名称可以指定为可选的命令行参数。

如果需要,这会自动更新 rev_map(有关详细信息,请参阅下面的 FILES 部分中的 $ GIT_DIR / svn / * \ * /。rev_map。* )。

--localtime 

将 Git 提交时间存储在本地时区而不是 UTC 中。这使 git log (即使没有–date = local)显示与svn log在本地时区相同的时间。

这不会干扰与您克隆的 Subversion 存储库的互操作,但如果您希望本地 Git 存储库能够与其他人的本地 Git 存储库进行互操作,请不要使用此选项,或者您应该同时使用它同一个当地时区。

--parent 

仅从当前 HEAD 的 SVN 父级获取。

--ignore-refs=<regex> 

忽略与 Perl 正则表达式匹配的分支或标记的引用。像^refs/remotes/origin/(?!tags/wanted-tag|wanted-branch).*$这样的“负前瞻断言”可用于仅允许某些参考。

config key: svn-remote.<name>.ignore-refs

如果设置了 ignore-refs 配置键,并且还给出了命令行选项,则将使用两个正则表达式。

--ignore-paths=<regex> 

这允许指定 Perl 正则表达式,该表达式将导致从 SVN 的 checkout 跳过所有匹配路径。 --ignore-paths选项应匹配每个 fetch (包括 _ 克隆 _, dcommitrebase 等)的自动提取)给定存储库。

config key: svn-remote.<name>.ignore-paths

如果设置了 ignore-paths 配置密钥,并且还给出了命令行选项,则将使用两个正则表达式。

例子:

Skip "doc*" directory for every fetch 
--ignore-paths="^doc"
Skip "branches" and "tags" of first level directories 
--ignore-paths="^[^/]+/(?:branches|tags)"
--include-paths=<regex> 

这允许指定一个 Perl 正则表达式,该表达式将仅包含来自 SVN 的 checkout 的匹配路径。 --include-paths选项应匹配每个 fetch (包括 _ 克隆 _, dcommitrebase 等)的自动提取)给定存储库。 --ignore-paths优先于--include-paths

config key: svn-remote.<name>.include-paths
--log-window-size=<n> 

获取< n>扫描 Subversion 历史记录时每个请求的日志条目。默认值为 100.对于非常大的 Subversion 存储库, clone / fetch 可能需要更大的值才能在合理的时间内完成。但过大的值可能会导致更高的内存使用量和请求超时。

clone 

运行 init 和 _ 获取 _。它将根据传递给它的 URL 的基名自动创建一个目录;或者如果第二个论点通过;它将创建一个目录并在其中工作。它接受 initfetch 命令接受的所有参数; --fetch-all--parent除外。克隆存储库后, fetch 命令将能够在不影响工作树的情况下更新修订版;并且 rebase 命令将能够使用最新更改更新工作树。

--preserve-empty-dirs 

在本地 Git 存储库中为从 Subversion 获取的每个空目录创建一个占位符文件。这包括通过删除 Subversion 存储库中的所有条目(但不是目录本身)而变为空的目录。不再需要时,也会跟踪和删除占位符文件。

--placeholder-filename=<filename> 

设置–preserve-empty-dirs 创建的占位符文件的名称。默认值:“。gitignore”

rebase 

这将从当前 HEAD 的 SVN 父级获取修订,并针对它重新定义当前(未提交到 SVN)的工作。

这与svn updategit pull 类似,只是它保留 git rebase 而不是 git merge 的线性历史,以便于 git 的同意 svn

这接受 git svn fetchgit rebase 接受的所有选项。但是,--fetch-all仅从当前[svn-remote]获取,而不是所有[svn-remote]定义。

git rebase ;这要求工作树清洁并且没有未提交的更改。

如果需要,这会自动更新 rev_map(有关详细信息,请参阅下面的 FILES 部分中的 $ GIT_DIR / svn / * \ * /。rev_map。* )。

-l 
--local 

不要远程取;仅针对上游 SVN 上次提取的提交运行 git rebase

dcommit 

将每个 diff 从当前分支直接提交到 SVN 存储库,然后 rebase 或 reset(取决于 SVN 和 head 之间是否存在差异)。这将在 SVN 中为 Git 中的每个提交创建一个修订版本。

当可选的 Git 分支名称(或 Git 提交对象名称)被指定为参数时,子命令在指定的分支上工作,而不在当前分支上工作。

使用 dcommit 优于 set-tree (下文)。

--no-rebase 

提交后,不要改变或重置。

--commit-url <URL> 

提交此 SVN URL(完整路径)。这旨在允许使用一种传输方法创建的现有 git svn 存储库(例如,用于匿名读取的svn://http://)如果用户稍后被授权访问备用传输方法(例如,用于提交的svn+ssh://https://)。

config key: svn-remote.<name>.commiturl
config key: svn.commiturl (overwrites all svn-remote.<name>.commiturl options)

请注意,commiturl 配置密钥的 SVN URL 包括 SVN 分支。如果您想要为整个 SVN 存储库设置提交 URL,请使用 svn-remote。< name> .pushurl。

强烈建议不要将此选项用于任何其他目的(不要问)。

--mergeinfo=<mergeinfo> 

在 dcommit 期间添加给定的合并信息(例如--mergeinfo="/branches/foo:1-10")。所有 svn 服务器版本都可以存储此信息(作为属性),从 1.5 版开始的 svn 客户端可以使用它。要指定来自多个分支的合并信息,请在分支之间使用单个空格字符(--mergeinfo="/branches/foo:1-10 /branches/bar:3,5-6,8"

config key: svn.pushmergeinfo

此选项将导致 git-svn 尝试在可能的情况下自动填充 SVN 存储库中的 svn:mergeinfo 属性。目前,这只能在提交非快进合并时才能完成,其中除第一个之外的所有父级已经被推入 SVN。

--interactive 

要求用户确认应该将补丁集实际发送到 SVN。对于每个补丁,可以回答“是”(接受此补丁),“否”(丢弃此补丁),“全部”(接受所有补丁)或“退出”。

git svn dcommit 如果回答为“no”或“quit”则立即返回,而不向 SVN 提交任何内容。

branch 

在 SVN 存储库中创建分支。

-m 
--message 

允许指定提交消息。

-t 
--tag 

使用 tags_subdir 而不是 git svn init 期间指定的 branches_subdir 创建标记。

-d<path> 
--destination=<path> 

如果为 initclone 命令提供了多个 -  分支(或–tags)选项,则必须提供您希望的分支(或标记)的位置在 SVN 存储库中创建。  <路径>指定用于创建分支或标记的路径,并且应该与其中一个已配置的分支或标记 refspecs 的左侧模式匹配。您可以使用命令查看这些  refspecs

git config --get-all svn-remote.<name>.branches
git config --get-all svn-remote.<name>.tags

其中< name>是 init 的-R 选项(默认情况下为“svn”)指定的 SVN 存储库的名称。

--username 

指定要执行提交的 SVN 用户名。此选项会覆盖 _ 用户名 _ 配置属性。

--commit-url 

使用指定的 URL 连接到目标 Subversion 存储库。这在源 SVN 存储库是只读的情况下很有用。此选项会覆盖配置属性 commiturl

git config --get-all svn-remote.<name>.commiturl
--parents 

创建父文件夹。此参数等效于参数–parents on svn cp 命令,对非标准存储库布局很有用。

tag 

在 SVN 存储库中创建标记。这是 branch -t 的简写。

log 

当 svn 用户引用-r / - 版本号时,这应该可以很容易地查找 svn 日志消息。

支持’svn log’的以下功能:

-r <n>[:<n>] 
--revision=<n>[:<n>] 

支持,非数字 args 不是:HEAD,NEXT,BASE,PREV 等…

-v 
--verbose 

它与 svn log 中的–verbose 输出不完全兼容,但相当接近。

--limit=<n> 

与–max-count 不同,不计算合并/排除的提交

--incremental 

支持的

新功能:

--show-commit 

还显示了 Git commit sha1

--oneline 

我们的版本–pretty = oneline

| 注意 | SVN 本身只存储 UTC 时间,没有别的。常规 svn 客户端将 UTC 时间转换为本地时间(或基于 TZ =环境)。此命令具有相同的行为。 |

任何其他参数直接传递给 git log

blame 

显示修订版和作者上次修改文件的每一行。默认情况下,此模式的输出与’svn blame’的输出格式兼容。与 SVN blame 命令一样,忽略工作树中的本地未提交更改; HEAD 修订版中的文件版本已注释。未知参数直接传递给 git blame

--git-forma

以与 git blame 相同的格式生成输出,但使用 SVN 修订号而不是 Git 提交哈希值。在此模式下,尚未提交到 SVN 的更改(包括本地工作副本编辑)显示为修订版 0。

find-rev 

当给定形式为 rN 的 SVN 修订号时,返回相应的 Git 提交哈希(这可以选择后跟树,以指定应搜索哪个分支)。给定 tree-ish 时,返回相应的 SVN 修订号。

-B 
--before 

如果给出 SVN 修订版,则不需要完全匹配,而是在指定的修订版中找到与 SVN 存储库(在当前分支上)的状态相对应的提交。

-A 
--after 

如果给出 SVN 修订版,则不要求完全匹配;如果没有完全匹配,则返回在历史记录中向前搜索的最接近的匹配。

set-tree 

您应该考虑使用 dcommit 而不是此命令。将指定的提交或树对象提交给 SVN。这取决于您导入的获取数据是最新的。这使得在提交 SVN 时绝对不会尝试进行修补,它只是用树中指定的文件或提交覆盖文件。假设所有合并都独立于 git svn 功能发生。

create-ignore 

递归地在目录上找到 svn:ignore 属性并创建匹配的.gitignore 文件。生成的文件将暂存,但未提交。使用-r / - revision 来引用特定的修订版。

show-ignore 

递归查找并列出目录上的 svn:ignore 属性。输出适合附加到$ GIT_DIR / info / exclude 文件。

mkdirs 

尝试根据$ GIT_DIR / svn /< refname> /unhandled.log 文件中的信息重新创建核心 Git  无法跟踪的空目录。使用“git svn clone”和“git svn  rebase”时会自动重新创建空目录,因此“mkdirs”适用于“git checkout”或“git reset”之类的命令。  (有关详细信息,请参阅 svn-remote。< name> .automkdirs 配置文件选项。)

commit-diff 

从命令行提交两个 tree-ish 参数的 diff。此命令不依赖于git svn init -ed 存储库。该命令有三个参数,(a)要反对的原始树,(b)新的树结果,(c)目标 Subversion 存储库的 URL。如果您使用的是 git svn -aware 存储库(已经initgit svn 一起使用),则可以省略最终参数(URL)。 -r< revision>此选项是必需的。

提交消息直接使用-m-F选项提供,或者在第二个 tree-ish 表示此类对象时间接提供标记或提交,或者通过调用编辑器请求提交消息(请参阅--edit选项)下面)。

-m <msg> 
--message=<msg> 

使用给定的msg作为提交消息。此选项禁用--edit选项。

-F <filename> 
--file=<filename> 

从给定文件中获取提交消息。此选项禁用--edit选项。

info 

显示与“svn info”提供的文件或目录类似的信息。目前不支持-r / - revision 参数。使用–url 选项仅输出 URL: 字段的值。

proplist 

列出存储在 Subversion 存储库中的有关给定文件或目录的属性。使用-r / - revision 来引用特定的 Subversion 修订版。

propget

获取作为文件的第一个参数给出的 Subversion 属性。可以使用-r / - revision 指定特定修订。

propset 

将作为第一个参数给出的 Subversion 属性设置为作为第三个参数给出的文件的第二个参数给出的值。

例:

git svn propset svn:keywords "FreeBSD=%H" devel/py-tipper/Makefile

这将为文件 devel / py-tipper / Makefile 设置属性 svn:keywordsFreeBSD =%H

show-externals 

显示 Subversion 外部。使用-r / - revision 指定特定修订。

gc 

压缩GITDIR/svn/<refname>/unhandled.log文件并删除 GIT_DIR / svn /< refname> /unhandled.log 文件并删除 GIT_DIR / svn /< refname> / index 文件。

reset 

fetch 的效果撤消回指定的修订版。这允许您重新 _ 获取 _ SVN 修订版。通常,SVN 修订版的内容永远不会改变,并且 _ 重置 _ 不应该是必需的。但是,如果 SVN 权限发生更改,或者您更改了–ignore-paths 选项,则 fetch 可能会失败,并且“未在提交中找到”(文件以前未显示)或“校验和不匹配”(错过了修改)。如果问题文件永远不能被忽略(使用–ignore-paths)修复 repo 的唯一方法是使用 reset

仅更改了 rev_map 和 refs / remotes / git-svn(有关详细信息,请参阅下面 FILES 部分中的 $ GIT_DIR / svn / * \ * /。rev_map。* )。使用 fetch 然后 git resetgit rebase 关注 _ 重置 _,将本地分支移动到新树上。

-r <n> 
--revision=<n> 

指定要保留的最新修订。所有后来的修订都被丢弃了。

-p 
--parent 

同时丢弃指定的修订版,保留最近的父版本。

Example: 

假设您在“master”中有本地更改,但您需要重新获取“r2”。

r1---r2---r3 remotes/git-svn
                \
                 A---B master

修复了忽略路径或 SVN 权限问题,导致“r2”首先不完整。然后:

git svn reset -r2 -p
git svn fetch
r1---r2'--r3' remotes/git-svn
      \
       r2---r3---A---B master

然后使用 git rebase 修复“master”。不要使用 git merge 或者您的历史记录将与以后的 dcommit 不兼容!

git rebase --onto remotes/git-svn A^ master
r1---r2'--r3' remotes/git-svn
                \
                 A'--B' master

OPTIONS

--shared[=(false|true|umask|group|all|world|everybody)] 
--template=<template_directory> 

仅用于 init 命令。这些直接传递给 git init

-r <arg> 
--revision <arg> 

fetch 命令一起使用。

这允许支持部分/烧灼历史的修订范围。 NUMBER, NUMBER, NUMBER1:NUMBER2(数字范围), NUMBER2(数字范围), NUMBER:HEAD 和 BASE:$ NUMBER 均受支持。

这可以让你在运行 fetch 时制作部分镜像;但通常不推荐,因为历史将被跳过和丢失。

- 
--stdin 

仅用于 set-tree 命令。

从 stdin 读取提交列表并以相反的顺序提交它们。只从每一行读取前导 sha1,因此可以使用 git rev-list --pretty = oneline 输出。

--rmdir 

仅用于 dcommitset-treecommit-diff 命令。

如果没有留下文件,则从 SVN 树中删除目录。 SVN 可以对空目录进行编辑,如果没有文件,则默认情况下不会删除它们。 Git 无法对空目录进行版本控制。启用此标志将使提交到 SVN 的行为与 Git 相同。

config key: svn.rmdir
-e 
--edit 

仅用于 dcommitset-treecommit-diff 命令。

在提交 SVN 之前编辑提交消息。对于提交的对象,默认情况下处于关闭状态,并且在提交树对象时强制关闭。

config key: svn.edit
-l<num> 
--find-copies-harder 

仅用于 dcommitset-treecommit-diff 命令。

它们都直接传递给 git diff-tree ;有关详细信息,请参阅 git-diff-tree [1]

config key: svn.l
config key: svn.findcopiesharder
-A<filename> 
--authors-file=<filename> 

语法与 git cvsimport 使用的文件兼容,但 <>可以提供空的电子邮件地址。

loginname = Joe User <user@example.com>

如果指定了此选项并且 git svn 遇到作者文件中不存在的 SVN 提交者名称, git svn 将中止操作。然后,用户必须添加适当的条目。修改 authors 文件后重新运行以前的 git svn 命令应继续操作。

config key: svn.authorsfile
--authors-prog=<filename> 

如果指定了此选项,则对于 authors 文件中不存在的每个 SVN 提交者名称,将使用提交者名称作为第一个参数执行给定文件。该程序预计将返回“Name< email>”形式的单行或“名称<>”,将被视为包含在作者文件中。

由于历史原因,首先相对于 initclone 的当前目录搜索相对 _ 文件名 _ 并且相对于 _ 的工作树的根目录获取 _。如果找不到 _ 文件名 _,则会像 $ PATH 中的任何其他命令一样进行搜索。

config key: svn.authorsProg
-q 
--quiet 

使 git svn 不那么冗长。再次指定使其更简洁。

-m 
--merge 
-s<strategy> 
--strategy=<strategy> 
-p 
--preserve-merges 

这些仅用于 dcommitrebase 命令。

当使用 dcommit 时,如果不能使用 git reset ,则直接传递给 git rebase (参见 dcommit )。

-n 
--dry-run 

这可以与 dcommitrebase ,_ 分支 _ 和 _ 标签 _ 命令一起使用。

对于 dcommit ,打印出一系列 Git 参数,这些参数将显示哪些差异将被提交给 SVN。

对于 rebase ,显示与当前分支关联的上游 svn 存储库关联的本地分支以及将从中获取的 svn 存储库的 URL。

对于 _ 分支 _ 和 _ 标签 _,显示创建分支或标记时将用于复制的 URL。

--use-log-author 

当检索 svn 提交到 Git 中时(作为 fetchrebasedcommit 操作)的一部分,查找第一个From:Signed-off-by:行日志消息并将其用作作者字符串。

config key: svn.useLogAuthor
--add-author-from 

当从 Git 提交 svn 时(作为 set-treedcommit 操作的一部分),如果现有的日志消息还没有From:Signed-off-by:行,根据 Git 提交的作者字符串附加From:行。如果您使用此,则--use-log-author将为所有提交检索有效的作者字符串。

config key: svn.addAuthorFrom


Git 中文参考(六)(5)https://developer.aliyun.com/article/1565806

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
监控 程序员 开发工具
如何规范Git提交-参考阿里云开发者社区
这篇文章分享了如何规范Git提交,介绍了commit message的格式规范,并通过webhook监控机制来确保代码提交的规范性,从而提高研发效率和代码维护质量。
|
4月前
|
存储 缓存 网络安全
Git 中文参考(一)(8)
Git 中文参考(一)
48 2
|
4月前
|
存储 网络安全 开发工具
Git 中文参考(一)(7)
Git 中文参考(一)
43 2
|
4月前
|
存储 算法 Java
Git 中文参考(一)(6)
Git 中文参考(一)
41 2
|
4月前
|
存储 Shell 开发工具
Git 中文参考(一)(5)
Git 中文参考(一)
31 2
|
4月前
|
存储 开发工具 git
Git 中文参考(一)(4)
Git 中文参考(一)
35 2
|
4月前
|
存储 安全 开发工具
Git 中文参考(一)(3)
Git 中文参考(一)
23 2
|
4月前
|
存储 Shell 开发工具
Git 中文参考(一)(2)
Git 中文参考(一)
37 2
|
4月前
|
存储 人工智能 开发工具
Git 中文参考(五)(9)
Git 中文参考(五)
139 2
|
4月前
|
存储 Linux 开发工具
Git 中文参考(五)(8)
Git 中文参考(五)
30 2