亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

命名

git-rev-parse - Pick out and massage parameters

概要

git rev-parse [ --option ] <args>…

描述

許多Git瓷器命令會混合使用標志(即以短劃線開頭的參數-)以及參數,這些參數用于git rev-list它們在內部使用的基礎命令,以及標志和參數用于其下游使用的其他命令git rev-list。該命令用于區(qū)分它們。

選項

操作模式

這些選項中的每一個都必須首先出現在命令行中。

--parseopt

使用git rev-parse在選項解析模式(見下文PARSEOPT部分)。

--sq-quote

使用git rev-parse的shell引用模式(見下面的SQ-報價部分)。與--sq下面的選項相反,此模式只能引用。沒有其他任何事情可以指揮輸入。

--parseopt的選項

--keep-dashdash

只在--parseopt模式中有意義。告訴選項解析器回顯第一次--會面而不是跳過它。

--stop-at-non-option

只在--parseopt模式中有意義。讓選項解析器在第一個非選項參數處停止。這可以用來解析自己接受選項的子命令。

--stuck-long

只在--parseopt模式中有意義。如果可用的話,以長格式輸出選項,并且其參數被卡住。

篩選選項

--revs-only

不要輸出不適用于git rev-list命令的標志和參數。

--no-revs

不要輸出用于git rev-list命令的標志和參數。

--flags

不要輸出非標志參數。

--no-flags

不輸出標志參數。

輸出選項

--default <arg>

如果沒有用戶給出的參數,則<arg>改為使用。

--prefix <arg>

行為就像git rev-parse<arg>工作樹的子目錄中調用一樣。任何相關的文件名被解析,就好像它們以前綴一樣,<arg>并將以該形式打印。

這可用于將參數轉換為在子目錄中運行的命令,以便在移動到存儲庫的頂層后仍可使用它們。例如:

prefix=$(git rev-parse --show-prefix)cd "$(git rev-parse --show-toplevel)"# rev-parse provides the -- needed for 'set'eval "set $(git rev-parse --sq --prefix "$prefix" -- "$@")"

--verify

驗證只提供了一個參數,并且可以將其轉換為可用于訪問對象數據庫的原始20字節(jié)SHA-1。如果是這樣,將其發(fā)送到標準輸出; 否則,出錯。

如果要確保輸出實際命名對象數據庫中的對象并/或可以將其用作所需的特定對象類型,則可以將^{type}剝離運算符添加到參數中。例如,git rev-parse "$VAR^{commit}"將確保$VAR命名為提交ish的現有對象(即,提交或指向提交的帶注釋的標記)。確??梢允褂?code>$VAR任何類型的現有對象的名稱git rev-parse "$VAR^{object}"。

-q   --quiet

只在--verify模式中有意義。如果第一個參數不是有效的對象名稱,則不輸出錯誤消息; 而是靜靜地退出非零狀態(tài)。成功時,將有效對象名稱的SHA-1打印到stdout。

--sq

通常每個標志和參數輸出一行。此選項使輸出成為單行,并且適用于shell的消耗。當你期望你的參數包含空格和換行符時(例如使用鎬-Sgit diff-*)很有用。與--sq-quote選項相反,命令輸入仍然像往常一樣解釋。

--short=length

--verify與之相同,但將對象名縮短為至少包含length字符的唯一前綴。最小長度是4,默認值是core.abbrev配置變量的有效值(請參閱git-config [1])。

--not

顯示對象名稱時,以前綴為前綴,^^從已有對象名稱中刪除前綴。

--abbrev-ref=(strict|loose)

對象名稱的非含糊短名稱。選項core.warnAmbiguousRefs用于選擇嚴格的縮寫模式。

--symbolic

通常,對象名稱以SHA-1形式輸出(可能帶有^前綴); 該選項使它們以盡可能接近原始輸入的形式輸出。

--symbolic-full-name

這與--symbolic類似,但它省略了不是參考的輸入(即分支或標簽名稱;或者更明確地消除“頭部/主”形式的歧義,當您想命名“主”分支時,標簽“master”),并將其顯示為完整的refnames(例如“refs / heads / master”)。

對象的選項

--all

顯示在中找到的所有參考refs/。

--branches=pattern   --tags=pattern   --remotes=pattern

顯示所有分支,標簽,或遠程跟蹤分支,分別為(即,裁判發(fā)現refs/heads,refs/tagsrefs/remotes分別)。

如果pattern給出a,則只顯示匹配給定shell glob的引用。如果模式不包含匹配字符(?,,*[),則通過追加將其轉換為前綴匹配/*

--glob=pattern

顯示與shell glob模式匹配的所有參考pattern。如果模式沒有開始refs/,則會自動添加前綴。如果模式不包含匹配字符(?,,*[),則通過追加將其轉換為前綴匹配/*

--exclude=<glob-pattern>

不包括裁判匹配<glob-pattern>,未來--all--branches,--tags,--remotes,或--glob原本考慮。這個選項排除累積模式到下一個的重復--all--branches,--tags--remotes,或--glob選擇(其他選項或參數不清除積累的模式)。

給予不應該開始的模式refs/heads,refs/tagsrefs/remotes當應用到--branches,--tags--remotes分別,他們必須開始refs/在應用于--glob--all。如果尾隨/*是有意的,則必須明確給出。

--disambiguate=<prefix>

顯示名稱以給定前綴開頭的每個對象。<prefix>的長度必須至少為4個十六進制數字,以避免錯誤地列出存儲庫中的每個對象。

文件選項

--local-env-vars

列出存儲庫本地的GIT_ *環(huán)境變量(例如GIT_DIR或GIT_WORK_TREE,但不包括GIT_EDITOR)。僅列出變量的名稱,而不是它們的值,即使它們已設置。

--git-dir

顯示$GIT_DIR是否已定義。否則,顯示.git目錄的路徑。顯示的路徑相對于當前工作目錄。

如果$GIT_DIR未定義,并且未檢測到當前目錄位于Git存儲庫或工作樹中,則向stderr發(fā)送消息并以非零狀態(tài)退出。

--absolute-git-dir

就像--git-dir,但它的輸出始終是規(guī)范化的絕對路徑。

--git-common-dir

顯示$GIT_COMMON_DIR是否已定義,否則$GIT_DIR。

--is-inside-git-dir

當前工作目錄位于存儲庫目錄下方時,打印“true”,否則為“false”。

--is-inside-work-tree

當前工作目錄位于存儲庫的工作樹內時,打印“true”,否則為“false”。

--is-bare-repository

當存儲庫是裸打印“真”,否則“假”。

--resolve-git-dir <path>

檢查<path>是否是有效的存儲庫或指向有效存儲庫的gitfile,并打印存儲庫的位置。如果<path>是一個gitfile,那么將打印解析的實際存儲庫的路徑。

--git-path <path>

解析“$ GIT_DIR / <path>”并考慮其他路徑重定位變量,例如$ GIT_OBJECT_DIRECTORY,$ GIT_INDEX_FILE ...。例如,如果$ GIT_OBJECT_DIRECTORY設置為/ foo / bar,則“git rev-parse --git-path objects / abc”返回/ foo / bar / abc。

--show-cdup

當從子目錄調用該命令時,顯示相對于當前目錄的頂級目錄的路徑(通常是一系列“../”或空字符串)。

--show-prefix

當從子目錄調用該命令時,顯示當前目錄相對于頂級目錄的路徑。

--show-toplevel

顯示頂級目錄的絕對路徑。

--show-superproject-working-tree顯示使用當前存儲庫作為其子模塊的超級項目工作樹(如果存在)的根的絕對路徑。如果當前存儲庫未被任何項目用作子模塊,則不輸出。

--shared-index-path

在分割索引模式下顯示共享索引文件的路徑,如果不在分割索引模式下則顯示空白。

其他選項

--since=datestring   --after=datestring

解析日期字符串,并輸出相應的--max-age =參數git rev-list。

--until=datestring   --before=datestring

解析日期字符串,并輸出相應的--min-age =參數git rev-list。

<args>…

要解析的標志和參數。

指定修訂

修訂參數<rev>通常(但不一定)命名提交對象。它使用所謂的extended SHA-1語法。以下是拼寫對象名稱的各種方法。列表附近列出的名稱包含在提交中的樹和blob。

<sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e

完整的SHA-1對象名稱(40字節(jié)的十六進制字符串)或存儲庫中唯一的前導子字符串。例如,dae86e1950b1277e545cee180551750029cfe735和dae86e都會命名相同的提交對象,前提是存儲庫中沒有其他對象,其對象名稱以dae86e開頭。

<describeOutput>, e.g. v1.7.4.2-679-g3bee7fb

輸出來自git describe; 即最接近的標記,可選地后跟破折號和多個提交,后跟短劃線,a g和縮寫對象名稱。

<refname>, e.g. master, heads/master, refs/heads/master

符號參考名稱。例如master通常意味著引用的提交對象refs/heads/master。如果你碰巧有兩個heads/mastertags/master,你可以明確地說heads/master要告訴Git的你的意思是哪一個。當模棱兩可時,<refname>通過在以下規(guī)則中進行第一次匹配來消除a :

  1. 如果$GIT_DIR/<refname>存在,那就是你的意思(這通常是有用的,只有為HEAD,FETCH_HEAD,ORIG_HEAD,MERGE_HEADCHERRY_PICK_HEAD);

  1. 否則,refs/<refname>如果存在;

  1. 否則,refs/tags/<refname>如果存在;

  1. 否則,refs/heads/<refname>如果存在;

  1. 否則,refs/remotes/<refname>如果存在;

  1. 否則,refs/remotes/<refname>/HEAD如果存在。

HEAD命名您在工作樹中基于更改的提交。FETCH_HEAD記錄您在上次git fetch調用時從遠程存儲庫中獲取的分支。ORIG_HEAD是通過命令創(chuàng)建的,這些命令HEAD以激烈的方式移動您的行為,記錄HEAD它們在操作之前的位置,以便您可以輕松地將分支的頂端更改回到運行之前的狀態(tài)。MERGE_HEAD記錄您在運行時正在合并到您的分支中的提交git merge。CHERRY_PICK_HEAD記錄您在運行時正在挑選的提交git cherry-pick。

請注意,refs/*上述任何情況都可能來自$GIT_DIR/refs目錄或$GIT_DIR/packed-refs文件。雖然未指定ref名稱編碼,但首選UTF-8,因為某些輸出處理可能采用UTF-8中的ref名稱。

@

@ alone is a shortcut for HEAD.

<refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago}

后面跟著@帶括號的括號中的后綴(例如{yesterday},{1 month 2 weeks 3 days 1 hour 1 second ago}{1979-02-26 18:30:00})的后綴指定前一個時間點的ref的值。該后綴只能在ref名稱后面使用,并且ref必須具有現有的日志($GIT_DIR/logs/<ref>)。請注意,這會在給定的時間查看當地裁判的狀態(tài); 例如master上周您當地的分支機構。如果您想查看某些時間內提交的內容,請參閱--since--until。

<refname>@{<n>}, e.g. master@{1}

后綴為@帶括號的后綴(例如{1}{15})指定了該ref的第n個前置值。例如master@{1},masterwhile master@{5}是第5個先前值的即時先驗值master。該后綴只能在ref名稱后面使用,并且ref必須具有現有的日志($GIT_DIR/logs/<refname>)。

@{<n>}, e.g. @{1}

您可以使用@帶有空引用部分的構造來獲取當前分支的reflog條目。例如,如果您在分支上,blabla@{1}意味著與之相同blabla@{1}。

@{-<n>}, e.g. @{-1}

該構造@{-<n>}意味著在當前之前檢出的第n個分支/提交。

<branchname>@{upstream}, e.g. master@{upstream}, @{u}

@{upstream}branchname(簡稱<branchname>@{u})的后綴是指由branchname指定的分支設置為在(使用branch.<name>.remoteand branch.<name>.merge)配置的基礎上構建的分支。缺少的branchname默認為當前的。當用大寫拼寫時,這些后綴也是可接受的,無論大小寫是什么,它們都表示相同的事物。

<branchname>@{push}, e.g. master@{push}, @{push}

@{push}如果在檢出時git push運行branchname(或當前HEAD沒有指定branchname),后綴將報告分支“我們將推送到哪里” 。由于我們的推送目標位于遠程存儲庫中,當然,我們會報告與該分支對應的本地跟蹤分支(即,某處refs/remotes/)。

這里有一個例子可以使它更加清晰:

$ git config push.default current
$ git config remote.pushdefault myfork
$ git checkout -b mybranch origin/master

$ git rev-parse --symbolic-full-name @{upstream}refs/remotes/origin/master

$ git rev-parse --symbolic-full-name @{push}refs/remotes/myfork/mybranch

在示例中請注意,我們建立了一個三角形工作流程,我們從一個位置拉出并推送到另一個位置。在非三角形工作流程中,與之@{push}相同@{upstream},并且不需要它。

當拼寫成大寫字母時,這個后綴也是可以接受的,無論大小寫是什么意思都是相同的。

<rev>^, e.g. HEAD^, v1.5.1^0

^修訂參數的后綴表示該提交對象的第一個父代。^<n>意味著第n個父母(即<rev>^相當于<rev>^1)。作為一個特殊規(guī)則,<rev>^0意味著提交本身,并在<rev>引用提交對象的標記對象的對象名稱時使用。

<rev>~<n>, e.g. master~3

~<n>修訂參數的后綴表示作為指定提交對象的第n代祖先的提交對象,僅在第一個父代之后。即<rev>~3相當于<rev>^^^哪個相當于<rev>^1^1^1。請參閱下面的表格來說明此表格的用法。

<rev>^{<type>}, e.g. v0.99.8^{commit}

一個后綴^跟在括號內的對象類型名稱意味著以<rev>遞歸方式解引用對象,直到<type>找到類型的對象或者對象不能被解除引用(在這種情況下,barf)。例如,如果<rev>是commit-ish,則<rev>^{commit}描述相應的提交對象。同樣,如果<rev>是樹型,則<rev>^{tree}描述相應的樹型對象。<rev>^0是短暫的<rev>^{commit}。

rev^{object}可以用來確定rev存在的對象的名稱,而不需要rev作為標簽,也不需要解引用rev; 因為一個標簽已經是一個對象,所以即使一次到達一個對象也不需要解除引用。

rev^{tag}可以用來確保rev識別現有的標簽對象。

<rev>^{}, e.g. v0.99.8^{}

一個后綴^跟一個空括號對意味著對象可以是一個標簽,并遞歸地引用標簽,直到找到一個非標簽對象。

<rev>^{/<text>}, e.g. HEAD^{/fix nasty bug}

后綴^的修正參數,其次,它包含用斜線為首的文本的一對括號,是一樣的:/fix nasty bug下面的語法不同之處在于它返回最年輕的匹配提交其是從可到達<rev>之前^

:/<text>, e.g. :/fix nasty bug

一個冒號,后跟一個斜線,后跟一個文本,命名提交消息與指定正則表達式匹配的提交。該名稱返回可從任何ref訪問的最年輕匹配提交。正則表達式可以匹配提交消息的任何部分。要匹配以字符串開頭的消息,可以使用例如:/^foo。特殊序列:/!保留給修飾符以匹配內容。:/!-foo執(zhí)行否定匹配,同時:/!!foo匹配文字!字符,然后匹配foo。任何以其他序列開始的序列:/!現在都被保留。

<rev>:<path>, e.g. HEAD:README, :README, master:./README

一個后綴:后面跟著一個路徑的名稱是由冒號前部分命名的tree-ish對象中給定路徑上的blob或樹。:path(在冒號前有一個空白部分)是下面描述的語法的特例:記錄在給定路徑索引處的內容。以當前工作目錄開始./../相對于當前工作目錄的路徑。給定的路徑將被轉換為相對于工作樹的根目錄。這對于從具有與工作樹相同樹結構的提交或樹來處理blob或樹是非常有用的。

:<n>:<path>, e.g. :0:README, :README

一個冒號,后跟一個階段號(0到3)和一個冒號,后跟一個路徑,在給定路徑的索引中命名一個blob對象。缺少的階段編號(以及后面的冒號)命名為0階段編號。在合并期間,階段1是共同的祖先,階段2是目標分支的版本(通常是當前分支),階段3是來自正在合并的分支的版本。

以下是Jon Loeliger的插圖。提交節(jié)點B和C都是提交節(jié)點A的父節(jié)點。父提交按從左到右的順序排列。

G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A
A =      = A^0B = A^   = A^1     = A~1C = A^2  = A^2D = A^^  = A^1^1   = A~2E = B^2  = A^^2F = B^3  = A^^3G = A^^^ = A^1^1^1 = A~3H = D^2  = B^^2    = A^^^2  = A~2^2I = F^   = B^3^    = A^^3^J = F^2  = B^3^2   = A^^3^2

指定范圍

歷史遍歷命令,例如git log對一組提交進行操作,而不僅僅是一次提交。

對于這些命令,使用上一節(jié)中描述的符號來指定單個修訂,意味著reachable來自給定提交的一組提交。

提交的可達集是提交本身和祖先鏈中的提交。

提交排除

^<rev> (caret) Notation

要排除提交可達的提交,使用前綴^符號。例如,^r1 r2意味著提交可達,r2但不包括從r1(即r1其祖先)可達的。

虛線表示法

The .. (two-dot) Range Notation

^r1 r2組操作似乎經常有它的簡寫。當你有兩個提交r1并且r2(根據上面指定版本中所述的語法命名)時,你可以要求提交從r2到達的提交,但不包括從r1到達的那些提交,^r1 r2它可以寫為r1..r2。

The (three dot) Symmetric Difference Notation

類似的符號r1...r2被稱為和的對稱差,r1并被r2定義為r1 r2 --not $(git merge-base --all r1 r2)。它是從r1(左側)或r2(右側)中的任一個可達的提交集合,但不是來自兩者。

在這兩個簡寫符號中,可以省略一端,并將其默認為HEAD。例如,origin..是一個簡寫,origin..HEAD并問“自從我從原始分支分出后,我做了什么?” 同樣,它..origin也是一種速記,HEAD..origin并問道:“我從他們身上分離出來后,起源究竟發(fā)生了什么?” 請注意,..這意味著HEAD..HEAD哪個空白區(qū)域可以從HEAD到達和無法到達。

Other <rev>^ Parent Shorthand Notations

還有三個其他的shorthands,對于合并提交,對于由提交和它的父提交形成的集合進行命名特別有用。

r1^@符號表示的所有家長r1

r1^!表示包括提交r1但排除其所有父母。這個符號本身表示單個提交r1

<rev>^-<n>符號包括<rev>但不包括<N>個親本(即,簡寫<rev>^<n>..<rev>),其中<n>= 1,如果沒有給出。這對合并提交通常很有用,您可以通過合并提交<commit>^-來獲取合并提交中合并的分支中的所有提交<commit>(包括<commit>它自己)。

雖然<rev>^<n>是關于指定一個單一的提交父母,但這三個符號也考慮到它的父母。例如,你可以說HEAD^2^@,但是你不能說HEAD^@^2。

修訂范圍摘要

<rev>

包含可從<rev>(即<rev>及其祖先)訪問的提交。

^<rev>

排除可從<rev>(即<rev>及其祖先)訪問的提交。

<rev1>..<rev2>

包含可從<rev2>訪問的提交,但不包括可從<rev1>訪問的提交。當<rev1>或<rev2>被省略時,它默認為HEAD

<rev1>...<rev2>

包含可從<rev1>或<rev2>訪問的提交,但排除可從兩者訪問的提交。當<rev1>或<rev2>被省略時,它默認為HEAD。

<rev>^@, e.g. HEAD^@

一個后綴^后跟一個符號與列出所有父母的<rev>意思相同(意思是,包括任何可從其父母獲得的東西,但不包括承諾本身)。

<rev>^!, e.g. HEAD^!

一個后綴^后跟一個感嘆號的方式與提交相同<rev>,然后它的所有父母前綴^以排除它們(和它們的祖先)。

<rev>^-<n>, e.g. HEAD^-, HEAD^-2

相當于<rev>^<n>..<rev>,<n>如果沒有給出,則= 1。

這里有一些使用上面的Loeliger插圖的例子,仔細地說明了符號的擴展和選擇中的每一步:

Args   Expanded arguments    Selected commits
D                            G H D
D F                          G H I J D F^G D                         H D^D B                         E I J F B^D B C                       E I J F B C
C                            I J F C
B..C   = ^B C                C
B...C  = B ^F C              G H D E B C
B^-    = B^..B= ^B^1 B              E I J F B
C^@    = C^1= F                   I J F
B^@    = B^1 B^2 B^3= D E F               D G H E F I J
C^!    = C ^C^@= C ^C^1= C ^F                C
B^!    = B ^B^@= B ^B^1 ^B^2 ^B^3= B ^D ^E ^F          B
F^! D  = F ^I ^J D           G H D F

Parseopt

--parseopt模式下,git rev-parse幫助按摩選項,使shell腳本擁有與C builtins相同的設施。它作為一個選項標準化器(例如拆分單個交換機聚合值),有點像getopt(1)。

它接受標準輸入的解析和理解選項的規(guī)范,并在標準輸出上回顯一個適合于sh(1) eval用規(guī)范化參數替換參數的字符串。如果發(fā)生錯誤,它會在標準錯誤流上輸出使用情況,并以代碼129退出。

注意:確保在傳遞結果時引用結果eval。見下面的例子。

輸入格式

git rev-parse --parseopt輸入格式完全基于文本。它有兩部分,由僅包含一行的行分隔--。分隔符之前的行(應該是一個或多個)用于使用。分隔符后面的行描述了選項。

每行選項都有以下格式:

<opt-spec><flags>*<arg-hint>? SP+ help LF

<opt-spec>

它的格式是短選項字符,然后是用逗號分隔的長選項名稱。這兩個部分都不是必需的,但至少需要一個??赡懿话魏?code><flags>字符。h,help,dry-run并且f是正確的例子<opt-spec>。

<flags>

<flags> are of *, =, ? or !.

  • 如果選項帶有參數,請使用=。

  • 使用?意味著選項接受一個可選參數。您可能想要使用該--stuck-long模式來明確地解析可選參數。

  • 使用*意味著該選項不應該在所生成的使用上市-h的說法。它顯示為--help-all在gitcli [7]中記錄。

  • 使用!不使提供相應的否定長選項。

<arg-hint>

<arg-hint>,如果指定,則用作幫助輸出中參數的名稱,用于帶有參數的選項。<arg-hint>由第一個空格終止。通常使用短劃線來分隔多詞論證提示中的單詞。

在刪除空格之后,該行的其余部分將用作與該選項關聯的幫助。

空白行被忽略,并且不符合此規(guī)格的行被用作選項組標題(用空格開始行以有意地創(chuàng)建此類行)。

例子

OPTS_SPEC="\
some-command [options] <args>...some-command does foo and bar!--h,help    show the help

foo       some nifty option --foo
bar=      some cool option --bar with an argument
baz=arg   another cool option --baz with a named argument
qux?path  qux may take a path argument but has meaning by itself

  An option group Header
C?        option C with an optional argument"

eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"

用法文本

"$@"-h--help在上述例子中,下面的用法文本將被顯示:

usage: some-command [options] <args>...

    some-command does foo and bar!    -h, --help            show the help    --foo                 some nifty option --foo    --bar ...             some cool option --bar with an argument    --baz <arg>           another cool option --baz with a named argument    --qux[=<path>]        qux may take a path argument but has meaning by itself

An option group Header    -C[...]               option C with an optional argument

SQ-報價

--sq-quote模式中,git rev-parse標準輸出上的回聲適合單線sh(1) eval。這條線是通過標準化后面的參數來完成的--sq-quote。除了引用參數外,沒有其他任何事情完成了。

如果希望命令輸入git rev-parse在輸出被shell引用之前仍照常解釋,請參閱--sq選項。

例子

$ cat >your-git-script.sh <<\EOF
#!/bin/sh
args=$(git rev-parse --sq-quote "$@")   # quote user-supplied arguments
command="git frotz -n24 $args"          # and use it inside a handcrafted
                                        # command line
eval "$command"EOF

$ sh your-git-script.sh "a b'c"

例子

  • 打印當前提交的對象名稱:$ git rev-parse --verify HEAD

  • 從$ REV shell變量中的版本打印提交對象名稱:

$ git rev-parse --verify $ REV ^ {commit}

如果$ REV為空或者不是有效的修訂版,這將會出錯。

  • 與上面類似:

$ git rev-parse --default master --verify $REV

但如果$ REV為空,則會打印來自主服務器的提交對象名稱。

Previous article: Next article: