作为一名 iOS 工程师,我很难理解 git 文档。我查看了术语表并在线搜索,但无法\xe2\x80\x99找到我的问题的答案。
\n示例git checkout:其文档如下:
1 git checkout [-q] [-f] [-m] [<branch>]\n2 git checkout [-q] [-f] [-m] --detach [<branch>]\n3 git checkout [-q] [-f] [-m] [--detach] <commit>\n4 git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]\n5 git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>\xe2\x80\xa6\n6 git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]\n7 git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>\xe2\x80\xa6\xe2\x80\x8b]\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x98\x9d\xef\xb8\x8f 我自己添加了行号
\ngit checkout [-q] [-f] [-m] [<branch>]使用 ,吗?但分支不会 \xe2\x80\x99 工作,因为\xe2\x80\x99t 不在该行中吗?我的意思是前三行看起来非常相似。-q-f-m-q -fgit checkout -q -b-bgit checkout [-q] [-f] [-m] [--detach] <branch>git checkout -q -f与git checkout -f -q. 我尝试过,结果是一样的,但我还是不确定[]但--detach括号里是 is\xe2\x80\x99t ?--detach与里面的第三行有什么不同[][[-b|-B|--orphan] <new_branch>]我应该怎么读?我没有任何线索|意思?()用什么?[--]?我知道这个问题可能看起来很广泛,但不同的语法命令需要放在一起查看。
\n特别感谢查尔斯·达菲 (Charles Duffy),他解决了我的意见并帮助我将这些内容整合在一起。
\n\n\n我数了一下,有7行。每行都是选项的组合,\n可以与该行中任意数量的选项一起使用吗?
\n
这是正确的。但git checkout -q -b new_branch_name有效。它只在 #4 定义下工作,而不是在 #1 定义下工作
\n\n第一行和第二行:为什么前两行不能替换为这一行:
\ngit checkout [-q] [-f] [-m] [--detach]
你是对的,它们可以被替换并且仍然具有相同的概括含义。线条的分离是因为行为的差异足以在以后有单独的长形式解释。
\n\n\n另外我认为顺序并不重要,对于第一行来说, git\ncheckout -q -f 与 git checkout -f -q 没有什么不同。我尝试过,\n结果是一样的,但我还是不确定
\n
除非选项部分另有说明,否则选项之间不存在基于其出现顺序的隐含关系。
\n\xe2\x98\x9d\xef\xb8\x8f 来自POSIX 约定:
\n其余问题的答案可以在Git CodingGuidlines中找到
\n占位符以小写形式拼写并括在尖括号中:
\n<file>\n--sort=<key>\n--abbrev[=<n>]\nRun Code Online (Sandbox Code Playgroud)\n如果占位符有多个单词,则它们之间用破折号分隔:
\n<new-branch-name>\n--template=<template-directory>\nRun Code Online (Sandbox Code Playgroud)\n多次出现的可能性由三个点表示:
\n<file>...\n(One or more of <file>.)\nRun Code Online (Sandbox Code Playgroud)\n可选部分包含在方括号中:
\n[<extra>]\n(Zero or one <extra>.)\n\n--exec-path[=<path>]\n(Option with an optional argument. Note that the "=" is inside the\nbrackets.)\n\n[<patch>...]\n(Zero or more of <patch>. Note that the dots are inside, not\noutside the brackets.)\nRun Code Online (Sandbox Code Playgroud)\n多个替代方案用竖线表示:
\n[-q | --quiet]\n[--utf8 | --no-utf8]\nRun Code Online (Sandbox Code Playgroud)\n需要明确的是,替代方案不能组合,您可以通过-q或--quiet
括号用于分组:
\n[(<rev> | <range>)...]\n(Any number of either <rev> or <range>. Parens are needed to make\nit clear that "..." pertains to both <rev> and <range>.)\n\n[(-p <parent>)...]\n(Any number of option -p, each with one <parent> argument.)\n\ngit remote set-head <name> (-a | -d | <branch>)\n(One and only one of "-a", "-d" or "<branch>" _must_ (no square\nbrackets) be provided.)\nRun Code Online (Sandbox Code Playgroud)\n[(<rev> | <range>)...]the的含义...应用于 的两个参数|,就像 how5应用于3和2from一样(3 + 2) * 5。因此:
rev1 rev2 rev9是可以接受的range1 range3 range4是可以接受的rev1 range1不可接受!还有一个更人为的例子:
\n--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]\nHere "=" is outside the brackets, because "--diff-filter=" is a\nvalid usage. "*" has its own pair of brackets, because it can\n(optionally) be specified only when one or more of the letters is\nalso provided.\nRun Code Online (Sandbox Code Playgroud)\n另请注意,从git checkout页面本身来看,如果您向下滚动(其他页面在“选项”部分的末尾放置了类似的术语表),您将看到一些元数据,可以帮助您更好地理解:
<branch>
\n\n分店到结账;如果它引用一个分支(即,当\n前缀为“refs/heads/”时,该名称是有效的引用),则该分支\n被签出。否则,如果它引用有效的提交,您的 HEAD\n将变得“分离”,并且您不再位于任何分支上(请参阅下面的详细信息)。
\n您可以使用 @{-N} 语法来引用使用“git checkout”操作签出的第 N 个最后分支/提交。您还可以指定 -\n,它与 @{-1} 同义。
\n作为一种特殊情况,如果只有一个合并基,您可以使用 A...B 作为 A 和 B 的合并基\n的快捷方式。您最多可以省略 A 和 B 之一,在这种情况下,它默认为 HEAD。
\n
<new_branch>
\n\n新分支的名称。
\n
<start_point>
\n\n启动新分支的提交名称;有关详细信息,请参阅\ngit-branch[1]。默认为 HEAD。
\n作为一种特殊情况,如果只有一个合并基础,您可以使用“A...B”作为 A 和 B 的合并基础的快捷方式。您最多可以省略 A 和 B 之一,在这种情况下,它默认为 HEAD。
\n
<tree-ish>
\n\n要从中结账的树(当给出路径时)。如果未指定,\n将使用索引。
\n
--
\n\n不要将更多参数解释为选项。
\n
<pathspec>\xe2\x80\xa6
\n\n限制受操作影响的路径。
\n有关更多详细信息,请参阅gitglossary[7]中的 pathspec 条目。
\n
另外,对于指定含义的标准文档,另请参阅POSIX 实用程序约定\n[1]:https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean
\n