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

Name

git-rev-list  - 按反向時間順序列出提交對象

概要

git rev-list [ --max-count=<number> ]             [ --skip=<number> ]             [ --max-age=<timestamp> ]             [ --min-age=<timestamp> ]             [ --sparse ]             [ --merges ]             [ --no-merges ]             [ --min-parents=<number> ]             [ --no-min-parents ]             [ --max-parents=<number> ]             [ --no-max-parents ]             [ --first-parent ]             [ --remove-empty ]             [ --full-history ]             [ --not ]             [ --all ]             [ --branches[=<pattern>] ]             [ --tags[=<pattern>] ]             [ --remotes[=<pattern>] ]             [ --glob=<glob-pattern> ]             [ --ignore-missing ]             [ --stdin ]             [ --quiet ]             [ --topo-order ]             [ --parents ]             [ --timestamp ]             [ --left-right ]             [ --left-only ]             [ --right-only ]             [ --cherry-mark ]             [ --cherry-pick ]             [ --encoding=<encoding> ]             [ --(author|committer|grep)=<pattern> ]             [ --regexp-ignore-case | -i ]             [ --extended-regexp | -E ]             [ --fixed-strings | -F ]             [ --date=<format>]             [ [ --objects | --objects-edge | --objects-edge-aggressive ]               [ --unpacked ] ]             [ --pretty | --header ]             [ --bisect ]             [ --bisect-vars ]             [ --bisect-all ]             [ --merge ]             [ --reverse ]             [ --walk-reflogs ]             [ --no-walk ] [ --do-walk ]             [ --count ]             [ --use-bitmap-index ]             <commit>… [ -- <paths>… ]

描述

通過跟蹤parent來自給定提交的鏈接可以訪問的列表提交,但排除可從其^前面提供的提交可訪問的提交。默認(rèn)情況下,輸出按照時間倒序排列。

你可以把它看作一個集合操作。在命令行中提交的提交形成了一組可從其中任何一個可訪問的提交,然后^從該集合中減去前面給出的任何提交的提交。其余的提交是命令輸出中的內(nèi)容。可以使用各種其他選項(xiàng)和路徑參數(shù)來進(jìn)一步限制結(jié)果。

因此,下面的命令:

        $ git rev-list foo bar ^baz

意思是“列出所有可從foo或可獲取的提交bar,但不能從baz” 提交。

可以使用特殊的符號“ <commit1>.. <commit2>”作為“^'<commit1>' <commit2>”的縮寫。例如,下列任何一種可以互換使用:

        $ git rev-list origin..HEAD
        $ git rev-list HEAD ^origin

另一種特殊的符號是“ <commit1>...... <commit2>”,這是合并有用。所得到的提交集合是兩個操作數(shù)之間的對稱差異。以下兩個命令是等效的:

        $ git rev-list A B --not $(git merge-base --all A B)
        $ git rev-list A...B

rev-list是一個非常重要的Git命令,因?yàn)樗峁┝藰?gòu)建和遍歷提交血統(tǒng)圖的功能。出于這個原因,它有很多不同的選項(xiàng),使它可以被不同于git bisect和的命令使用git repack。

選項(xiàng)

提交限制

除了指定應(yīng)使用描述中解釋的特殊符號列出的提交范圍之外,還可以應(yīng)用其他提交限制。

除非另有說明,否則使用更多選項(xiàng)通常會進(jìn)一步限制輸出(例如--since=<date1>限制為提交更新<date1>,并將其與--grep=<pattern>對其日志消息具有匹配的提交的進(jìn)一步限制進(jìn)行使用<pattern>)。

請注意,在提交排序和格式化選項(xiàng)之前應(yīng)用這些選項(xiàng),例如--reverse。

-<number>   -n <number>   --max-count=<number>

限制提交輸出的數(shù)量。

--skip=<number>

number在開始顯示提交輸出之前跳過提交。

--since=<date>   --after=<date>

顯示比特定日期更近的提交。

--until=<date>   --before=<date>

顯示比特定日期更早的提交。

--max-age=<timestamp>   --min-age=<timestamp>

將提交輸出限制在指定的時間范圍內(nèi)。

--author=<pattern>   --committer=<pattern>

將提交輸出限制為與指定模式(正則表達(dá)式)匹配的作者/提交者標(biāo)題行。使用多于一個--author=<pattern>,選擇作者匹配任何給定模式的提交(類似地為多個--committer=<pattern>)。

--grep-reflog=<pattern>

將提交輸出限制為具有與指定模式(正則表達(dá)式)匹配的reflog條目的提交輸出。使用多于一個--grep-reflog,選擇其reflog消息匹配任何給定模式的提交。除非--walk-reflogs正在使用,否則使用此選項(xiàng)是錯誤的。

--grep=<pattern>

將提交輸出限制為符合指定模式(正則表達(dá)式)的日志消息。使用多于一個--grep=<pattern>,提交的消息匹配任何給定模式的提交被選中(但請參閱--all-match)。

--all-match

將提交輸出限制為匹配所有給定的提交--grep,而不是至少匹配一個提交。

--invert-grep

將提交輸出限制為與日志消息不匹配的模式--grep=<pattern>。

-i   --regexp-ignore-case

匹配正則表達(dá)式限制模式而不考慮字母大小寫。

--basic-regexp

考慮限制模式是基本的正則表達(dá)式; 這是默認(rèn)值。

-E   --extended-regexp

考慮限制模式是擴(kuò)展正則表達(dá)式而不是默認(rèn)的基本正則表達(dá)式。

-F   --fixed-strings

考慮限制模式為固定字符串(不要將模式解釋為正則表達(dá)式)。

-P   --perl-regexp

考慮限制模式是與Perl兼容的正則表達(dá)式。

對這些類型的正則表達(dá)式的支持是可選的編譯時間依賴性。如果Git沒有編譯支持它們,提供這個選項(xiàng)會導(dǎo)致它死亡。

--remove-empty

當(dāng)給定的路徑從樹上消失時停止。

--merges

僅打印合并提交。這完全一樣--min-parents=2

--no-merges

不要打印與多個父代的提交。這完全一樣--max-parents=1

--min-parents=<number>   --max-parents=<number>   --no-min-parents   --no-max-parents

僅顯示至少(或至多)多次父級提交的提交。特別--max-parents=1是一樣的--no-merges--min-parents=2是一樣的--merges。--max-parents=0給出所有的根提交和--min-parents=3所有子分支合并。

--no-min-parents--no-max-parents重新設(shè)置這些限制(無限制)。等價形式是--min-parents=0(任何承諾有0或更多父母)和--max-parents=-1(負(fù)數(shù)表示沒有上限)。

--first-parent

在查看合并提交后,只跟蹤第一個父提交。當(dāng)查看特定主題分支的演變時,此選項(xiàng)可以提供更好的概述,因?yàn)楹喜⒌街黝}分支往往只是適應(yīng)不斷更新的上游時間,并且此選項(xiàng)允許您忽略單獨(dú)提交到你的歷史通過這樣的合并。不能與--bisect結(jié)合使用。

--not

顛倒^所有后續(xù)修訂說明符的前綴(或缺少)的含義,直到下一個--not

--all

假設(shè)所有的參考文件refs/,以及HEAD命令行都列為<commit>

--branches=<pattern>

假設(shè)所有的參數(shù)refs/heads都在命令行中列為<commit>。如果<pattern>給出,則將分支限制為與給定shell glob匹配的分支。如果模式?jīng)]有?,*或者[,/*在結(jié)束時暗示。

--tags=<pattern>

假設(shè)所有的參數(shù)refs/tags都在命令行中列為<commit>。如果<pattern>給出,則將標(biāo)簽限制為與給定 shell glob 匹配的標(biāo)簽。如果模式?jīng)]有?,*或者[/*在結(jié)束時暗示。

--remotes=<pattern>

假設(shè)所有的參數(shù)refs/remotes都在命令行中列為<commit>。如果<pattern>給出,則將遠(yuǎn)程跟蹤分支限制為與給定shell glob匹配的分支。如果模式?jīng)]有?,*或者[,/*在結(jié)束時暗示。

--glob=<glob-pattern>

假設(shè)所有與shell glob匹配的ref <glob-pattern>都在命令行中列出<commit>。領(lǐng)導(dǎo)refs/,如果失蹤,會自動添加前綴。如果模式?jīng)]有?,*或者[,/*在結(jié)束時暗示。

--exclude=<glob-pattern>

不包括裁判匹配<glob-pattern>,未來--all--branches,--tags--remotes,或--glob原本考慮。這個選項(xiàng)排除累積模式到下一個的重復(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。如果尾隨/*是有意的,則必須明確給出。

--reflog

假設(shè)所有reflog提到的對象都在命令行中列為<commit>

--ignore-missing

在輸入中看到一個無效的對象名稱時,假裝沒有給出錯誤的輸入。

--stdin

除了<commit>在命令行上列出之外,還要從標(biāo)準(zhǔn)輸入中讀取它們。如果--看到分隔符,請停止讀取提交并開始讀取路徑以限制結(jié)果。

--quiet

不要將任何內(nèi)容打印到標(biāo)準(zhǔn)輸出。這種形式主要是為了允許調(diào)用者測試退出狀態(tài)以查看一系列對象是否完全連接(或不是)。/dev/null由于輸出不需要格式化,因此比重定向 stdout 要快。

--cherry-mark

--cherry-pick(見下文)但標(biāo)記等價提交=而不是省略它們,以及不等價的提交+。

--cherry-pick

當(dāng)提交集合受到對稱差異限制時,省略任何提交引入與“另一側(cè)”上的另一個提交相同的更改的提交。

例如,如果您有兩個分支,A并且B只列出所有提交的常用方法--left-right(請參閱下面的--left-right選項(xiàng)說明中的示例)。但是,它顯示了從其他分支櫻桃挑選的提交(例如,可能會從分支A挑選“b上的第3個分支”)。使用這個選項(xiàng),這樣的提交對將從輸出中排除。

--left-only   --right-only

列表僅在對稱差異的相應(yīng)側(cè)提交,即只有那些將被標(biāo)記<為resp的列表。>通過--left-right。

例如,--cherry-pick --right-only A...B省略了那些從提交B其在A或者補(bǔ)丁等同于提交A。換句話說,它列出了+來自提交git cherry A B。更準(zhǔn)確地說,--cherry-pick --right-only --no-merges給出了確切的清單。

--cherry

的代名詞--right-only --cherry-mark --no-merges; 有用的是將輸出限制在我們這邊的提交中,并且標(biāo)記那些已經(jīng)應(yīng)用到分叉歷史的另一邊的那些git log --cherry upstream...mybranch,類似于git cherry upstream mybranch。

-g   --walk-reflogs

而不是走提交祖先鏈,將 reflog 條目從最近的一條走到更舊的條目。當(dāng)使用此選項(xiàng),你不能指定提交排除(也就是^commitcommit1..commit2commit1...commit2符號不能使用)。

憑借--pretty比其他格式oneline(原因很明顯),這將導(dǎo)致輸出有從引用日志信息采取兩個額外的線路。輸出中的reflog指示符可能會顯示為ref@{Nth}(其中Nth是 reflog 中的反向按時間順序的索引)或者ref@{timestamp}(具有該條目的時間戳),具體取決于以下幾條規(guī)則:

  1. 如果起始點(diǎn)被指定為ref@{Nth},則顯示索引格式。

  2. 如果起始點(diǎn)被指定為ref@{now},則顯示時間戳記格式。

  3. 如果兩者都未使用,但--date已在命令行中提供,請按照要求的格式顯示時間戳--date

  4. 否則,顯示索引格式。

  • 在此之下--pretty=oneline,提交消息在同一行上以此信息為前綴。該選項(xiàng)不能與--reverse。另請參閱 git-reflog [1]。

--merge

合并失敗后,顯示引用文件有沖突并且不存在于所有合并頭上。

--boundary

輸出排除邊界提交。邊界提交以前綴-。

--use-bitmap-index

嘗試使用pack位圖索引加速遍歷(如果有可用的話)。請注意,遍歷時--objects,樹和斑點(diǎn)不會打印其相關(guān)路徑。

--progress=<header>

在考慮對象時顯示stderr的進(jìn)度報告。該<header>文本將印有各自的最新進(jìn)展。

歷史簡化

有時你只對歷史的一部分感興趣,例如修改特定<path>的提交。但是有兩個部分History Simplification,一部分是選擇提交,另一部分是如何執(zhí)行,因?yàn)橛懈鞣N策略可以簡化歷史記錄。

以下選項(xiàng)選擇要顯示的提交:

<paths>

提交修改給定的<路徑>被選中。

--simplify-by-decoration

由某個分支或標(biāo)簽引用的提交被選中。

請注意,可以顯示額外的提交以提供有意義的歷史記錄。

以下選項(xiàng)會影響簡化的執(zhí)行方式:

默認(rèn)模式

將歷史簡化為解釋樹的最終狀態(tài)的最簡單歷史記錄。最簡單的,因?yàn)槿绻罱K結(jié)果是相同的(即合并具有相同內(nèi)容的分支)

--full-history

與默認(rèn)模式相同,但不修剪某些歷史記錄。

--dense

只顯示選定的提交,另外一些提供有意義的歷史記錄。

--sparse

顯示簡化歷史記錄中的所有提交。

--simplify-merges

附加選項(xiàng)可--full-history從結(jié)果歷史記錄中刪除一些不必要的合并,因?yàn)闆]有選定的提交對此合并作出貢獻(xiàn)。

--ancestry-path

當(dāng)給定一系列提交顯示(例如commit1..commit2commit2 ^commit1)時,僅顯示直接存在于commit1和之間的祖先鏈上的commit2提交,即提交都是后代commit1,以及祖先commit2。

更詳細(xì)的解釋如下。

假設(shè)你指定foo為<路徑>。我們將調(diào)用修改的提交foo!TREESAME 和其余的 TREESAME。(在diff過濾后foo,它們分別看起來不同且相等。)

在下文中,我們將始終引用相同的示例歷史記錄來說明簡化設(shè)置之間的差異。我們假設(shè)您正在篩選foo此提交圖中的文件:

          .-A---M---N---O---P---Q         /     /   /   /   /   /
        I     B   C   D   E   Y
         \   /   /   /   /   /
          `-------------'   X

歷史A --- Q的水平線被認(rèn)為是每個合并的第一個父代。提交是:

  • I是初始提交,其中foo存在內(nèi)容“asdf”,文件quux存在內(nèi)容“quux”。初始提交與空樹比較,所以I是!TREESAME。

  • 在中A,foo只包含“foo”。

  • B包含與。相同的更改A。它的合并M是微不足道的,因此 TREESAME 給所有的父母。

  • C不會更改foo,但其合并N會將其更改為“foobar”,因此對于任何父級,它不是 TREESAME。

  • D設(shè)置foo為“baz”。它的合并O將來自ND來自“foobarbaz” 的字符串結(jié)合起來; 即,它不是任何父母的 TREESAME。

  • E更改quux為“xyzzy”,并將其合并P為“quux xyzzy”。P是TREESAME O,但不是E

  • X是一個獨(dú)立的根提交,添加了一個新文件side并對其進(jìn)行了Y修改。Y是TREESAME X。它的合并Q添加sideP,并且Q是TREESAME P,但不是Y。

rev-list向后瀏覽歷史記錄,包括或不包括基于是否--full-history和/或父重寫(通過--parents--children)使用的提交。以下設(shè)置可用。

默認(rèn)模式

如果對任何父項(xiàng)不是 TREESAME,則包含提交(盡管可以更改它,請參見--sparse下文)。如果提交是一個合并,并且它是一個父級的 TREESAME,則只跟隨該父級。(即使有幾個 TREESAME父母,請只遵循其中一個。)否則,請關(guān)注所有父母。

這導(dǎo)致:

          .-A---N---O         /     /   /
        I---------D

請注意,只有遵循 TREESAME父級(如果有)的規(guī)則B完全從考慮中移除。C被認(rèn)為是通過N,但是是 TREESAME。根提交與空樹比較,所以I是!TREESAME。

父/子關(guān)系僅在可見時顯示--parents,但不影響在默認(rèn)模式下選擇的提交,因此我們顯示了父行。

- 沒有父母重寫的完整歷史記錄

此模式與一點(diǎn)默認(rèn)值不同:始終跟隨合并的所有父項(xiàng),即使它們中的一個為 TREESAME 也是如此。即使合并中有多個方面都包含提交,但這并不意味著合并本身就是!在這個例子中,我們得到了

        I  A  B  N  D  O  P  Q

M被排除在外,因?yàn)樗鼘Ω改付际?TREESAME。E,C并且B都走了,但只能B是!TREESAME,所以別人不出現(xiàn)。

請注意,如果沒有父級重寫,就不可能談?wù)撎峤恢g的父/子關(guān)系,因此我們將它們顯示為斷開連接。

- 父母重寫的完整歷史記錄

普通提交只包含在!TREESAME(盡管可以改變,見--sparse下文)。

合并總是包括在內(nèi)。但是,它們的父級列表會被重寫:沿著每個父級刪除未包含在其中的提交。這導(dǎo)致

          .-A---M---N---O---P---Q         /     /   /   /   /
        I     B   /   D   /
         \   /   /   /   /
          `-------------'

比較--full-history上面沒有重寫。請注意,E因?yàn)樗?TREESAME 而被刪除,但P的父列表被重寫為包含E父項(xiàng)I。同樣的事情發(fā)生了CN,和XYQ。

除上述設(shè)置外,您還可以更改 TREESAME 是否影響包含:

--dense

如果他們不是TREESAME給任何父母,那么被散步的提交將被包括在內(nèi)。

--sparse

包括所有正在散步的提交。

請注意,如果沒有--full-history,這仍然簡化了合并:如果其中一位父母是 TREESAME,我們只遵循那一個,所以合并的其他方不會走。

--simplify-merges

首先,--full-history用父級重寫的方式構(gòu)建一個歷史圖(參見上文)。

然后根據(jù)以下規(guī)則簡化每個提交CC'最終歷史記錄中的替換:

  • 設(shè)置C'C。

  • 替換每個家長PC'其簡化P'。在這個過程中,放棄其他父母祖先或父母的父母將 TREESAME 提交給空樹,并刪除重復(fù)項(xiàng),但請注意永不丟棄所有我們正在處理的父母。

  • 如果在此父代重寫之后,C'是根或合并提交(具有零或> 1父項(xiàng)),邊界提交或!TREESAME,它仍然存在。否則,它將被其唯一的父代替換。

通過--full-history與父級重寫進(jìn)行比較,可以很好地顯示此效果。這個例子變成:

          .-A---M---N---O         /     /       /
        I     B       D
         \   /       /
          `---------'

請注意,在重大分歧NP以及Q--full-history

  • N的父母名單已I被刪除,因?yàn)樗橇硪桓改傅淖嫦?code>M。仍然,N因?yàn)樗牵?TREESAME。

  • P的父母名單也被I刪除。P然后被完全刪除,因?yàn)樗幸粋€父母,并且是 TREESAME。

  • Q的父母名單已Y簡化為X。X然后被刪除,因?yàn)樗且粋€ TREESAME 根。Q然后被完全刪除,因?yàn)樗幸粋€父母,并且是TREESAME。

最后,還有第五種可用的簡化模式:

--ancestry-path

將顯示的提交限制為在給定提交范圍內(nèi)“from”和“to”提交之間直接在祖先鏈上提交的提交。即只顯示作為“to”提交祖先的提交和“提交”提交的后代。

作為示例用例,請考慮以下提交歷史記錄:

            D---E-------F           /     \       \
          B---C---G---H---I---J         /                     \
        A-------K---------------L--M

一個常規(guī)D..M計算的是一組祖先的提交M,但不包括那些祖先的提交D。這對于了解發(fā)生在歷史上的事情是有用的,M因?yàn)?code>D“有什么不M存在D”。在這個例子中的結(jié)果將是所有提交,除了AB(與D本身,當(dāng)然)。

但是,當(dāng)我們想要查明哪些提交M受到引入D并需要修復(fù)的bug的影響時,我們可能只想查看其D..M實(shí)際后代的子集D,即排除CK。這正是--ancestry-path選項(xiàng)所做的。適用D..M范圍,它導(dǎo)致:

                E-------F
                 \       \
                  G---H---I---J
                               \
                                L--M

--simplify-by-decoration通過省略標(biāo)簽未引用的提交,該選項(xiàng)允許您只查看歷史拓?fù)涞拇髨D。如果(1)它們被標(biāo)簽引用,或者(2)它們改變了命令行給出的路徑的內(nèi)容,則提交被標(biāo)記為!TREESAME(換句話說,保存在上述歷史簡化規(guī)則之后)。所有其他提交都標(biāo)記為 TREESAME(可能會被簡化)。

平分幫手

--bisect

將輸出限制為一個提交對象,該提交對象大致位于提交和排除提交之間的一半。請注意,壞的等分ref會refs/bisect/bad被添加到包含的提交(如果存在)并且好的等分ref refs/bisect/good-*被添加到排除的提交(如果存在)。因此,假設(shè)沒有參考refs/bisect/,如果

        $ git rev-list --bisect foo ^bar ^baz

輸出midpoint,這兩個命令的輸出

        $ git rev-list foo ^midpoint
        $ git rev-list midpoint ^bar ^baz

長度大致相同。找到引入回歸的變化因此被簡化為二分搜索:重復(fù)生成并測試新的中點(diǎn),直到提交鏈的長度為1。不能與--first-parent結(jié)合使用。

--bisect-vars

--bisect除了refs/bisect/沒有使用refs in之外,它的計算方法與之相同,除了輸出的文本已準(zhǔn)備好被shell評估。這些行將為變量指定中點(diǎn)修訂的名稱bisect_rev,并且測試之后bisect_rev要測試bisect_nr的提交的預(yù)期數(shù)量,如果bisect_rev結(jié)果為是,則要測試bisect_good的提交的預(yù)期數(shù)量,提交給被測試的bisect_rev結(jié)果是不好的bisect_bad,以及我們現(xiàn)在平分的提交數(shù)量bisect_all

--bisect-all

這將輸出提交對象之間的所有提交對象包括和排除提交,按距離排序提交包含和排除。refs/bisect/沒有使用參考。離他們最遠(yuǎn)的是最先顯示的。(這是唯一顯示的--bisect。)

這很有用,因?yàn)樗梢院苋菀椎剡x擇一個好的提交來測試什么時候你想避免測試它們中的一些出于某種原因(它們可能不會編譯)。

--bisect-vars在這種情況下,此選項(xiàng)可以與所有已排序的提交對象一起使用,并且會有與--bisect-vars單獨(dú)使用相同的文本。

提交訂單

默認(rèn)情況下,提交按反向時間順序顯示。

--date-order

在顯示所有孩子之前不顯示父母,但在提交時間戳順序中顯示提交。

--author-date-order

在顯示所有孩子之前不顯示父母,但以作者時間戳順序顯示提交。

--topo-order

在顯示所有孩子之前不要顯示父母,并且避免在多行歷史記錄中混合顯示提交。

例如,在這樣的提交歷史記錄中:

    ---1----2----4----7
        \               \         3----5----6----8---

其中數(shù)字表示提交時間戳的順序,git rev-list以及具有--date-order按時間戳順序顯示提交的朋友:8 7 6 5 4 3 2 1。

--topo-order,他們會顯示8 6 5 3 7 4 2 1(或8 7 4 2 6 5 3 1); 一些較舊的提交顯示在較新的提交之前,以避免將來自兩條并行開發(fā)軌道的提交顯示在一起。

--reverse

以相反的順序輸出選擇顯示的提交(參見上面的提交限制部分)。不能與之結(jié)合--walk-reflogs

對象遍歷

這些選項(xiàng)主要針對包裝Git存儲庫。

--objects

打印列出的提交引用的任何對象的對象ID。--objects foo ^bar因此意味著“如果我有提交對象bar但不是我需要下載的所有對象ID foo”。

--objects-edge

--objects與之類似,但也會打印以“ - ”字符為前綴的排除提交的ID。git-pack-objects [1]使用它來構(gòu)建一個“精簡”包,它基于這些排除的提交中包含的對象以分離形式記錄對象,以減少網(wǎng)絡(luò)流量。

--objects-edge-aggressive

--objects-edge與之類似,但它試圖以增加時間為代價尋找被排除的提交。這被用來代替--objects-edge淺存儲庫構(gòu)建“瘦”包。

--indexed-objects

假設(shè)索引使用的所有樹和斑點(diǎn)都列在命令行上。請注意,您可能也想使用--objects

--unpacked

只用于--objects; 打印不在包裝中的對象ID。

--no-walk=(sorted|unsorted)

只顯示給定的提交,但不要遍歷其祖先。如果指定了范圍,則這不起作用。如果提供了參數(shù)unsorted,則提交按照它們在命令行上的順序顯示。否則(如果sorted或沒有給出參數(shù)),提交時間將按提交時間以反向時間順序顯示。不能與之結(jié)合--graph。

--do-walk

Overrides a previous --no-walk.

提交格式

使用這些選項(xiàng),git-rev-list [1]的作用類似于更專門的提交日志工具系列:git-log [1],git-show [1]和git-whatchanged [1]

--pretty=<format>   --format=<format>

在給定的格式漂亮地打印提交日志中的內(nèi)容,在這里<format>可以是一個oneline,short,medium,full,fuller,email,raw,format:<string>tformat:<string>。什么時候<format>沒有上述情況,并且%placeholder在其中,它的行為就像--pretty=tformat:<format>是給予的一樣。

有關(guān)每種格式的其他詳細(xì)信息,請參閱“PRETTY FORMATS”部分。當(dāng)=<format>零件被省略時,它默認(rèn)為medium

注意:您可以在存儲庫配置中指定默認(rèn)的漂亮格式(請參閱git-config [1])。

--abbrev-commit

不顯示完整的40字節(jié)十六進(jìn)制提交對象名稱,只顯示部分前綴。非默認(rèn)位數(shù)可以用“--abbrev = <n>”來指定(如果顯示,它也會修改差異輸出)。

這應(yīng)該使“--pretty = oneline”對于使用80列終端的人來說更加可讀。

--no-abbrev-commit

顯示完整的40字節(jié)十六進(jìn)制提交對象名稱。這種否定--abbrev-commit和暗示它的選項(xiàng)如“--oneline”。它也覆蓋log.abbrevCommit變量。

--oneline

這是一起使用的“--pretty = oneline --abbrev-commit”的縮寫。

--encoding=<encoding>

提交對象在其編碼頭中記錄用于日志消息的編碼; 這個選項(xiàng)可以用來告訴命令在用戶首選的編碼中重新編寫提交日志消息。對于非管道命令,默認(rèn)為UTF-8。請注意,如果一個對象聲稱被編碼X并且正在輸出X,我們將逐字輸出對象; 這意味著原始提交中的無效序列可能會被復(fù)制到輸出中。

--expand-tabs=<n>   --expand-tabs   --no-expand-tabs

<n>在輸出中顯示日志消息之前,執(zhí)行一個標(biāo)簽擴(kuò)展(用足夠的空格替換每個標(biāo)簽以填充下一個顯示列的倍數(shù))。--expand-tabs是一種短手--expand-tabs=8,并且--no-expand-tabs是一種短手--expand-tabs=0,即禁用選項(xiàng)卡擴(kuò)展。

默認(rèn)情況下,突片在相當(dāng)格式由4個空格(即縮進(jìn)日志消息擴(kuò)展medium,這是缺省值,fullfuller)。

--show-signature

通過簽名傳遞gpg --verify并顯示輸出來檢查簽名提交對象的有效性。

--relative-date

--date=relative的同義詞。

--date=<format>

僅對以人可讀格式顯示的日期生效,例如在使用時--pretty。log.dateconfig變量為log命令的--date選項(xiàng)設(shè)置一個默認(rèn)值。默認(rèn)情況下,日期顯示在原始時區(qū)(提交者或作者的)。如果-local附加到格式(例如,iso-local),則使用用戶的本地時區(qū)。

--date=relative顯示相對于當(dāng)前時間的日期,例如“2小時前”。該-local選項(xiàng)對于無效--date=relative。

--date=local是一個別名--date=default-local

--date=iso(或--date=iso8601)以ISO 8601格式顯示時間戳。與嚴(yán)格的ISO 8601格式的不同之處在于:

  • 一個空格而不是T日期/時間分隔符

  • 時間和時區(qū)之間的空間

  • 在時區(qū)的幾小時和幾分鐘之間不會冒號

--date=iso-strict(或--date=iso8601-strict)以嚴(yán)格的ISO 8601格式顯示時間戳。

  • --date=rfc(或--date=rfc2822)顯示RFC 2822格式的時間戳,通常在電子郵件中找到。

  • --date=short僅以YYYY-MM-DD格式顯示日期,但不顯示時間。

  • --date=raw將時間顯示為從時代(1970-01-01 00:00:00 UTC)開始的秒數(shù),后跟一個空格,然后將時區(qū)作為UTC的偏移量(a +-四位數(shù);前兩個是小時,并且第二個是分鐘)。即,如果時間戳被格式化strftime("%s %z"))。請注意,該-local選項(xiàng)不會影響自始至終的秒數(shù)值(始終以UTC來衡量),但會切換隨附的時區(qū)值。

  • --date=unix將日期顯示為Unix紀(jì)元時間戳(1970年以來的秒數(shù))。與之相同--raw,這總是以UTC表示,因此-local不起作用。

  • --date=format:...將格式輸入...到系統(tǒng)中strftime,除了內(nèi)部處理的%z和%Z之外。用于--date=format:%c以系統(tǒng)區(qū)域設(shè)置的首選格式顯示日期。請參閱strftime手冊以獲取格式占位符的完整列表。使用時-local,正確的語法是--date=format-local:...

  • --date=default是默認(rèn)格式,類似于--date=rfc2822,但有一些例外:

  • 星期幾之后沒有逗號

  • 使用本地時區(qū)時省略時區(qū)

--header

以原始格式打印提交的內(nèi)容; 每個記錄都用NUL字符分隔。

--parents

也打印提交的父母(以“commit parent ...”的形式)。還允許父級重寫,請參見History Simplification下文。

--children

也打印提交的子代(以“commit child ...”的形式)。還允許父級重寫,請參見History Simplification下文。

--timestamp

打印原始提交時間戳。

--left-right

標(biāo)記可以從中提交提交的對稱差異的哪一側(cè)。來自左側(cè)的提交將以前面的<和前面的提交>。如果合并--boundary,那些提交前綴為-

例如,如果你有這個拓?fù)洌?/p>

             y---b---b  branch B            / \ /           /   .          /   / \
         o---x---a---a  branch A

你會得到這樣的輸出:

        $ git rev-list --left-right --boundary --pretty=oneline A...B        >bbbbbbb... 3rd on b        >bbbbbbb... 2nd on b        <aaaaaaa... 3rd on a        <aaaaaaa... 2nd on a        -yyyyyyy... 1st on b        -xxxxxxx... 1st on a

--graph

在輸出的左側(cè)繪制提交歷史記錄的基于文本的圖形表示。這可能會導(dǎo)致在提交之間打印額外的行,以便正確繪制圖表歷史記錄。不能與之結(jié)合--no-walk。

這可以讓父母重寫,見History Simplification下文。

這意味著--topo-order默認(rèn)情況下該選項(xiàng),但--date-order也可以指定該選項(xiàng)。

--show-linear-break=<barrier>

當(dāng)不使用--graph時,所有歷史分支都會變平,這使得很難看到兩個連續(xù)的提交不屬于線性分支。在這種情況下,這個選項(xiàng)在它們之間設(shè)置了一個障礙。如果<barrier>指定,則是將顯示的字符串而不是默認(rèn)的字符串。

--count

打印一個數(shù)字,說明有多少提交將被列出,并禁止所有其他輸出。與其一起使用時--left-right,將打印左側(cè)和右側(cè)提交的計數(shù),并用制表符分隔。與--cherry-mark這些計數(shù)一起使用時,省略補(bǔ)丁等價提交,并打印由選項(xiàng)卡分隔的等價提交的計數(shù)。

漂亮的格式

如果提交是合并,并且不是美觀格式oneline,email或者raw在該Author:行之前插入額外的線條。該行以“Merge:”開始,并且祖先提交的sha1被打印出來,用空格分隔。請注意,如果您限制了對歷史的查看,列出的提交可能不一定是直接父提交的列表:例如,如果您只對與某個目錄或文件相關(guān)的更改感興趣。

有幾種內(nèi)置格式,你可以通過設(shè)置一個漂亮的<name> config選項(xiàng)來定義其他格式format:,如下所述(參見git-config [1])。以下是內(nèi)置格式的詳細(xì)信息:

  • oneline<sha1> <title line>

這被設(shè)計得盡可能緊湊。

  • shortcommit <sha1> Author: <author>

<title line>

  • mediumcommit <sha1> Author: <author> Date:   <author date>

<title line>

<full commit message>

  • fullcommit <sha1> Author: <author> Commit: <committer>

<title line>

<full commit message>

  • fullercommit <sha1> Author:     <author> AuthorDate: <author date> Commit:     <committer> CommitDate: <committer date>

<title line>

<full commit message>

  • emailFrom <sha1> <date> From: <author> Date: <author date> Subject: PATCH <title line>

<full commit message>

  • rawraw格式示出了整個提交完全一樣存儲在 commit 對象。值得注意的是,不管是否使用--abbrev 或 --no-abbrev,SHA-1 都會全部顯示,并且parents信息顯示的是真正的父提交,而不考慮移植或歷史簡化。請注意,這種格式會影響提交顯示的方式,但不會影響比較顯示的方式git log --raw。要以原始差異格式獲取完整對象名稱,請使用--no-abbrev。

  • format:<string>format:<string>格式允許您指定要顯示的信息。它的工作原理與 printf 格式有點(diǎn)相似,但有一個值得注意的例外,那就是用換行符%n代替\n。例如,format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"會顯示這樣的內(nèi)容:fe6e0ee 的作者是 Junio C Hamano,23小時前標(biāo)題是>> t4119:測試 autocomputing -p <n>用于傳統(tǒng)差異輸入。<<

占位符是:

-  `%H`: commit hash
-  `%h`: abbreviated commit hash
-  `%T`: tree hash
-  `%t`: abbreviated tree hash
-  `%P`: parent hashes
-  `%p`: abbreviated parent hashes
-  `%an`: author name
-  `%aN`: author name (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%ae`: author email
-  `%aE`: author email (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%ad`: author date (format respects --date= option)
-  `%aD`: author date, RFC2822 style
-  `%ar`: author date, relative
-  `%at`: author date, UNIX timestamp
-  `%ai`: author date, ISO 8601-like format
-  `%aI`: author date, strict ISO 8601 format
-  `%cn`: committer name
-  `%cN`: committer name (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%ce`: committer email
-  `%cE`: committer email (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%cd`: committer date (format respects --date= option)
-  `%cD`: committer date, RFC2822 style
-  `%cr`: committer date, relative
-  `%ct`: committer date, UNIX timestamp
-  `%ci`: committer date, ISO 8601-like format
-  `%cI`: committer date, strict ISO 8601 format
-  `%d`: ref names, like the --decorate option of [git-log[1]](git-log)
-  `%D`: ref names without the " (", ")" wrapping.
-  `%e`: encoding
-  `%s`: subject
-  `%f`: sanitized subject line, suitable for a filename
-  `%b`: body
-  `%B`: raw body (unwrapped subject and body)
-  `%GG`: raw verification message from GPG for a signed commit
-  `%G?`: show "G" for a good (valid) signature, "B" for a bad signature, "U" for a good signature with unknown validity, "X" for a good signature that has expired, "Y" for a good signature made by an expired key, "R" for a good signature made by a revoked key, "E" if the signature cannot be checked (e.g. missing key) and "N" for no signature
-  `%GS`: show the name of the signer for a signed commit
-  `%GK`: show the key used to sign a signed commit
-  `%gD`: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2 minutes ago`}; the format follows the rules described for the `-g` option. The portion before the `@` is the refname as given on the command line (so `git log -g refs/heads/master` would yield `refs/heads/master@{0}`).
-  `%gd`: shortened reflog selector; same as `%gD`, but the refname portion is shortened for human readability (so `refs/heads/master` becomes just `master`).
-  `%gn`: reflog identity name
-  `%gN`: reflog identity name (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%ge`: reflog identity email
-  `%gE`: reflog identity email (respecting .mailmap, see [git-shortlog[1]](git-shortlog) or [git-blame[1]](git-blame))
-  `%gs`: reflog subject
-  `%Cred`: switch color to red
-  `%Cgreen`: switch color to green
-  `%Cblue`: switch color to blue
-  `%Creset`: reset color
-  `%C(…)`: color specification, as described under Values in the "CONFIGURATION FILE" section of [git-config[1]](git-config). By default, colors are shown only when enabled for log output (by `color.diff`, `color.ui`, or `--color`, and respecting the `auto` settings of the former if we are going to a terminal). `%C(auto,...)` is accepted as a historical synonym for the default (e.g., `%C(auto,red)`). Specifying `%C(always,...) will show the colors even when color is not otherwise enabled (though consider just using &grave;--color=always` to enable color for the whole output, including this format and anything else git might color). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring on the next placeholders until the color is switched again.
-  `%m`: left (`<`), right (`>`) or boundary (`-`) mark
-  `%n`: newline
-  `%%`: a raw `%`
-  `%x00`: print a byte from a hex code
-  `%w([<w>[,<i1>[,<i2>]]])`: switch line wrapping, like the -w option of [git-shortlog[1]](git-shortlog).
-  `%<(<N>[,trunc|ltrunc|mtrunc])`: make the next placeholder take at least N columns, padding spaces on the right if necessary. Optionally truncate at the beginning (ltrunc), the middle (mtrunc) or the end (trunc) if the output is longer than N columns. Note that truncating only works correctly with N >= 2.
-  `%<|(<N>)`: make the next placeholder take at least until Nth columns, padding spaces on the right if necessary
-  `%>(<N>)`, `%>|(<N>)`: similar to `%<(<N>)`, `%<|(<N>)` respectively, but padding spaces on the left
-  `%>>(<N>)`, `%>>|(<N>)`: similar to `%>(<N>)`, `%>|(<N>)` respectively, except that if the next placeholder takes more spaces than given and there are spaces on its left, use those spaces
-  `%><(<N>)`, `%><|(<N>)`: similar to `% <(<N>)`, `%<|(<N>)` respectively, but padding both sides (i.e. the text is centered)
-  %(trailers): display the trailers of the body as interpreted by [git-interpret-trailers[1]](git-interpret-trailers)

注意

一些占位符可能取決于給修訂遍歷引擎的其他選項(xiàng)。例如,%g * reflog選項(xiàng)將插入一個空字符串,除非我們正在遍歷reflog條目(例如,通過git log -g)。如果未在命令行中提供--decorate,則%d和%D占位符將使用“短”修飾格式。

如果+%占位符之后添加(加號),當(dāng)且僅當(dāng)占位符展開為非空字符串時,才在擴(kuò)展之前插入換行符。

如果-%占位符之后添加(減號),則當(dāng)且僅當(dāng)占位符展開為空字符串時,才會刪除緊接擴(kuò)展之前的所有連續(xù)換行。

如果在%占位符之后添加(空格),當(dāng)且僅當(dāng)占位符展開為非空字符串時,才在擴(kuò)展之前插入空格。

  • tformat:tformat:格式的操作完全相同format:,不同之處在于它提供了“終結(jié)者”的語義,而不是“分隔符”的語義。換句話說,每個提交都附加了消息結(jié)束符(通常是一個換行符),而不是放置在條目之間的分隔符。這意味著單行格式的最終條目將以新的行正確終止,就像“在線”格式一樣。例如:$ git log -2 --pretty = format:%h 4da45bef \ | perl -pe'$ _。=“ -  NO NEWLINE \ n”除非/ \ n /'4da45be 7134973  - 否NEWLINE $ git log -2 --pretty = tformat:%h 4da45bef \ | perl -pe'$ _。=“ -  NO NEWLINE \ n”除非/ \ n /'4da45be 7134973

另外,任何含有%它的無法識別的字符串都會被解釋為tformat:在它之前。例如,這兩個是等價的:

$ git log -2 --pretty=tformat:%h 4da45bef $ git log -2 --pretty=%h 4da45bef

上一篇: 下一篇: