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

目錄 搜尋
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
文字

命名

git-rev-parse - Pick out and massage parameters

概要

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

描述

許多Git瓷器命令會(huì)混合使用標(biāo)志(即以短劃線開頭的參數(shù)-)以及參數(shù),這些參數(shù)用于git rev-list它們?cè)趦?nèi)部使用的基礎(chǔ)命令,以及標(biāo)志和參數(shù)用于其下游使用的其他命令git rev-list。該命令用于區(qū)分它們。

選項(xiàng)

操作模式

這些選項(xiàng)中的每一個(gè)都必須首先出現(xiàn)在命令行中。

--parseopt

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

--sq-quote

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

--parseopt的選項(xiàng)

--keep-dashdash

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

--stop-at-non-option

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

--stuck-long

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

篩選選項(xiàng)

--revs-only

不要輸出不適用于git rev-list命令的標(biāo)志和參數(shù)。

--no-revs

不要輸出用于git rev-list命令的標(biāo)志和參數(shù)。

--flags

不要輸出非標(biāo)志參數(shù)。

--no-flags

不輸出標(biāo)志參數(shù)。

輸出選項(xiàng)

--default <arg>

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

--prefix <arg>

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

這可用于將參數(shù)轉(zhuǎn)換為在子目錄中運(yùn)行的命令,以便在移動(dòng)到存儲(chǔ)庫的頂層后仍可使用它們。例如:

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

驗(yàn)證只提供了一個(gè)參數(shù),并且可以將其轉(zhuǎn)換為可用于訪問對(duì)象數(shù)據(jù)庫的原始20字節(jié)SHA-1。如果是這樣,將其發(fā)送到標(biāo)準(zhǔn)輸出; 否則,出錯(cuò)。

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

-q   --quiet

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

--sq

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

--short=length

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

--not

顯示對(duì)象名稱時(shí),以前綴為前綴,^^從已有對(duì)象名稱中刪除前綴。

--abbrev-ref=(strict|loose)

對(duì)象名稱的非含糊短名稱。選項(xiàng)core.warnAmbiguousRefs用于選擇嚴(yán)格的縮寫模式。

--symbolic

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

--symbolic-full-name

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

對(duì)象的選項(xiàng)

--all

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

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

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

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

--glob=pattern

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

--exclude=<glob-pattern>

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

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

--disambiguate=<prefix>

顯示名稱以給定前綴開頭的每個(gè)對(duì)象。<prefix>的長度必須至少為4個(gè)十六進(jìn)制數(shù)字,以避免錯(cuò)誤地列出存儲(chǔ)庫中的每個(gè)對(duì)象。

文件選項(xiàng)

--local-env-vars

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

--git-dir

顯示$GIT_DIR是否已定義。否則,顯示.git目錄的路徑。顯示的路徑相對(duì)于當(dāng)前工作目錄。

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

--absolute-git-dir

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

--git-common-dir

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

--is-inside-git-dir

當(dāng)前工作目錄位于存儲(chǔ)庫目錄下方時(shí),打印“true”,否則為“false”。

--is-inside-work-tree

當(dāng)前工作目錄位于存儲(chǔ)庫的工作樹內(nèi)時(shí),打印“true”,否則為“false”。

--is-bare-repository

當(dāng)存儲(chǔ)庫是裸打印“真”,否則“假”。

--resolve-git-dir <path>

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

--git-path <path>

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

--show-cdup

當(dāng)從子目錄調(diào)用該命令時(shí),顯示相對(duì)于當(dāng)前目錄的頂級(jí)目錄的路徑(通常是一系列“../”或空字符串)。

--show-prefix

當(dāng)從子目錄調(diào)用該命令時(shí),顯示當(dāng)前目錄相對(duì)于頂級(jí)目錄的路徑。

--show-toplevel

顯示頂級(jí)目錄的絕對(duì)路徑。

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

--shared-index-path

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

其他選項(xiàng)

--since=datestring   --after=datestring

解析日期字符串,并輸出相應(yīng)的--max-age =參數(shù)git rev-list。

--until=datestring   --before=datestring

解析日期字符串,并輸出相應(yīng)的--min-age =參數(shù)git rev-list。

<args>…

要解析的標(biāo)志和參數(shù)。

指定修訂

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

<sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e

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

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

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

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

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

  1. 如果$GIT_DIR/<refname>存在,那就是你的意思(這通常是有用的,只有為HEAD,FETCH_HEAD,ORIG_HEADMERGE_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調(diào)用時(shí)從遠(yuǎn)程存儲(chǔ)庫中獲取的分支。ORIG_HEAD是通過命令創(chuàng)建的,這些命令HEAD以激烈的方式移動(dòng)您的行為,記錄HEAD它們?cè)诓僮髦暗奈恢?,以便您可以輕松地將分支的頂端更改回到運(yùn)行之前的狀態(tài)。MERGE_HEAD記錄您在運(yùn)行時(shí)正在合并到您的分支中的提交git merge。CHERRY_PICK_HEAD記錄您在運(yùn)行時(shí)正在挑選的提交git cherry-pick

請(qǐng)注意,refs/*上述任何情況都可能來自$GIT_DIR/refs目錄或$GIT_DIR/packed-refs文件。雖然未指定ref名稱編碼,但首選UTF-8,因?yàn)槟承┹敵鎏幚砜赡懿捎肬TF-8中的ref名稱。

@

@ alone is a shortcut for HEAD.

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

后面跟著@帶括號(hào)的括號(hào)中的后綴(例如{yesterday},{1 month 2 weeks 3 days 1 hour 1 second ago}{1979-02-26 18:30:00})的后綴指定前一個(gè)時(shí)間點(diǎn)的ref的值。該后綴只能在ref名稱后面使用,并且ref必須具有現(xiàn)有的日志($GIT_DIR/logs/<ref>)。請(qǐng)注意,這會(huì)在給定的時(shí)間查看當(dāng)?shù)?/strong>裁判的狀態(tài); 例如master上周您當(dāng)?shù)氐姆种C(jī)構(gòu)。如果您想查看某些時(shí)間內(nèi)提交的內(nèi)容,請(qǐng)參閱--since--until。

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

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

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

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

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

該構(gòu)造@{-<n>}意味著在當(dāng)前之前檢出的第n個(gè)分支/提交。

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

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

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

@{push}如果在檢出時(shí)git push運(yùn)行branchname(或當(dāng)前HEAD沒有指定branchname),后綴將報(bào)告分支“我們將推送到哪里” 。由于我們的推送目標(biāo)位于遠(yuǎn)程存儲(chǔ)庫中,當(dāng)然,我們會(huì)報(bào)告與該分支對(duì)應(yīng)的本地跟蹤分支(即,某處refs/remotes/)。

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

$ 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

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

當(dāng)拼寫成大寫字母時(shí),這個(gè)后綴也是可以接受的,無論大小寫是什么意思都是相同的。

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

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

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

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

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

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

rev^{object}可以用來確定rev存在的對(duì)象的名稱,而不需要rev作為標(biāo)簽,也不需要解引用rev; 因?yàn)橐粋€(gè)標(biāo)簽已經(jīng)是一個(gè)對(duì)象,所以即使一次到達(dá)一個(gè)對(duì)象也不需要解除引用。

rev^{tag}可以用來確保rev識(shí)別現(xiàn)有的標(biāo)簽對(duì)象。

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

一個(gè)后綴^跟一個(gè)空括號(hào)對(duì)意味著對(duì)象可以是一個(gè)標(biāo)簽,并遞歸地引用標(biāo)簽,直到找到一個(gè)非標(biāo)簽對(duì)象。

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

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

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

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

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

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

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

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

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

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對(duì)一組提交進(jìn)行操作,而不僅僅是一次提交。

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

提交的可達(dá)集是提交本身和祖先鏈中的提交。

提交排除

^<rev> (caret) Notation

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

虛線表示法

The .. (two-dot) Range Notation

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

The (three dot) Symmetric Difference Notation

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

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

Other <rev>^ Parent Shorthand Notations

還有三個(gè)其他的shorthands,對(duì)于合并提交,對(duì)于由提交和它的父提交形成的集合進(jìn)行命名特別有用。

r1^@符號(hào)表示的所有家長r1。

r1^!表示包括提交r1但排除其所有父母。這個(gè)符號(hào)本身表示單個(gè)提交r1。

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

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

修訂范圍摘要

<rev>

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

^<rev>

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

<rev1>..<rev2>

包含可從<rev2>訪問的提交,但不包括可從<rev1>訪問的提交。當(dāng)<rev1>或<rev2>被省略時(shí),它默認(rèn)為HEAD

<rev1>...<rev2>

包含可從<rev1>或<rev2>訪問的提交,但排除可從兩者訪問的提交。當(dāng)<rev1>或<rev2>被省略時(shí),它默認(rèn)為HEAD。

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

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

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

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

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

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

這里有一些使用上面的Loeliger插圖的例子,仔細(xì)地說明了符號(hào)的擴(kuò)展和選擇中的每一步:

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幫助按摩選項(xiàng),使shell腳本擁有與C builtins相同的設(shè)施。它作為一個(gè)選項(xiàng)標(biāo)準(zhǔn)化器(例如拆分單個(gè)交換機(jī)聚合值),有點(diǎn)像getopt(1)。

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

注意:確保在傳遞結(jié)果時(shí)引用結(jié)果eval。見下面的例子。

輸入格式

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

每行選項(xiàng)都有以下格式:

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

<opt-spec>

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

<flags>

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

  • 如果選項(xiàng)帶有參數(shù),請(qǐng)使用=。

  • 使用?意味著選項(xiàng)接受一個(gè)可選參數(shù)。您可能想要使用該--stuck-long模式來明確地解析可選參數(shù)。

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

  • 使用!不使提供相應(yīng)的否定長選項(xiàng)。

<arg-hint>

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

在刪除空格之后,該行的其余部分將用作與該選項(xiàng)關(guān)聯(lián)的幫助。

空白行被忽略,并且不符合此規(guī)格的行被用作選項(xiàng)組標(biāo)題(用空格開始行以有意地創(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 $?)"

用法文本

當(dāng)"$@"-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-報(bào)價(jià)

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

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

例子

$ 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"

例子

  • 打印當(dāng)前提交的對(duì)象名稱:$ git rev-parse --verify HEAD

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

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

如果$ REV為空或者不是有效的修訂版,這將會(huì)出錯(cuò)。

  • 與上面類似:

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

但如果$ REV為空,則會(huì)打印來自主服務(wù)器的提交對(duì)象名稱。

上一篇: 下一篇: