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

annuaire recherche
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
personnages

名稱

git-blame  - 顯示修改和作者最后修改了文件的每一行

概要

git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]            [-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]            [--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]            [--] <file>

描述

使用上次修改該行的修訂版中的信息為給定文件中的每一行注釋?;蛘?,從給定修訂開(kāi)始注釋。

指定一次或多次時(shí),-L將注釋限制為所請(qǐng)求的行。

行的起源會(huì)自動(dòng)沿著整個(gè)文件重命名(目前沒(méi)有選項(xiàng)可以將重命名 - 關(guān)閉)。要追蹤從一個(gè)文件移動(dòng)到另一個(gè)文件的行,或者遵循從其他文件復(fù)制并粘貼的行等,請(qǐng)參閱-C-M選項(xiàng)。

報(bào)告沒(méi)有告訴你任何有關(guān)已刪除或替換的行; 您需要使用git diff以下段落中簡(jiǎn)要提及的工具或“pickaxe”接口。

除了支持文件注釋之外,Git 還支持搜索開(kāi)發(fā)歷史記錄,以了解更改中發(fā)生代碼段的時(shí)間。這使得追蹤代碼片段何時(shí)被添加到文件,在文件之間移動(dòng)或復(fù)制,并最終被刪除或替換成為可能。它通過(guò)在 diff 中搜索文本字符串來(lái)工作。搜索blame_usage以下內(nèi)容的鎬接口的一個(gè)小例子:

$ git log --pretty=oneline -S'blame_usage'5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S <ancestry-file>ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output

選項(xiàng)

-b

顯示邊界提交的空白 SHA-1。這也可以通過(guò)blame.blankboundary配置選項(xiàng)來(lái)控制。

--root

不要將根提交視為邊界。這也可以通過(guò)blame.showRoot配置選項(xiàng)來(lái)控制。

--show-stats

在責(zé)備輸出結(jié)尾包含更多統(tǒng)計(jì)數(shù)據(jù)。

-L <start>,<end>   -L :<funcname>

僅注釋給定的線范圍??梢远啻沃付āV丿B范圍是允許的。

<開(kāi)始>和<結(jié)束>是可選的。“-L <開(kāi)始>”或“-L <開(kāi)始>”跨越從<開(kāi)始>到文件結(jié)束。“-L,<end>”從文件開(kāi)始到<結(jié)束>。

<開(kāi)始>和<結(jié)束>可以采取以下形式之一:

  • 數(shù)字                                                                                                         如果<開(kāi)始>或<結(jié)束>是一個(gè)數(shù)字,它將指定一個(gè)絕對(duì)行號(hào)(行數(shù)從1開(kāi)始)。

  • / regex /                                                                                                  此表單將使用與給定的 POSIX 正則表達(dá)式匹配的第一行。如果<start>是一個(gè)正則表達(dá)式,它將從前一個(gè)-L范圍的末尾(如果有的話)開(kāi)始搜索,否則從文件起始處開(kāi)始搜索。如果<start>是“^ / regex /”,它將從文件開(kāi)頭搜索。如果<end>是一個(gè)正則表達(dá)式,它將從<start>給出的行開(kāi)始搜索。

  • + offset 或 -offset                                                                                   這僅對(duì)<end>有效,并將在<start>給出的行之前或之后指定行數(shù)。

如果給出“:<funcname>”來(lái)代替<start>和<end>,它是一個(gè)正則表達(dá)式,表示從匹配<funcname>的第一個(gè)funcname行到下一個(gè)funcname行的范圍?!埃?lt;funcname>”從上一個(gè)-L范圍的末尾(如果有)搜索,否則從文件開(kāi)頭搜索?!癪:<funcname>”從文件開(kāi)頭搜索。

-l

顯示長(zhǎng)時(shí)間(默認(rèn):關(guān)閉)。

-t

顯示原始時(shí)間戳(默認(rèn)值:關(guān)閉)。

-S <revs-file>

使用 revs-file 中的修訂版而不是調(diào)用 git-rev-list [1]。

--reverse <rev>..<rev>

前進(jìn)而不是后退。它不是顯示一行出現(xiàn)的修訂,而是顯示一行存在的最后修訂。這需要一系列的修訂,如 START..END,在 START 中存在責(zé)任路徑。git blame --reverse STARTgit blame --reverse START..HEAD為了方便。

-p   --porcelain

以設(shè)計(jì)用于機(jī)器消耗的格式顯示。

--line-porcelain

顯示 porcelain瓷格式,但輸出每行的提交信息,而不僅僅是第一次引用提交。意味著 - 瓷器。

--incremental

以設(shè)計(jì)用于機(jī)器消耗的格式逐步顯示結(jié)果。

--encoding=<encoding>

指定用于輸出作者姓名和提交摘要的編碼。將其設(shè)置為none使責(zé)備輸出未轉(zhuǎn)換的數(shù)據(jù)。有關(guān)更多信息,請(qǐng)參閱有關(guān) git-log [1]手冊(cè)頁(yè)中編碼的討論。

--contents <file>

當(dāng)未指定<rev>時(shí),該命令注釋從工作樹(shù)副本向后開(kāi)始的更改。該標(biāo)志使命令假裝工作樹(shù)副本具有指定文件的內(nèi)容(指定-使命令從標(biāo)準(zhǔn)輸入中讀?。?/p>

--date <format>

指定用于輸出日期的格式。如果未提供--date,則使用 blame.date 配置變量的值。如果 blame.date 配置變量也未設(shè)置,則使用 iso 格式。有關(guān)支持的值,請(qǐng)參閱 git-log [1]上的--date 選項(xiàng)的討論。

--no-progress

當(dāng)連接到終端時(shí),默認(rèn)情況下標(biāo)準(zhǔn)錯(cuò)誤流會(huì)報(bào)告進(jìn)度狀態(tài)。即使沒(méi)有附加到終端,該標(biāo)志也可以進(jìn)行進(jìn)度報(bào)告。不能--progress--porcelain或者 --incrementa一起使用l。

-M<num>

檢測(cè)文件中移動(dòng)或復(fù)制的行。當(dāng)提交移動(dòng)或復(fù)制一行代碼塊時(shí)(例如,原始文件有A然后B提交將其更改為B然后A),傳統(tǒng)blame算法只會(huì)注意到一半的移動(dòng),并且通常會(huì)將被移動(dòng)的行(即B)交給父母,并將責(zé)任分配給向下移動(dòng)(即A)到子女提交的行。有了這個(gè)選項(xiàng),通過(guò)運(yùn)行額外的檢查通道,這兩組線都被歸咎于父母。

<num>是可選的,但它是 Git 必須檢測(cè)的字母數(shù)字字符數(shù)的下限,以便在文件中移動(dòng)/復(fù)制,以便將這些行與父提交相關(guān)聯(lián)。默認(rèn)值是20。

-C<num>

除了-M檢測(cè)從同一提交中修改的其他文件移動(dòng)或復(fù)制的行之外。當(dāng)您重新組織您的程序并在各個(gè)文件之間移動(dòng)代碼時(shí),這非常有用。當(dāng)該選項(xiàng)被賦予兩次時(shí),該命令會(huì)另外在創(chuàng)建該文件的提交中查找來(lái)自其他文件的副本。當(dāng)該選項(xiàng)被賦予三次時(shí),該命令還會(huì)在任何提交中查找來(lái)自其他文件的副本。

<num>是可選的,但它是 Git 必須檢測(cè)的字母數(shù)字字符數(shù)的下限,作為文件之間的移動(dòng)/復(fù)制,以便將這些行與父提交相關(guān)聯(lián)。默認(rèn)值是40.如果有多個(gè)-C選項(xiàng),最后的<num>參數(shù)-C將生效。

-h

顯示幫助信息。

-c

使用與 git-annotate [1]相同的輸出模式(默認(rèn)值:關(guān)閉)。

--score-debug

包含與文件之間的行移動(dòng)有關(guān)的調(diào)試信息(請(qǐng)參閱參考資料-C)和文件中移動(dòng)的行(請(qǐng)參閱參考資料-M)。列出的第一個(gè)數(shù)字是分?jǐn)?shù)。這是檢測(cè)為在文件之間或文件內(nèi)移動(dòng)的字母數(shù)字字符的數(shù)量。這必須高于某個(gè)閾值git blame才能考慮這些代碼行已被移動(dòng)。

-f   --show-name

在原始提交中顯示文件名。默認(rèn)情況下,如果由于重命名檢測(cè)而出現(xiàn)來(lái)自具有不同名稱的文件的任何行,則會(huì)顯示文件名。

-n   --show-number

在原始提交中顯示行號(hào)(默認(rèn)值:關(guān)閉)。

-s

從輸出中抑制作者姓名和時(shí)間戳。

-e   --show-email

顯示作者電子郵件而不是作者姓名(默認(rèn):關(guān)閉)。這也可以通過(guò)blame.showEmail配置選項(xiàng)來(lái)控制。

-w

比較父母的版本和孩子的時(shí)候,忽略空格以找到行的來(lái)源。

--abbrev=<n>

使用默認(rèn)的 7 + 1 十六進(jìn)制數(shù)字作為縮寫對(duì)象名稱,而不是使用<n> +1個(gè)數(shù)字。請(qǐng)注意,1列用于插入符號(hào)來(lái)標(biāo)記邊界提交。

--indent-heuristic   --no-indent-heuristic

這些是為了幫助調(diào)試和調(diào)整實(shí)驗(yàn)啟發(fā)式(默認(rèn)情況下是關(guān)閉的),這些啟發(fā)式技術(shù)改變了差異邊界以使修補(bǔ)程序更易于閱讀。

porcelain(瓷器)的格式

在這種格式下,每一行在一個(gè)標(biāo)題后輸出; 最低標(biāo)題的第一行有:

  • 該行提交的40字節(jié) SHA-1歸因于;

  • 原始文件中行的行號(hào);

  • 最終文件中行的行號(hào);

  • 在從一個(gè)不同于上一個(gè)提交的提交開(kāi)始一組行的行中,該行中的行數(shù)。在隨后的行中,該字段不存在。

對(duì)于每個(gè)提交,此標(biāo)題行后面至少有一次以下信息:

  • 作者姓名(“作者”),電子郵件(“作者郵件”),時(shí)間(“作者時(shí)間”)和時(shí)區(qū)(“author-tz”); 提交者也是如此。

  • 行被歸于的提交中的文件名。

  • 提交日志消息的第一行(“摘要”)。

實(shí)際行的內(nèi)容在上面的標(biāo)題之后輸出,以 TAB 為前綴。這是為了稍后允許添加更多的標(biāo)題元素。

porcelain(瓷器)格式通常會(huì)抑制已經(jīng)看到的提交信息。例如,兩條指向同一提交的行都會(huì)顯示,但該提交的詳細(xì)信息只會(huì)顯示一次。這樣更有效率,但可能需要讀者保留更多的狀態(tài)。該--line-porcelain選項(xiàng)可用于輸出每行的完整提交信息,從而允許更簡(jiǎn)單(但效率較低)的用法,如:

# count the number of lines attributed to each author
git blame --line-porcelain file |sed -n 's/^author //p' |sort | uniq -c | sort -rn

指定范圍

不同于git blamegit annotate在舊版本的 git 的,注釋的程度可以被限制到兩個(gè)線范圍和修訂的范圍。將-L注釋限制為一系列行的選項(xiàng)可以多次指定。

當(dāng)你有興趣為foo文件尋找40-60行的起源時(shí),你可以使用-L像這樣的選項(xiàng)(它們的意思是相同的 - 都要求從第40行開(kāi)始的21行):

git blame -L 40,60 foo
git blame -L 40,+21 foo

你也可以使用正則表達(dá)式來(lái)指定行范圍:

git blame -L '/^sub hello {/,/^}$/' foo

這將注釋限制在hello子例程的主體中。

如果您對(duì)版本v2.6.18以前的更改不感興趣,或者更改時(shí)間超過(guò)3周,則可以使用類似于git rev-list以下內(nèi)容的版本范圍說(shuō)明符:

git blame v2.6.18.. -- foo
git blame --since=3.weeks -- foo

使用修訂范圍說(shuō)明符來(lái)限制注釋時(shí),自范圍邊界(上圖中的提交v2.6.18或最近提交超過(guò)3周)以來(lái)未更改的行被指定為該范圍邊界承諾。

一種特別有用的方法是查看添加的文件是否具有通過(guò)從現(xiàn)有文件進(jìn)行復(fù)制和粘貼創(chuàng)建的行。有時(shí)候這表明開(kāi)發(fā)人員馬虎,沒(méi)有正確重構(gòu)代碼。您可以首先找到引入該文件的提交:

git log --diff-filter=A --pretty=short -- foo

然后使用commit^!符號(hào)注釋提交與其父母之間的更改:

git blame -C -C -f $commit^! -- foo

增量輸出

使用--incremental選項(xiàng)調(diào)用時(shí),該命令會(huì)在結(jié)果生成時(shí)輸出結(jié)果。輸出通常會(huì)首先討論最近提交時(shí)觸及的行(即行將被亂序注釋),并被交互式查看者使用。

輸出格式與 Porcelain 格式類似,但不包含正在注釋的文件中的實(shí)際行。

  • 每個(gè)blame條目總是以一行:<40-byte hex sha1> <sourceline> <resultline> <num_lines>

Line numbers count from 1.

  1. 當(dāng)一次提交首次出現(xiàn)在流中時(shí),它會(huì)在每行開(kāi)始處描述額外提交信息(作者,電子郵件,提交者,日期,摘要等等)中打印出各種其他信息。 )。

  2. 與 Porcelain 格式不同,文件名信息總是給出并終止條目:“filename”<whitespace-quoted-filename-goes-here>

因此解析某些面向行和面向字的解析器(對(duì)于大多數(shù)腳本語(yǔ)言而言這應(yīng)該是很自然的)真的很容易。

 Note

對(duì)于進(jìn)行解析的人來(lái)說(shuō):為了使其更加健壯,只要忽略第一個(gè)和最后一個(gè)(“<sha1>”和“文件名”行)之間不識(shí)別標(biāo)記詞(或關(guān)心那個(gè)特定詞)的任何行,在“擴(kuò)展信息”的開(kāi)頭。這樣,如果有任何增加的信息(如提交編碼或擴(kuò)展提交評(píng)論),責(zé)備觀眾不會(huì)在意。

映射作者

如果文件.mailmap存在于存儲(chǔ)庫(kù)的頂層,或者位于 mailmap.file 或 mailmap.blob 配置選項(xiàng)所指向的位置,則它用于將作者和提交者名稱以及電子郵件地址映射到規(guī)范的實(shí)名和電子郵件地址。

在簡(jiǎn)單的形式中,文件中的每一行由作者的標(biāo)準(zhǔn)真實(shí)姓名,空格以及在提交中使用的電子郵件地址(用<and >括起來(lái))映射到名稱。例如:

Proper Name <commit@email.xx>

更復(fù)雜的形式是:

<proper@email.xx> <commit@email.xx>

它允許 mailmap 只替換提交的電子郵件部分,并且:

Proper Name <proper@email.xx> <commit@email.xx>

它允許 mailmap 替換與指定的提交電子郵件地址匹配的提交的名稱和電子郵件,以及:

Proper Name <proper@email.xx> Commit Name <commit@email.xx>

它允許 mailmap 替換與指定的提交名稱和電子郵件地址相匹配的提交的名稱和電子郵件。

示例1:您的歷史記錄包含兩位作者 Jane 和 Joe 的提交,他們的名字以幾種形式出現(xiàn)在存儲(chǔ)庫(kù)中:

Joe Developer <joe@example.com>Joe R. Developer <joe@example.com>Jane Doe <jane@example.com>Jane Doe <jane@laptop.(none)>Jane D. <jane@desktop.(none)>

現(xiàn)在假設(shè)喬想讓他的中間名得到最初的使用,而珍則更喜歡將她的姓氏完整地拼出來(lái)。一個(gè)合適的.mailmap文件應(yīng)該是這樣的:

Jane Doe         <jane@desktop.(none)>Joe R. Developer <joe@example.com>

注意如何不需要輸入<jane@laptop.(none)>,因?yàn)樵撟髡叩恼鎸?shí)姓名已經(jīng)是正確的。

示例2:您的存儲(chǔ)庫(kù)包含以下作者的提交:

nick1 <bugs@company.xx>nick2 <bugs@company.xx>nick2 <nick2@company.xx>santa <me@company.xx>claus <me@company.xx>CTO <cto@coompany.xx>

那么你可能需要一個(gè)如下所示的.mailmap文件:

<cto@company.xx>                       <cto@coompany.xx>Some Dude <some@dude.xx>         nick1 <bugs@company.xx>Other Author <other@author.xx>   nick2 <bugs@company.xx>Other Author <other@author.xx>         <nick2@company.xx>Santa Claus <santa.claus@northpole.xx> <me@company.xx>

將散列#用于自己的行中或電子郵件地址之后的注釋。

Article précédent: Article suivant: