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

名稱(chēng)(Name)

git-diff-files  - 比較工作樹(shù)和索引中的文件

概要

git diff-files [-q] [-0|-1|-2|-3|-c|--cc] [<common diff options>] [<path>…]

描述

比較工作樹(shù)中的文件和索引。當(dāng)指定路徑時(shí),只比較那些命名的路徑。否則,將比較索引中的所有條目。輸出格式是一樣的git diff-indexgit diff-tree

選項(xiàng)

-p   -u   --patch

生成補(bǔ)?。ㄕ?qǐng)參閱生成補(bǔ)丁一節(jié))。

-s   --no-patch

抑制差異輸出。對(duì)于像git show這樣的命令很有用,默認(rèn)顯示補(bǔ)丁,或者取消--patch效果。

-U<n>   --unified=<n>

使用<n>行上下文生成差異,而不是通常的三行。意味著-p。

--raw

以原始格式生成差異。這是默認(rèn)設(shè)置。

--patch-with-raw

-p --raw的同義詞。

- 縮進(jìn) - 啟發(fā)式 - 不縮進(jìn) - 啟發(fā)式   ( --indent-heuristic   --no-indent-heuristic)

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

--minimal

花費(fèi)額外的時(shí)間來(lái)確保生成最小可能的差異。

--patience

使用“耐心差異”算法生成差異。

--histogram

使用“直方圖差異”算法生成差異。

--diff-algorithm={patience|minimal|histogram|myers}

選擇一種差異算法。變體如下:

default, myers

基本的貪婪 diff 算法。目前,這是默認(rèn)設(shè)置。

minimal

花費(fèi)額外的時(shí)間來(lái)確保生成最小可能的差異。

patience

生成補(bǔ)丁時(shí)使用“耐心差異”算法。

histogram

該算法將耐心算法擴(kuò)展為“支持低出現(xiàn)率的通用元素”。

例如,如果您將 diff.algorithm 變量配置為非默認(rèn)值并且想要使用默認(rèn)值,那么您必須使用--diff-algorithm=default選項(xiàng)。

--stat[=<width>[,<name-width>,<count>]]

生成一個(gè) diffstat。默認(rèn)情況下,文件名部分使用盡可能多的空間,其余部分使用圖形部分。最大寬度默認(rèn)為終端寬度,如果未連接到終端,則最大寬度為80列,并且可以被覆蓋<width>。文件名部分的寬度可以通過(guò)<name-width>逗號(hào)后面的另一個(gè)寬度來(lái)限制。圖形部分的寬度可以通過(guò)使用--stat-graph-width=<width>(影響所有生成統(tǒng)計(jì)圖的命令)或通過(guò)設(shè)置diff.statGraphWidth=<width>(不影響git format-patch)來(lái)限制。通過(guò)給出第三個(gè)參數(shù)<count>,可以將輸出限制在第一<count>行,...如果還有更多的話(huà)。

這些參數(shù)也可以單獨(dú)設(shè)置--stat-width=<width>,--stat-name-width=<name-width>--stat-count=<count>

--numstat

類(lèi)似于--stat,但顯示十進(jìn)制表示法中添加和刪除的行數(shù)以及不帶縮寫(xiě)的路徑名,以使其更加機(jī)器友好。對(duì)于二進(jìn)制文件,輸出兩個(gè)-而不是說(shuō)0 0。

--shortstat

只輸出--stat包含修改文件總數(shù)的格式的最后一行,以及添加和刪除行的數(shù)量。

--dirstat=<param1,param2,…>

輸出每個(gè)子目錄的相對(duì)變化量分布。--dirstat可以通過(guò)傳遞逗號(hào)分隔的參數(shù)列表來(lái)定制行為。默認(rèn)值由diff.dirstat配置變量控制(請(qǐng)參閱 git-config [1])。以下參數(shù)可用:

changes

通過(guò)計(jì)算已從源中刪除或添加到目標(biāo)的行來(lái)計(jì)算 dirstat 數(shù)字。這會(huì)忽略文件中純代碼移動(dòng)的數(shù)量。換句話(huà)說(shuō),重新排列文件中的行數(shù)不會(huì)與其他更改一樣多。這是沒(méi)有給出參數(shù)時(shí)的默認(rèn)行為。

lines

通過(guò)執(zhí)行常規(guī)基于行的差異分析來(lái)計(jì)算dirstat數(shù)字,并將刪除/添加的行數(shù)相加。(對(duì)于二進(jìn)制文件,取而代之的是計(jì)算64字節(jié)的塊,因?yàn)槎M(jìn)制文件沒(méi)有自然的行概念)。這是一種--dirstatchanges行為更為昂貴的行為,但它可以像其他更改一樣計(jì)算文件中重新排列的行數(shù)。結(jié)果輸出與您從其他--*stat選項(xiàng)中獲得的結(jié)果一致。

files

通過(guò)計(jì)算更改的文件數(shù)量來(lái)計(jì)算 dirstat 數(shù)字。dirstat 分析中每個(gè)更改的文件都相同。這是計(jì)算上最便宜的--dirstat行為,因?yàn)樗槐夭榭次募?nèi)容。

cumulative

計(jì)數(shù)父目錄的子目錄中的更改。請(qǐng)注意,使用時(shí)cumulative,報(bào)告的百分比總和可能超過(guò)100%。默認(rèn)(非累積)行為可以用noncumulative參數(shù)指定。

<limit>

整數(shù)參數(shù)指定截?cái)喟俜直龋J(rèn)為3%)。輸出中不顯示貢獻(xiàn)小于此百分比的目錄。

示例:以下內(nèi)容將計(jì)數(shù)已更改的文件,同時(shí)忽略占已更改文件總數(shù)少于10%的目錄,并累積父目錄中的子目錄計(jì)數(shù):--dirstat=files,10,cumulative。

--summary

輸出擴(kuò)展頭信息的精簡(jiǎn)摘要,如創(chuàng)建,重命名和模式更改。

--patch-with-stat

-p --stat的同義詞。

-z

當(dāng)--raw,--numstat,--name-only--name-status已給出,非 Munge 時(shí)間路徑名,并使用完全無(wú)效的輸出字段終止符。

如果沒(méi)有這個(gè)選項(xiàng),帶有“不尋常”字符的路徑名將按照配置變量的說(shuō)明引用core.quotePath(請(qǐng)參閱 git-config [1])。

--name-only

僅顯示已更改文件的名稱(chēng)。

--name-status

僅顯示已更改文件的名稱(chēng)和狀態(tài)。有關(guān)--diff-filter狀態(tài)字母的含義,請(qǐng)參閱選項(xiàng)說(shuō)明。

--submodule=<format>

指定如何顯示子模塊中的差異。指定使用--submodule=shortshort格式時(shí)。這種格式只顯示范圍開(kāi)始和結(jié)束處的提交名稱(chēng)。當(dāng)--submodule或者--submodule=log被指定時(shí),使用log格式。這種格式列出了像 git-submodule [1] summary那樣的提交。當(dāng)--submodule=diff指定時(shí),使用diff格式。這種格式顯示了提交范圍內(nèi)子模塊內(nèi)容變化的內(nèi)嵌比較。如果配置選項(xiàng)未設(shè)置,則默認(rèn)為diff.submoduleshort格式。

--color=<when>

顯示有色差異。--color(即沒(méi)有=<when>)是一樣的--color=always。<when>可以是一個(gè)always,neverauto

--no-color

關(guān)閉有色差異。它和--color=never一樣。

--word-diff=<mode>

顯示一個(gè)單詞 diff,使用<mode>分隔已更改的單詞。默認(rèn)情況下,單詞由空格分隔; 見(jiàn)--word-diff-regex下文。<mode>默認(rèn)為plain,并且必須是以下之一:

顏色(color )

僅使用顏色突出顯示更改的詞。意味著--color

plain

將單詞顯示為[-removed-]{+added+}。如果輸入中出現(xiàn)分隔符,則不會(huì)嘗試跳過(guò)分隔符,因此輸出可能不明確。

porcelain

使用專(zhuān)門(mén)用于腳本消費(fèi)的基于行的格式。以通常的統(tǒng)一差異格式打印已添加/已刪除/未更改的運(yùn)行,以行開(kāi)頭處的+/ -/字符開(kāi)始并延伸至行尾。輸入中~的換行符通過(guò)它自己的一行代字符表示。

沒(méi)有 (none)

再次禁用字差異。

請(qǐng)注意,盡管第一個(gè)模式的名稱(chēng),如果啟用,顏色將用于突出顯示所有模式中更改的部分。

--word-diff-regex=<regex>

使用<regex>來(lái)決定一個(gè)單詞是什么,而不是將非空白的運(yùn)行視為一個(gè)單詞。也意味著--word-diff除非已經(jīng)啟用。

每個(gè)<regex>的非重疊匹配都被視為一個(gè)單詞。為了找到差異,這些匹配之間的任何內(nèi)容都被認(rèn)為是空白并被忽略(!)。你可能想追|[^[:space:]]加到你的正則表達(dá)式,以確保它匹配所有非空白字符。包含換行符的匹配在換行符處被無(wú)提地截?cái)啵ǎ。?/p>

例如,--word-diff-regex=.將每個(gè)字符看作單詞,并相應(yīng)地逐個(gè)字符地顯示差異。

正則表達(dá)式也可以通過(guò) diff 驅(qū)動(dòng)程序或配置選項(xiàng)來(lái)設(shè)置,請(qǐng)參閱 gitattributes [5]或 git-config [1]。顯式給予它將覆蓋任何diff驅(qū)動(dòng)程序或配置設(shè)置。差異驅(qū)動(dòng)程序覆蓋配置設(shè)置

--color-words=<regex>

相當(dāng)于--word-diff=color加號(hào)(如果指定了正則表達(dá)式)--word-diff-regex=<regex>。

--no-renames

關(guān)閉重命名檢測(cè),即使配置文件提供了默認(rèn)設(shè)置。

--check

警告如果更改引入沖突標(biāo)記或空白錯(cuò)誤。認(rèn)為空白錯(cuò)誤由core.whitespace配置控制。默認(rèn)情況下,尾隨空格(包括單獨(dú)由空格組成的行)和空格字符(緊跟該行的初始縮進(jìn)內(nèi)的制表符后面的空格字符)將被視為空白錯(cuò)誤。如果發(fā)現(xiàn)問(wèn)題,則退出非零狀態(tài)。與--exit-code 不兼容。

--ws-error-highlight=<kind>

突出顯示空白的錯(cuò)誤context,old或者new把差異線(xiàn)。多個(gè)值以逗號(hào)分隔,none重置以前的值,default將列表重置為newall簡(jiǎn)寫(xiě)為old,new,context。如果未給出此選項(xiàng),并且diff.wsErrorHighlight未設(shè)置配置變量,則只會(huì)new突出顯示行中的空白錯(cuò)誤??瞻族e(cuò)誤是彩色的color.diff.whitespace

--full-index

在生成補(bǔ)丁格式輸出時(shí),在“索引”行上顯示完整的映像前和映像后blob對(duì)象名稱(chēng),而不是第一批字符。

--binary

除了--full-index輸出可以應(yīng)用的二進(jìn)制差異git-apply

--abbrev=<n>

不是在 diff-raw 格式輸出和 diff-tree標(biāo)題行中顯示完整的40字節(jié)十六進(jìn)制對(duì)象名稱(chēng),只顯示部分前綴。這與 --full-index上面的選項(xiàng)無(wú)關(guān),后者控制 diff-patch 輸出格式。非默認(rèn)的位數(shù)可以用指定--abbrev=<n>。

-B<n>   --break-rewrites[=<n>]

將完全重寫(xiě)更改分解為刪除和創(chuàng)建對(duì)。這有兩個(gè)目的:

它影響到一種改變的方式,這種改變相當(dāng)于整個(gè)文件的重寫(xiě),而不是像一系列刪除和插入混合在一起,只有幾行文本與上下文相匹配,但是作為一個(gè)單一的刪除舊的一切,隨后是一個(gè)單次插入所有新事物,并且數(shù)字m控制-B選項(xiàng)的這個(gè)方面(默認(rèn)為60%)。-B/70%指定只有少于30%的原始數(shù)據(jù)應(yīng)保留在Git的結(jié)果中,以便將其視為全部重寫(xiě)(否則結(jié)果補(bǔ)丁將是一系列與上下文行混合的刪除和插入)。

與-M 一起使用時(shí),完全重寫(xiě)的文件也被認(rèn)為是重命名的來(lái)源(通常-M 僅考慮作為重命名源消失的文件),并且該數(shù)字n控制著-B選項(xiàng)的這個(gè)方面(默認(rèn)為50%)。-B20%指定添加和刪除相對(duì)于文件大小的20%或更多的更改有資格作為重命名為其他文件的可能來(lái)源。

-M<n>   --find-renames=<n>

檢測(cè)重命名。如果n被指定,則它是相似度指數(shù)的閾值(即與文件大小相比的添加/刪除量)。例如,-M90%如果超過(guò)90%的文件沒(méi)有改變,Git應(yīng)該考慮刪除/添加對(duì)是一個(gè)重命名。如果沒(méi)有%符號(hào),該數(shù)字應(yīng)作為分?jǐn)?shù)讀取,并在其前面加小數(shù)點(diǎn)。即,-M5變成0.5,并且因此是相同的-M50%。同樣的,-M05也是一樣的-M5%。要將檢測(cè)限制為精確重命名,請(qǐng)使用-M100%。默認(rèn)相似度指數(shù)為50%。

-C<n>   --find-copies=<n>

檢測(cè)副本以及重命名。另見(jiàn)--find-copies-harder。如果n被指定,它的含義與-M<n>。

--find-copies-harder

出于性能原因,默認(rèn)情況下,-C只有當(dāng)副本的原始文件在相同的變更集中被修改時(shí),選項(xiàng)才會(huì)查找副本。該標(biāo)志使命令檢查未修改的文件作為復(fù)制源的候選項(xiàng)。對(duì)于大型項(xiàng)目來(lái)說(shuō)這是一項(xiàng)非常昂貴的操作,因此請(qǐng)謹(jǐn)慎使用。給予多個(gè)-C選項(xiàng)具有相同的效果。

-D   --irreversible-delete

省略原圖像進(jìn)行刪除,即僅打印標(biāo)題,但不打印原像和之間的差異/dev/null。由此產(chǎn)生的補(bǔ)丁不適用于patchgit apply; 這僅適用于那些想專(zhuān)注于更改后查看文本的人。另外,輸出顯然缺乏足夠的信息來(lái)反向應(yīng)用這樣的補(bǔ)丁,甚至是手動(dòng)的,因此也就是選項(xiàng)的名稱(chēng)。

在與-B刪除/創(chuàng)建對(duì)的刪除部分一起使用時(shí),還要省略原像。

-l<num>

-M-C選項(xiàng)需要為O(n ^ 2)的處理時(shí)間,其中n是/復(fù)制目標(biāo)潛在的重命名的數(shù)目。如果重命名/復(fù)制目標(biāo)的數(shù)量超過(guò)指定的數(shù)量,則此選項(xiàng)可防止重命名/復(fù)制檢測(cè)運(yùn)行。

--diff-filter=[(A|C|D|M|R|T|U|X|B)…*]

選擇僅添加(A),復(fù)制(C),刪除(D),修改(M),重命名(R),其類(lèi)型(即常規(guī)文件,符號(hào)鏈接,子模塊,...)更改(T),Unmerged(U),未知(X)或已配對(duì)Broken(B)??梢允褂萌魏芜^(guò)濾字符的組合(包括無(wú))。當(dāng)*(全部或無(wú))添加到組合中時(shí),如果有任何文件與比較中的其他條件匹配,則選擇所有路徑; 如果沒(méi)有與其他標(biāo)準(zhǔn)匹配的文件,則不會(huì)選擇任何內(nèi)容。

此外,這些大寫(xiě)字母可以降低排除。例如--diff-filter=ad排除添加和刪除的路徑。

-S<string>

查找改變文件中指定字符串出現(xiàn)次數(shù)(即添加/刪除)的差異。旨在供劇本使用。

當(dāng)你尋找一個(gè)精確的代碼塊(比如一個(gè)結(jié)構(gòu)體)并且想知道該塊自第一次出現(xiàn)以來(lái)的歷史記錄時(shí),它非常有用:迭代地使用該特征將原始圖像中的有趣塊返回到-S,并繼續(xù)前進(jìn),直到獲得該塊的第一個(gè)版本。

-G<regex>

尋找補(bǔ)丁文本包含與<regex>匹配的添加/刪除行的差異。

為了說(shuō)明之間的區(qū)別-S<regex> --pickaxe-regex,并-G<regex>考慮在同一個(gè)文件中的以下DIFF提交:

+    return !regexec(regexp, two->ptr, 1, &regmatch, 0);...-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);

雖然git log -G"regexec\(regexp"會(huì)顯示此提交,但git log -S"regexec\(regexp" --pickaxe-regex不會(huì)(因?yàn)樵撟址某霈F(xiàn)次數(shù)沒(méi)有改變)。

有關(guān)pickaxe更多信息,請(qǐng)參閱 gitdiffcore [7]中的條目。

--pickaxe-all

當(dāng)-S-G發(fā)現(xiàn)更改時(shí),顯示該更改集中的所有更改,而不僅僅是包含<string>中的更改的文件。

--pickaxe-regex

將給定的<string> -S視為擴(kuò)展的 POSIX 正則表達(dá)式進(jìn)行匹配。

-O<orderfile>

控制文件在輸出中出現(xiàn)的順序。這覆蓋了diff.orderFile配置變量(請(qǐng)參閱 git-config [1])。取消diff.orderFile,使用-O/dev/null

輸出順序由<orderfile>中的全局模式順序決定。所有具有與第一個(gè)模式相匹配的路徑名的文件將首先輸出,接下來(lái)將輸出所有具有匹配第二個(gè)模式(但不是第一個(gè))的路徑名的文件,依此類(lèi)推。最后輸出所有不匹配任何模式的路徑名的文件,就好像文件末尾有一個(gè)隱含的匹配模式一樣。如果多個(gè)路徑名具有相同的排名(它們匹配相同的模式但沒(méi)有更早的模式),則它們的輸出順序相對(duì)于彼此是正常順序。

按以下方式解析<orderfile>:

  • 空白行被忽略,所以它們可以用作分隔符以提高可讀性。

  • 以散列(“ #”)開(kāi)頭的行會(huì)被忽略,因此它們可以用于注釋。\如果以散列開(kāi)頭,則在模式的開(kāi)頭添加反斜杠(“ ”)。

  • 每個(gè)其他行都包含一個(gè)pattern.atterns與沒(méi)有FNM_PATHNAME標(biāo)志的fnmantch(3)使用的模式具有相同的語(yǔ)法和語(yǔ)義,除非路徑名也匹配模式,如果刪除任何數(shù)量的最終路徑名組件都與該模式匹配。例如,模式“ foo*bar”匹配“ fooasdfbar”和“ foo/bar/baz/asdf”但不是“foobarx即使一行有空白,而另一行沒(méi)有空白,這也會(huì)忽略差異。--ignore-blank-lines忽略其行全部空白的更改。--inter-hunk-context = <lines>在diff hunk之間顯示上下文,直到指定的行數(shù),從而融合彼此接近的hunk。默認(rèn)為diff.interHunkContext如果配置選項(xiàng)未設(shè)置,則為0。-W --function-context顯示更改的整個(gè)周?chē)δ堋?-exit-code使用類(lèi)似于diff(1)的代碼退出程序。也就是說(shuō),如果存在差異,則1退出,0表示沒(méi)有差異。--quiet禁用程序的所有輸出。暗示--exit-code。--ext-diff允許執(zhí)行一個(gè)外部diff助手。如果你用gitattributes [5]設(shè)置外部差異驅(qū)動(dòng)程序,你需要在git-log [1]和朋友中使用這個(gè)選項(xiàng)。--no-ext-diff不允許外部diff驅(qū)動(dòng)程序。--textconv --no-textconv允許(或不允許)在比較二進(jìn)制文件時(shí)運(yùn)行外部文本轉(zhuǎn)換過(guò)濾器。有關(guān)詳細(xì)信息,請(qǐng)參閱gitattributes [5]。由于textconv過(guò)濾器通常是單向轉(zhuǎn)換,因此生成的差異適合人類(lèi)消費(fèi),但無(wú)法應(yīng)用。出于這個(gè)原因,默認(rèn)情況下,textconv過(guò)濾器僅針對(duì)git-diff [1]和git-log [1]啟用,但不適用于git-format-patch [1]或diff plumbing命令。--ignore-submodules = <when>忽略diff代中子模塊的更改。<什么時(shí)候>可以是“無(wú)”,“未跟蹤”,“臟” 或“all”,這是默認(rèn)設(shè)置。如果子模塊包含未跟蹤或已修改的文件,或者HEAD與超級(jí)項(xiàng)目中記錄的提交不同,并且可用于覆蓋ignore選項(xiàng)在git-config [1]或gitmodules [5]中。當(dāng)使用“未跟蹤”時(shí),如果子模塊僅包含未跟蹤內(nèi)容(但仍然針對(duì)修改內(nèi)容進(jìn)行掃描),則子模塊不會(huì)被視為臟。使用“dirty”會(huì)忽略對(duì)子模塊工作樹(shù)的所有更改,只會(huì)顯示超級(jí)項(xiàng)目中存儲(chǔ)的提交更改(這是1.7.0之前的行為)。使用“all”隱藏對(duì)子模塊的所有更改。--src-prefix = <prefix>顯示給定的源前綴而不是“a /”。--dst-prefix = <prefix>顯示給定的目標(biāo)前綴而不是“b /”。--no-prefix不顯示任何源或目標(biāo)前綴。--line-prefix = <prefix>為每行輸出添加一個(gè)附加前綴。--ita -in-in-index默認(rèn)條目由“git add -N”添加 在“git diff”中顯示為現(xiàn)有的空文件,在“git diff --cached”中顯示為新文件。該選項(xiàng)使得該條目在“git diff”中顯示為新文件,而在“git diff --cached”中不存在。這個(gè)選項(xiàng)可以恢復(fù)--ita-visible-in-index。這兩個(gè)選項(xiàng)都是實(shí)驗(yàn)性的,可以在將來(lái)刪除。有關(guān)這些常用選項(xiàng)的更詳細(xì)的解釋?zhuān)?qǐng)參閱gitdiffcore [7]。-1  - 基-2  - 路-3  - 它們-0分別針對(duì)“基本”版本,“我們的分支”或“他們的分支”。使用這些選項(xiàng),合并條目的差異不會(huì)顯示出來(lái)。默認(rèn)值是對(duì)我們的分支(-2)和完全解析的路徑進(jìn)行差異化??梢越o出選項(xiàng)-0以忽略未合并條目的差異輸出并僅顯示“未合并”。-c --cc比較第2階段(我們的分支),第3階段(他們的分支)和工作樹(shù)文件并輸出組合差異,類(lèi)似于diff-tree用這些標(biāo)志顯示合并提交。-q即使在不存在的文件上仍保持沉默Raw輸出格式“git-diff-index”,“git-diff-tree”,“git-diff-files”和“git diff -raw”的原始輸出格式非常相似。命令都比較兩組事物; 比較不同的是:git-diff-index <tree-ish>比較了<tree-ish>和文件系統(tǒng)上的文件。git-diff-index --cached <tree-ish>比較<tree-ish>和索引。git-diff-tree -r <tree-ish-1> <tree-ish-2> <pattern> ...比較由兩個(gè)參數(shù)命名的樹(shù)。git-diff-files <pattern> ...比較文件系統(tǒng)上的索引和文件?!癵it-diff-tree”命令通過(guò)打印正在比較的內(nèi)容的散列來(lái)開(kāi)始輸出。之后,

  • a colon.

  1. 模式為“src”; 000000如果創(chuàng)建或未合并。

  1. 空間。

  1. 模式為“dst”; 000000如果刪除或未合并。

  1. 空間。

  1. sha1代表“src”; 0 {40}如果創(chuàng)建或未合并。

  1. 空間。

  1. sha1為“dst”; 0 {40}如果創(chuàng)建,不合并或“看工作樹(shù)”。

  1. 空間。

  1. 狀態(tài),然后是可選的“分?jǐn)?shù)”編號(hào)。

  1. 選項(xiàng)卡或 NUL -z選項(xiàng)時(shí)使用。

  1. “src”的路徑

  1. 使用選項(xiàng)卡時(shí)-z選項(xiàng)卡或NUL ; 只存在于C或R.

  1. “dst”的路徑; 只存在于 C 或R.

  1. 使用 LF 或 NUL -z選項(xiàng)時(shí),可以終止記錄。

可能的狀態(tài)字母是:

  • A:添加一個(gè)文件

  • C:將文件復(fù)制到新文件中

  • D:刪除文件

  • M:修改文件的內(nèi)容或模式

  • R:重命名文件

  • T:改變文件的類(lèi)型

  • U:文件未合并(必須先完成合并,然后才能提交)

  • X:“未知”更改類(lèi)型(最可能是一個(gè)錯(cuò)誤,請(qǐng)報(bào)告)

狀態(tài)字母 C 和 R 總是跟著一個(gè)分?jǐn)?shù)(表示移動(dòng)或復(fù)制的來(lái)源和目標(biāo)之間的相似百分比)。狀態(tài)字母 M 后可以跟一個(gè)文件重寫(xiě)的分?jǐn)?shù)(表示不相似性的百分比)。

如果文件是文件系統(tǒng)上的新文件并且與索引不同步,則<sha1>顯示為全0。

示例:

:100644 100644 5be4a4...... 000000...... M file.c

如果沒(méi)有這個(gè)-z選項(xiàng),帶有“不尋?!弊址穆窂矫麑凑张渲米兞康恼f(shuō)明引用core.quotePath(請(qǐng)參閱 git-config [1])。使用-z文件名是逐字輸出的,并且該行由 NUL 字節(jié)終止。

比較格式的合并

"git-diff-tree", "git-diff-files" and "git-diff --raw" 可以采取-c--cc選項(xiàng),也產(chǎn)生差異輸出合并提交。輸出與上述格式的不同之處在于:

  1. 每個(gè)父母都有一個(gè)冒號(hào)

  1. 還有更多的“src”模式和“src”sha1

  1. 狀態(tài)是每個(gè)父級(jí)的連接狀態(tài)字符

  1. 沒(méi)有可選的“分?jǐn)?shù)”號(hào)碼

  1. 單個(gè)路徑,僅適用于“dst”示例::: 100644 100644 100644 fabadb8 ... cc95eb0 ... 4866510 ... MM describe.c 注意:combined diff僅列出所有父母修改過(guò)的文件。使用-p 生成補(bǔ)丁程序當(dāng)使用“git- diff-index“,”git-diff-tree“或者”git-diff-files“可以通過(guò)-p選項(xiàng)運(yùn)行,”git diff“不帶--raw選項(xiàng),或者”git log“用”-p“選項(xiàng)運(yùn)行不產(chǎn)生上述輸出; 相反,他們生成一個(gè)補(bǔ)丁文件。您可以通過(guò)GIT_EXTERNAL_DIFFGIT_DIFF_OPTS環(huán)境變量自定義這些修補(bǔ)程序的創(chuàng)建。-p選項(xiàng)生成的內(nèi)容與傳統(tǒng)的diff格式略有不同:

  1. 它前面有一個(gè)“git diff”頭,看起來(lái)像這樣:

diff --git a/file1 b/file2

a/b/文件名是,除非重命名/副本所涉及的相同。尤其是,即使是創(chuàng)建或刪除,/dev/null也可not用于替換文件名a/b/文件名。

當(dāng)重命名/復(fù)制參與,file1file2示出了重命名/復(fù)制的源文件的名稱(chēng)和重命名/復(fù)制分別產(chǎn)生,該文件的名稱(chēng)。

  1. 它后跟一個(gè)或多個(gè)擴(kuò)展標(biāo)題行:舊模式<mode>新模式<mode>已刪除文件模式<mode>新文件模式<mode>從<path>復(fù)制到<path>從<path>重命名重命名為<path>相似索引<number>不相似索引<number>索引<hash> .. <hash> <mode>文件模式打印為6位八進(jìn)制數(shù)字,包括文件類(lèi)型和文件權(quán)限位。擴(kuò)展頭中的路徑名不包含a/b/前綴。相似性指數(shù)是未改變的行的百分比,不相似性指數(shù)是改變的行的百分比。它是一個(gè)向下舍入的整數(shù),后面跟著一個(gè)百分號(hào)。100%的相似性指數(shù)值因此保留給兩個(gè)相同的文件,而100%相異性意味著來(lái)自舊文件的任何行都不會(huì)將其轉(zhuǎn)換為新的文件。索引行包含更改前后的 SHA-1校驗(yàn)和。如果文件模式?jīng)]有改變,則包含<mode>; 否則,單獨(dú)的行表示舊模式和新模式。

  1. 帶有“不常用”字符的路徑名將按照配置變量的說(shuō)明引用core.quotePath(請(qǐng)參閱git-config [1])。

  1. file1輸出中的所有文件在提交之前引用文件,所有file2文件在提交之后引用文件。將每個(gè)更改順序應(yīng)用于每個(gè)文件是不正確的。例如,這個(gè)補(bǔ)丁會(huì)將a和b:diff --git a / ab / b重命名為a重命名為b diff --git a / bb / a重命名為b重命名為 aCombined diff formatAny diff-generating 命令可以將-c或者顯示合并時(shí)--cc產(chǎn)生一個(gè)選項(xiàng)combined diff。這是顯示與 git-diff [1]或 git-show [1]合并時(shí)的默認(rèn)格式。另請(qǐng)注意,您可以-m選擇這些命令中的任何一個(gè)來(lái)強(qiáng)制生成合并的單個(gè)父代的差異combined diff格式如下所示:diff --combined describe.c index fabadb8,cc95eb0..4866510 --- a / describe.c +++ b / describe.c @@@ -98,20 -98,12 +98,20 @@@ return(a_date> b_date)?-1:(a_date == b_date)?0:1; }  - 靜態(tài)void描述(char * arg) - 靜態(tài)void描述(struct commit * cmit,int last_one)++靜態(tài)void描述(char * arg,int last_one){+ unsigned char sha1 [20]; + struct commit * cmit; struct commit_list * list; static int initialized = 0; struct commit_name * n; + if(get_sha1(arg,sha1)<0)+ usage(describe_usage); + cmit = lookup_commit_reference(sha1); + if(!cmit)+ usage(describe_usage); + if(!initialized){initialized = 1; for_each_ref(GET_NAME);

  1. 它前面有一個(gè)“git diff”頭,看起來(lái)像這樣(當(dāng)使用-c選項(xiàng)時(shí)):

差異diff --組合文件

或者像這樣(當(dāng)使用--cc選項(xiàng)時(shí)):

diff --cc 文件

  1. 它后面跟著一個(gè)或多個(gè)擴(kuò)展標(biāo)題行(此示例顯示與兩個(gè)父級(jí)合并):index <hash>,<hash> .. <hash> mode <mode>,<mode> .. <mode>新文件模式<mode>已刪除的文件模式<mode>,<mode> mode <mode>,<mode>..<mode>只有當(dāng)至少有一個(gè)<mode>與其余部分不同時(shí),該行才會(huì)出現(xiàn)。具有關(guān)于檢測(cè)到的內(nèi)容移動(dòng)(重命名和復(fù)制檢測(cè))的信息的擴(kuò)展標(biāo)題被設(shè)計(jì)為與兩個(gè)<tree-ish>的差異一起工作,并且不被組合的差異格式使用。

  1. 緊接著是兩行文件/文件頭

--- a /文件+++ b /文件

類(lèi)似于傳統(tǒng)unified差異格式的雙行標(biāo)題,/dev/null用于表示創(chuàng)建或刪除的文件。

  1. 塊頭格式被修改以防止人們意外地將其提供給patch -p1。組合的差異格式是為了審查合并提交更改而創(chuàng)建的,并不適用于應(yīng)用。這個(gè)改變類(lèi)似于擴(kuò)展index頭中的改變:@@@ <從文件范圍到<從文件范圍到<到文件范圍> @@@有(父數(shù)+ 1)個(gè)@字符不同于傳統(tǒng)的unifieddiff格式,它顯示兩個(gè)文件A和B,其中一個(gè)列有-(減號(hào) - 出現(xiàn)在A(yíng)中,但在B中刪除),+(加 - 在A(yíng)中丟失,但添加到B中) , 要么" "(空格不變)前綴,此格式將兩個(gè)或多個(gè)文件file1,file2,...與一個(gè)文件X進(jìn)行比較,并顯示X與每個(gè)fileN的區(qū)別。每個(gè)fileN的一列都被預(yù)置在輸出行中,以指出X的行與其不同。-列N中的一個(gè)字符表示行出現(xiàn)在fileN 中,但它不出現(xiàn)在結(jié)果中。+N列中的一個(gè)字符表示該行出現(xiàn)在結(jié)果中,而fileN沒(méi)有該行(換句話(huà)說(shuō),從該父母的視角添加該行)。在上面的示例輸出中,函數(shù)簽名從兩個(gè)文件中更改(因此-從file1和file2中刪除了兩個(gè)刪除,另外還有兩個(gè)刪除++意味著添加的一行不會(huì)出現(xiàn)在file1或file2中)。另外還有八行與file1相同,但不會(huì)出現(xiàn)在file2中(因此前綴為+)。當(dāng)顯示時(shí)git diff-tree -c,它將合并提交的父項(xiàng)與合并結(jié)果(即file1..fileN是父項(xiàng))進(jìn)行比較。在顯示時(shí)git diff-files -c,它將兩個(gè)未解決的合并父項(xiàng)與正在運(yùn)行的樹(shù)文件進(jìn)行比較(即,file1是階段2 aka“我們的版本”,file2是階段3 aka“他們的版本”)其他diff格式該--summary選項(xiàng)描述新添加,刪除,重命名并復(fù)制文件。該--stat選項(xiàng)將diffstat(1)圖添加到輸出。這些選項(xiàng)可以與其他選項(xiàng)結(jié)合使用,如-p用于人類(lèi)消費(fèi)。當(dāng)顯示涉及重命名或復(fù)制的更改時(shí),--stat輸出通過(guò)結(jié)合路徑名的通用前綴和后綴來(lái)緊湊地格式化路徑名。例如,移動(dòng)的改變arch/i386/Makefile,以arch/x86/Makefile在修改4線(xiàn)將示出這樣的:拱/ {I386 => 86} /生成文件| 4 +  - 該--numstat選項(xiàng)提供了diffstat(1)信息,但設(shè)計(jì)用于更簡(jiǎn)單的機(jī)器消耗。--numstat輸出中的條目如下所示:1 2自述文件3 1 arch / {i386 => x86} / Makefile即從左至右:

  1. 增加的行數(shù);

  1. 標(biāo)簽;

  1. 刪除的行數(shù);

  1. 標(biāo)簽;

  1. 路徑名(可能帶有重命名/復(fù)制信息);

  1. 一個(gè)換行符。當(dāng)-z輸出選項(xiàng)有效時(shí),輸出格式如下:1 2 README NUL 3 1 NUL arch / i386 / Makefile NUL arch / x86 / Makefile NULThat 是:

  1. 增加的行數(shù);

  1. 標(biāo)簽;

  1. 刪除的行數(shù);

  1. 標(biāo)簽;

  1. NUL(只有在重命名/復(fù)制時(shí)才存在);

  1. preimage 中的路徑名;

  1. NUL(只有在重命名/復(fù)制時(shí)才存在);

  1. postimage 中的路徑名(只有在重命名/復(fù)制時(shí)才存在);

  1. a NUL.

NUL重命名之前的 preimage 路徑之前的額外內(nèi)容是允許讀取輸出的腳本判斷當(dāng)前正在讀取的記錄是單路徑記錄還是重命名/復(fù)制記錄,而不提前讀取。閱讀添加和刪除的行后,讀取NUL會(huì)產(chǎn)生路徑名,但如果是這樣NUL,該記錄將顯示兩個(gè)路徑。

Previous article: Next article: