亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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

名稱

gitrevisions  - 指定 Git 的修訂和范圍

概要

gitrevisions

描述

許多 Git 命令都將修訂參數(shù)作為參數(shù)。根據(jù)命令的不同,它們表示特定的提交,或者對于遍歷修訂圖形的命令(例如 git-log [1]),可以提交可訪問的所有提交。對于遍歷修訂圖的命令,還可以明確指定一系列修訂。

另外,一些 Git 命令(例如 git-show [1])也會使用修改參數(shù)來表示其他對象而不是提交,例如 blob (“文件”)或樹(“文件目錄”)。

指定修訂

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

<sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e

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

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

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

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

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

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

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

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

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

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

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

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

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

@

單獨@是一個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 必須具有現(xiàn)有的日志($GIT_DIR/logs/<ref>)。請注意,這會在給定的時間查看當(dāng)?shù)?/strong>裁判的狀態(tài); 例如master上周您當(dāng)?shù)氐姆种C構(gòu)。如果您想查看某些時間內(nèi)提交的內(nèi)容,請參閱--since--until。

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

后綴為@帶括號的后綴(例如{1},{15})指定了 ref 的第n個前置值。例如master@{1},masterwhile master@{5}是第5個先前值的即時先驗值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個分支/提交。

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

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

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

如果在檢出@{push}git push運行branchname(或當(dāng)前HEAD沒有指定branchname),后綴將報告分支 “where we would push to” 。由于我們的推送目標位于遠程存儲庫中,當(dāng)然,我們會報告與該分支對應(yīng)的本地跟蹤分支(即,某處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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

G   H   I   J
 \ /    \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A
A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = 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其祖先)可達的。

虛線表示法

(雙點)范圍標識

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

(三點)對稱差符號

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

在這兩個簡寫符號中,可以省略一端,并將其默認為 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>是關(guān)于指定一個單一的承諾父母,這三種表示法也考慮其父母。例如,你可以說HEAD^2^@,但是你不能說HEAD^@^2。

修訂范圍摘要

<rev>

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

^<rev>

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

<rev1>..<rev2>

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

<rev1>...<rev2>

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

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

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

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

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

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

相當(dāng)于<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
Previous article: Next article: