<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # git-show > 原文: [https://git-scm.com/docs/git-show](https://git-scm.com/docs/git-show) ## 名稱 git-show - 顯示各種類型的對象 ## 概要 ``` git show [<options>] [<object>…?] ``` ## 描述 顯示一個或多個對象(blob,樹,標簽和提交)。 對于提交,它顯示日志消息和文本差異。它還以 _git diff-tree --cc_ 生成的特殊格式顯示合并提交。 對于標簽,它顯示標簽消息和引用的對象。 對于樹,它顯示名稱(相當于 _git ls-tree_ 和--name-only)。 對于普通blob,它顯示了普通內容。 該命令采用適用于 _git diff-tree_ 命令的選項來控制如何顯示提交引入的更改。 本手冊頁僅介紹最常用的選項。 ## OPTIONS ``` <object>…? ``` 要顯示的對象的名稱(默認為 _HEAD_ )。有關拼寫對象名稱的更完整列表,請參閱 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中的“指定修訂”部分。 ``` --pretty[=<format>] ``` ``` --format=<format> ``` 以給定格式打印提交日志的內容,其中_&lt; format&gt;_ 可以是 _oneline_ ,_短_,_培養基_,_全_,_更豐富_,_之一電子郵件_,_原始_,_格式:&lt; string&gt;_ 和 _tformat:&lt; string&gt;_ 。當_&lt; format&gt;_ 不屬于上述情況,并且其中包含_%占位符_,其行為就像 _--pretty = tformat:&lt; format&gt;_ 給出了。 有關每種格式的一些其他詳細信息,請參閱“PRETTY FORMATS”部分。當 _=&lt; format&gt;_ 部分省略,默認為 _medium_ 。 注意:您可以在存儲庫配置中指定默認的漂亮格式(請參閱 [git-config [1]](https://git-scm.com/docs/git-config) )。 ``` --abbrev-commit ``` 而不是顯示完整的40字節十六進制提交對象名稱,而只顯示部分前綴。可以使用“--abbrev =&lt; n&gt;”指定非默認位數(如果顯示,也會修改diff輸出)。 對于使用80列終端的人來說,這應該使“--pretty = oneline”更具可讀性。 ``` --no-abbrev-commit ``` 顯示完整的40字節十六進制提交對象名稱。這否定了`--abbrev-commit`以及暗示它的選項,例如“--oneline”。它還會覆蓋`log.abbrevCommit`變量。 ``` --oneline ``` 這是一起使用的“--pretty = oneline --abbrev-commit”的簡寫。 ``` --encoding=<encoding> ``` 提交對象在其編碼頭中記錄用于日志消息的編碼;此選項可用于告訴命令以用戶首選的編碼重新編碼提交日志消息。對于非管道命令,默認為UTF-8。請注意,如果一個對象聲稱在`X`中編碼并且我們在`X`中輸出,我們將逐字輸出該對象;這意味著原始提交中的無效序列可能會復制到輸出中。 ``` --expand-tabs=<n> ``` ``` --expand-tabs ``` ``` --no-expand-tabs ``` 執行選項卡擴展(將每個選項卡替換為足夠的空格以填充到日志消息中的_&lt; n&gt;_ 的倍數的下一個顯示列),然后在輸出中顯示它。 `--expand-tabs`是`--expand-tabs=8`的簡寫,`--no-expand-tabs`是`--expand-tabs=0`的簡寫,它會禁用制表符擴展。 默認情況下,選項卡以相當格式展開,將日志消息縮進4個空格(即 _medium_ ,默認情況下, _full_ 和 _fulller_ )。 ``` --notes[=<treeish>] ``` 在顯示提交日志消息時,顯示注釋提交的注釋(請參閱 [git-notes [1]](https://git-scm.com/docs/git-notes) )。當命令行中沒有給出`--pretty`,`--format`或`--oneline`選項時,這是`git log`,`git show`和`git whatchanged`命令的默認值。 默認情況下,顯示的注釋來自`core.notesRef`和`notes.displayRef`變量(或相應的環境覆蓋)中列出的注釋refs。有關詳細信息,請參閱 [git-config [1]](https://git-scm.com/docs/git-config) 。 使用可選的_&lt; treeish&gt;_ 參數,使用樹形查找要顯示的注釋。樹形可以在以`refs/notes/`開頭時指定完整的引用名稱;當它以`notes/`開始時,`refs/`和其他`refs/notes/`作為前綴以形成ref的全名。 可以組合多個--notes選項來控制顯示哪些音符。示例:“ - notes = foo”將僅顯示“refs / notes / foo”中的注釋; “--notes = foo --notes”將顯示“refs / notes / foo”和默認音符ref(s)中的兩個音符。 ``` --no-notes ``` 不要顯示筆記。這取消了上面的`--notes`選項,通過重置顯示注釋的注釋列表。選項按命令行中給出的順序進行解析,例如, “--notes --notes = foo --no-notes --notes = bar”只會顯示“refs / notes / bar”中的注釋。 ``` --show-notes[=<treeish>] ``` ``` --[no-]standard-notes ``` 不推薦使用這些選項。請使用上面的--notes / - no-notes選項。 ``` --show-signature ``` 通過將簽名傳遞給`gpg --verify`并顯示輸出來檢查已簽名的提交對象的有效性。 ## 漂亮的格式 如果提交是合并,并且如果漂亮格式不是 _oneline_ ,_電子郵件_或 _raw_ ,則在_作者之前插入另一行:_行。該行以“Merge:”開頭,并且打印祖先提交的sha1,用空格分隔。請注意,如果您限制了對歷史記錄的查看,則列出的提交可能不一定是**直接**父提交的列表:例如,如果您只對與某個目錄或文件相關的更改感興趣。 有幾種內置格式,您可以通過設置漂亮的格式來定義其他格式。&lt; name&gt;將選項配置為另一種格式名稱或_格式:_字符串,如下所述(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。以下是內置格式的詳細信息: * _oneline_ ``` &lt;sha1&gt; &lt;title line&gt; ``` 這是為了盡可能緊湊。 * _短_ ``` commit &lt;sha1&gt; Author: &lt;author&gt; ``` ``` &lt;title line&gt; ``` * _中_ ``` commit &lt;sha1&gt; Author: &lt;author&gt; Date: &lt;author date&gt; ``` ``` &lt;title line&gt; ``` ``` &lt;full commit message&gt; ``` * _全_ ``` commit &lt;sha1&gt; Author: &lt;author&gt; Commit: &lt;committer&gt; ``` ``` &lt;title line&gt; ``` ``` &lt;full commit message&gt; ``` * _更豐富_ ``` commit &lt;sha1&gt; Author: &lt;author&gt; AuthorDate: &lt;author date&gt; Commit: &lt;committer&gt; CommitDate: &lt;committer date&gt; ``` ``` &lt;title line&gt; ``` ``` &lt;full commit message&gt; ``` * _電子郵件_ ``` From &lt;sha1&gt; &lt;date&gt; From: &lt;author&gt; Date: &lt;author date&gt; Subject: [PATCH] &lt;title line&gt; ``` ``` &lt;full commit message&gt; ``` * _原始_ _raw_ 格式顯示完整提交,與存儲在提交對象中完全相同。值得注意的是,無論是否使用--abbrev或--no-abbrev,SHA-1都會完整顯示,并且_父_信息顯示真正的父提交,而不考慮移植或歷史簡化。請注意,此格式會影響提交的顯示方式,但不會影響顯示差異的方式,例如用`git log --raw`。要以原始diff格式獲取完整對象名稱,請使用`--no-abbrev`。 * _格式:&lt; string&gt;_ _格式:&lt; string&gt;_ 格式允許您指定要顯示的信息。它的工作方式有點像printf格式,但有一個值得注意的例外,即你用_%n_ 而不是 _\ n_ 獲得換行符。 例如,_格式:“%h的作者是%an,%ar%n標題是&gt;&gt;%s&lt;&lt;%n”_將顯示如下內容: ``` The author of fe6e0ee was Junio C Hamano, 23 hours ago The title was &gt;&gt;t4119: test autocomputing -p&lt;n&gt; for traditional diff input.&lt;&lt; ``` 占位符是: * _%H_ :提交哈希 * _%h_ :縮寫提交哈希 * _%T_ :樹形哈希 * _%t_ :縮寫樹哈希 * _%P_ :父哈希 * _%p_ :縮寫為父哈希值 * _%和_:作者姓名 * _%aN_ :作者姓名(尊重.mailmap,見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%ae_ :作者電郵 * _%aE_ :作者電子郵件(尊重.mailmap,見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%ad_ :作者日期(格式尊重 - 日期=選項) * _%aD_ :作者日期,RFC2822風格 * _%ar_ :作者日期,相對 * 的_%:作者日期,UNIX時間戳_ * _%ai_ :作者日期,ISO 8601樣格式 * _%aI_ :作者日期,嚴格的ISO 8601格式 * _%cn_ :提交者名稱 * _%cN_ :提交者名稱(尊重.mailmap,見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%ce_ :提交者電子郵件 * _%cE_ :提交者電子郵件(尊重.mailmap,參見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%cd_ :提交者日期(格式尊重 - 日期=選項) * _%cD_ :提交者日期,RFC2822樣式 * _%cr_ :提交者日期,相對 * _%ct_ :提交者日期,UNIX時間戳 * _%ci_ :提交者日期,類似ISO 8601的格式 * _%cI_ :提交者日期,嚴格的ISO 8601格式 * _%d_ :引用名稱,如 [git-log [1]](https://git-scm.com/docs/git-log) 的--decorate選項 * _%D_ :沒有“(”,“)”包裝的引用名稱。 * _%S_ :在達到提交的命令行上給出的引用名稱(如`git log --source`),僅適用于`git log` * _%e_ :編碼 * _%s_ :受試者 * _%f_ :已清理的主題行,適用于文件名 * _%b_ :身體 * _%B_ :生體(未包裹的主體和身體) * _%N_ :提交備注 * _%GG_ :來自GPG的簽名提交的原始驗證消息 * _%G?_ :顯示好的(有效)簽名“G”,壞簽名顯示“B”,有效期未知的好簽名顯示“U”,已過期的好簽名顯示“X”,“Y”代表由過期密鑰簽名的好簽名,“R”表示由撤銷密鑰簽名的好簽名,“E”表示簽名無法檢查(例如缺少密鑰),“N”表示沒有簽名 * _%GS_ :顯示簽名提交的簽名者姓名 * _%GK_ :顯示用于簽署簽名提交的密鑰 * _%GF ??_:顯示用于簽署簽名提交的密鑰的指紋 * _%GP_ :顯示主鍵的指紋,其子鍵用于簽名提交的簽名 * _%gD_ :reflog選擇器,例如`refs/stash@{1}`或`refs/stash@{2 minutes ago`};格式遵循`-g`選項描述的規則。 `@`之前的部分是命令行中給出的refname(因此`git log -g refs/heads/master`將產生`refs/heads/master@{0}`)。 * _%gd_ :縮短了reflog選擇器;與`%gD`相同,但refname部分縮短了人類的可讀性(因此`refs/heads/master`變為`master`)。 * _%gn_ :reflog身份名稱 * _%gN_ :reflog身份名稱(尊重.mailmap,見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%ge_ :reflog身份電子郵件 * _%gE_ :reflog身份郵件(尊重.mailmap,見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 或 [git-blame [1]](https://git-scm.com/docs/git-blame) ) * _%gs_ :reflog主題 * _%Cred_ :將顏色切換為紅色 * _%Cgreen_ :將顏色切換為綠色 * _%Cblue_ :將顏色切換為藍色 * _%Creset_ :重置顏色 * _%C(...)_:顏色規格,如 [git-config [1]](https://git-scm.com/docs/git-config) 的“CONFIGURATION FILE”部分中的值所述。默認情況下,僅在啟用日志輸出時顯示顏色(通過`color.diff`,`color.ui`或`--color`,并且如果我們要去終端,則尊重前者的`auto`設置)。 `%C(auto,...)`被接受為默認的歷史同義詞(例如,`%C(auto,red)`)。即使沒有啟用顏色,指定`%C(always,...)`也會顯示顏色(盡管只考慮使用`--color=always`為整個輸出啟用顏色,包括這種格式和其他任何git可能顏色的顏色)。單獨`auto`(即`%C(auto)`)將打開下一個占位符的自動著色,直到再次切換顏色。 * _%m_ :左(`&lt;`),右(`&gt;`)或邊界(`-`)標記 * _%n_ :換行符 * _%%_ :原始_%_ * _%x00_ :從十六進制代碼打印一個字節 * _%w([&lt; w&gt; [,&lt; i1&gt; [,&lt; i2&gt;]]])_:切換行換行,類似 [git-shortlog [1]的-w選項](https://git-scm.com/docs/git-shortlog)。 * _%&lt;(&lt; N&gt; [,trunc | ltrunc | mtrunc])_:使下一個占位符至少取N列,如果需要,在右邊填充空格。如果輸出長于N列,則可以選擇在開頭(ltrunc),中間(mtrunc)或結尾(trunc)截斷。請注意,截斷僅適用于N&gt; = 2。 * _%&lt; |(&lt; N&gt;)_:使下一個占位符至少占用第N列,如果需要,在右邊填充空格 * _%&gt;(&lt; N&gt;)_,_%&gt; |(&lt; N&gt;)_:與_%相似,_%&lt; |(&lt; N&gt;)_,但左邊的填充空格_ * _%&gt;(&lt; N&gt;)_,_%&gt; |(&lt; N&gt;)_:類似于_%&gt;(&lt; N&gt;分別是_,_%&gt; |(&lt; N&gt;)_,除非下一個占位符占用的空間多于給定的空間并且左側有空格,請使用這些空格 * _%&gt;&lt;(&lt; N&gt;)_,_%&gt;&lt; |(&lt; N&gt;)_:類似于_%&lt;(&lt; N&gt; )_,_%&lt; |(&lt; N&gt;)_,但填充兩側(即文本居中) * %(預告片[:options]):顯示 [git-interpret-trailers [1]](https://git-scm.com/docs/git-interpret-trailers) 解釋的正文預告片。 `trailers`字符串后面可以跟冒號和零個或多個逗號分隔選項。如果給出了`only`選項,則省略拖車塊中的非拖車線。如果給出`unfold`選項,則表現得就像給出了interpre-trailer的`--unfold`選項一樣。例如,`%(trailers:only,unfold)`兩者都做。 | 注意 | 一些占位符可能依賴于修訂遍歷引擎的其他選項。例如,`%g*` reflog選項將插入一個空字符串,除非我們遍歷reflog條目(例如,通過`git log -g`)。如果命令行中尚未提供`--decorate`,`%d`和`%D`占位符將使用“短”裝飾格式。 | 如果在占位符的_%_之后添加`+`(加號),則在擴展之前插入換行符當且僅當占位符擴展為非空字符串時。 如果在占位符的_%_之后添加`-`(減號),則當且僅當占位符擴展為空字符串時,才會刪除緊接在擴展之前的所有連續換行符。 如果在占位符的_%_之后添加一個“空格”,則在擴展之前插入一個空格,當且僅當占位符擴展為非空字符串時。 * _tformat:_ _格式:_格式與_格式完全相同:_,除了它提供“終結符”語義而不是“分隔符”語義。換句話說,每個提交都附加了消息終止符(通常是換行符),而不是在條目之間放置的分隔符。這意味著單行格式的最終??輸入將使用新行正確終止,就像“oneline”格式一樣。例如: ``` $ git log -2 --pretty=format:%h 4da45bef \ | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' 4da45be 7134973 -- NO NEWLINE $ git log -2 --pretty=tformat:%h 4da45bef \ | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' 4da45be 7134973 ``` 此外,其中包含`%`的任何無法識別的字符串都被解釋為它前面有`tformat:`。例如,這兩個是等價的: ``` $ git log -2 --pretty=tformat:%h 4da45bef $ git log -2 --pretty=%h 4da45bef ``` ## 常見的DIFF選項 ``` -p ``` ``` -u ``` ``` --patch ``` 生成補丁(請參閱生成補丁的部分)。 ``` -s ``` ``` --no-patch ``` 抑制差異輸出。對于`git show`等默認顯示補丁的命令,或取消`--patch`的效果很有用。 ``` -U<n> ``` ``` --unified=<n> ``` 用&lt; n&gt;生成差異。上下文而不是通常的三行。意味著`-p`。 ``` --raw ``` 對于每個提交,使用原始diff格式顯示更改摘要。請參閱 [git-diff [1]](https://git-scm.com/docs/git-diff) 的“RAW OUTPUT FORMAT”部分。這與以原始格式顯示日志本身不同,您可以使用`--format=raw`來實現。 ``` --patch-with-raw ``` `-p --raw`的同義詞。 ``` --indent-heuristic ``` 啟用改變差異塊邊界的啟發式以使補丁更易于閱讀。這是默認值。 ``` --no-indent-heuristic ``` 禁用縮進啟發式。 ``` --minimal ``` 花些額外的時間來確保產生盡可能小的差異。 ``` --patience ``` 使用“耐心差異”算法生成差異。 ``` --histogram ``` 使用“histogram diff”算法生成diff。 ``` --anchored=<text> ``` 使用“錨定差異”算法生成差異。 可以多次指定此選項。 如果源和目標中都存在一行,只存在一次,并以此文本開頭,則此算法會嘗試阻止它在輸出中顯示為刪除或添加。它在內部使用“耐心差異”算法。 ``` --diff-algorithm={patience|minimal|histogram|myers} ``` 選擇差異算法。變體如下: ``` default, myers ``` 基本的貪心差異算法。目前,這是默認值。 ``` minimal ``` 花些額外的時間來確保產生盡可能小的差異。 ``` patience ``` 生成補丁時使用“耐心差異”算法。 ``` histogram ``` 該算法將耐心算法擴展為“支持低發生的共同元素”。 例如,如果將`diff.algorithm`變量配置為非默認值并想要使用默認值,則必須使用`--diff-algorithm=default`選項。 ``` --stat[=<width>[,<name-width>[,<count>]]] ``` 生成diffstat。默認情況下,文件名部分將使用必要的空間,圖形部分的其余部分將使用。最大寬度默認為終端寬度,如果未連接到終端,則為80列,并且可以被`&lt;width&gt;`覆蓋。可以通過在逗號后面給出另一個寬度`&lt;name-width&gt;`來限制文件名部分的寬度。可以使用`--stat-graph-width=&lt;width&gt;`(影響生成統計圖的所有命令)或設置`diff.statGraphWidth=&lt;width&gt;`(不影響`git format-patch`)來限制圖形部分的寬度。通過給出第三個參數`&lt;count&gt;`,可以將輸出限制為第一個`&lt;count&gt;`行,如果有更多,則可以將`...`限制為`...`。 也可以使用`--stat-width=&lt;width&gt;`,`--stat-name-width=&lt;name-width&gt;`和`--stat-count=&lt;count&gt;`單獨設置這些參數。 ``` --compact-summary ``` 輸出擴展標題信息的精簡摘要,例如文件創建或刪除(“新”或“消失”,如果是符號鏈接,則可選“+ l”)和模式更改(“+ x”或“-x”用于添加或刪除diffstat中的可執行位)。信息放在文件名部分和圖形部分之間。意味著`--stat`。 ``` --numstat ``` 與`--stat`類似,但顯示十進制表示法中添加和刪除的行數以及沒有縮寫的路徑名,以使其更加機器友好。對于二進制文件,輸出兩個`-`而不是`0 0`。 ``` --shortstat ``` 僅輸出`--stat`格式的最后一行,其中包含已修改文件的總數,以及已添加和已刪除行的數量。 ``` --dirstat[=<param1,param2,…?>] ``` 輸出每個子目錄的相對更改量的分布。 `--dirstat`的行為可以通過以逗號分隔的參數列表傳遞來定制。默認值由`diff.dirstat`配置變量控制(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。可以使用以下參數: ``` changes ``` 通過計算已從源中刪除或添加到目標的行來計算dirstat數。這忽略了文件中純代碼移動的數量。換句話說,重新排列文件中的行不會像其他更改那樣計算。這是沒有給出參數時的默認行為。 ``` lines ``` 通過執行常規的基于行的差異分析來計算dirstat數字,并對移除/添加的行數進行求和。 (對于二進制文件,計算64字節塊,因為二進制文件沒有自然的線條概念)。這是比`changes`行為更昂貴的`--dirstat`行為,但它確實計算文件中重新排列的行與其他更改一樣多。結果輸出與您從其他`--*stat`選項獲得的輸出一致。 ``` files ``` 通過計算更改的文件數來計算dirstat數。在dirstat分析中,每個更改的文件都相同。這是計算上最便宜的`--dirstat`行為,因為它根本不需要查看文件內容。 ``` cumulative ``` 計算父目錄的子目錄中的更改。請注意,使用`cumulative`時,報告的百分比總和可能超過100%。可以使用`noncumulative`參數指定默認(非累積)行為。 ``` <limit> ``` 整數參數指定截止百分比(默認為3%)。貢獻低于此百分比變化的目錄不會顯示在輸出中。 示例:以下將計算已更改的文件,同時忽略少于已更改文件總量的10%的目錄,并在父目錄中累計子目錄計數:`--dirstat=files,10,cumulative`。 ``` --summary ``` 輸出擴展標題信息的精簡摘要,例如創建,重命名和模式更改。 ``` --patch-with-stat ``` `-p --stat`的同義詞。 ``` -z ``` 將提交與NUL分開,而不是使用新換行符。 此外,當給出`--raw`或`--numstat`時,不要使用路徑名并使用NUL作為輸出字段終止符。 如果沒有此選項,則會引用具有“異常”字符的路徑名,如配置變量`core.quotePath`所述(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。 ``` --name-only ``` 僅顯示已更改文件的名稱。 ``` --name-status ``` 僅顯示已更改文件的名稱和狀態。有關狀態字母的含義,請參閱`--diff-filter`選項的說明。 ``` --submodule[=<format>] ``` 指定子模塊的差異如何顯示。指定`--submodule=short`時,使用_短_格式。此格式僅顯示范圍開頭和結尾的提交名稱。指定`--submodule`或`--submodule=log`時,使用 _log_ 格式。此格式列出 [git-submodule [1]](https://git-scm.com/docs/git-submodule) `summary`等范圍內的提交。指定`--submodule=diff`時,使用 _diff_ 格式。此格式顯示提交范圍之間子模塊內容更改的內聯差異。如果未設置配置選項,則默認為`diff.submodule`或_短_格式。 ``` --color[=<when>] ``` 顯示彩色差異。 `--color`(即沒有 _=&lt;當&gt;_ )與`--color=always`相同時。 _&lt; when&gt;_ 可以是`always`,`never`或`auto`之一。 ``` --no-color ``` 關掉彩色差異。它與`--color=never`相同。 ``` --color-moved[=<mode>] ``` 移動的代碼行的顏色不同。 &lt;模式&gt;如果沒有給出選項,默認為 _no_ ,如果給出沒有模式的選項,則默認為 _zebra_ 。模式必須是以下之一: ``` no ``` 移動的線條不會突出顯示。 ``` default ``` 是`zebra`的同義詞。這可能會在未來轉變為更明智的模式。 ``` plain ``` 在一個位置添加并在另一個位置刪除的任何行都將使用 _color.diff.newMoved_ 進行著色。類似地, _color.diff.oldMoved_ 將用于在diff中的其他位置添加的已刪除行。此模式選擇任何已移動的行,但在檢查中確定是否在沒有置換的情況下移動了代碼塊時,它不是很有用。 ``` blocks ``` 貪婪地檢測至少20個字母數字字符的移動文本塊。使用 _color.diff。{old,new} Moved_ 顏色繪制檢測到的塊。相鄰的街區不能分開。 ``` zebra ``` 在_塊_模式中檢測移動文本塊。使用 _color.diff。{old,new} Moved_ 顏色或 _color.diff。{old,new} MovedAlternative_ 繪制塊。兩種顏色之間的變化表示檢測到新的塊。 ``` dimmed-zebra ``` 與 _zebra_ 類似,但執行了移動代碼的無趣部分的額外調暗。兩個相鄰街區的邊界線被認為是有趣的,其余的是無趣的。 `dimmed_zebra`是不推薦使用的同義詞。 ``` --no-color-moved ``` 關閉移動檢測。這可用于覆蓋配置設置。它與`--color-moved=no`相同。 ``` --color-moved-ws=<modes> ``` 這將配置在執行`--color-moved`的移動檢測時如何忽略空白。這些模式可以以逗號分隔的列表給出: ``` no ``` 執行移動檢測時不要忽略空格。 ``` ignore-space-at-eol ``` 忽略EOL中的空白更改。 ``` ignore-space-change ``` 忽略空格量的變化。這會忽略行尾的空格,并將一個或多個空白字符的所有其他序列視為等效。 ``` ignore-all-space ``` 比較線條時忽略空格。即使一行有空格而另一行沒有空格,這也會忽略差異。 ``` allow-indentation-change ``` 最初忽略移動檢測中的任何空格,然后如果每行的空白變化相同,則僅將移動的代碼塊分組到塊中。這與其他模式不兼容。 ``` --no-color-moved-ws ``` 執行移動檢測時不要忽略空格。這可用于覆蓋配置設置。它與`--color-moved-ws=no`相同。 ``` --word-diff[=<mode>] ``` 使用&lt; mode&gt;顯示單詞diff。劃定改變的單詞。默認情況下,單詞由空格分隔;見下面的`--word-diff-regex`。 &lt;模式&gt;默認為 _plain_ ,必須是以下之一: ``` color ``` 僅使用顏色突出顯示更改的單詞。意味著`--color`。 ``` plain ``` 將單詞顯示為`[-removed-]`和`{+added+}`。如果它們出現在輸入中,則不會嘗試轉義分隔符,因此輸出可能不明確。 ``` porcelain ``` 使用特殊的基于行的格式用于腳本使用。添加/刪除/未更改的運行以通常的統一diff格式打印,從行開頭的`+` / `-` /``字符開始并延伸到行尾。輸入中的換行符由其自身行上的波浪號`~`表示。 ``` none ``` 再次禁用字差異。 請注意,盡管第一個模式的名稱,但如果啟用了顏色,則使用顏色突出顯示所有模式中已更改的部分。 ``` --word-diff-regex=<regex> ``` 使用&lt; regex&gt;決定一個單詞是什么,而不是將非空格的運行視為一個單詞。除非已經啟用,否則還暗示`--word-diff`。 &lt; regex&gt;的每個非重疊匹配被認為是一個詞。這些匹配之間的任何內容都被視為空格并被忽略(!)以查找差異。您可能希望將`|[^[:space:]]`附加到正則表達式,以確保它匹配所有非空白字符。包含換行符的匹配項會在換行符處以靜默方式截斷(!)。 例如,`--word-diff-regex=.`會將每個字符視為一個單詞,并相應地逐個字符地顯示差異。 正則表達式也可以通過diff驅動程序或配置選項設置,參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 或 [git-config [1]](https://git-scm.com/docs/git-config) 。明確地覆蓋任何差異驅動程序或配置設置。 Diff驅動程序覆蓋配置設置。 ``` --color-words[=<regex>] ``` 相當于`--word-diff=color`加(如果指定了正則表達式)`--word-diff-regex=&lt;regex&gt;`。 ``` --no-renames ``` 關閉重命名檢測,即使配置文件提供默認值也是如此。 ``` --check ``` 如果更改引入沖突標記或空白錯誤,則發出警告。什么被認為是空白錯誤由`core.whitespace`配置控制。默認情況下,尾隨空格(包括僅由空格組成的行)和在行的初始縮進內緊跟著制表符的空格字符被視為空格錯誤。如果發現問題,則退出非零狀態。與--exit-code不兼容。 ``` --ws-error-highlight=<kind> ``` 突出顯示差異的`context`,`old`或`new`行中的空白錯誤。多個值用逗號分隔,`none`重置先前的值,`default`將列表重置為`new`,`all`是`old,new,context`的簡寫。如果未指定此選項,并且未設置配置變量`diff.wsErrorHighlight`,則僅突出顯示`new`行中的空白錯誤。空白錯誤用`color.diff.whitespace`著色。 ``` --full-index ``` 在生成補丁格式輸出時,在“索引”行上顯示完整的前映像和后映像blob對象名稱,而不是第一個字符。 ``` --binary ``` 除`--full-index`外,還可輸出可用`git-apply`應用的二進制差異。 ``` --abbrev[=<n>] ``` 而不是在diff-raw格式輸出和diff-tree標題行中顯示完整的40字節十六進制對象名稱,而是僅顯示部分前綴。這與上面的`--full-index`選項無關,后者控制diff-patch輸出格式。可以使用`--abbrev=&lt;n&gt;`指定非默認位數。 ``` -B[<n>][/<m>] ``` ``` --break-rewrites[=[<n>][/<m>]] ``` 將完整的重寫更改分為刪除和創建對。這有兩個目的: 它影響了一個更改的方式,相當于一個文件的完全重寫,而不是一系列的刪除和插入混合在一起,只有幾行恰好與文本作為上下文匹配,而是作為單個刪除所有舊的后跟一個單個插入所有新內容,數字`m`控制-B選項的這一方面(默認為60%)。 `-B/70%`指定少于30%的原始文本應保留在結果中,以便Git將其視為完全重寫(即,否則生成的修補程序將是一系列刪除和插入與上下文行混合在一起)。 當與-M一起使用時,完全重寫的文件也被視為重命名的源(通常-M只考慮作為重命名源消失的文件),并且數字`n`控制 - 的這方面 - B選項(默認為50%)。 `-B20%`指定添加和刪除的更改與文件大小的20%或更多相比,有資格被選為可能的重命名源到另一個文件。 ``` -M[<n>] ``` ``` --find-renames[=<n>] ``` 如果生成差異,則檢測并報告每次提交的重命名。對于遍歷歷史記錄時重命名后續文件,請參閱`--follow`。如果指定了`n`,則它是相似性指數的閾值(即與文件大小相比的添加/刪除量)。例如,`-M90%`表示如果超過90%的文件未更改,Git應將刪除/添加對視為重命名。如果沒有`%`符號,則該數字將作為分數讀取,并在其前面加上小數點。即,`-M5`變為0.5,因此與`-M50%`相同。同樣,`-M05`與`-M5%`相同。要將檢測限制為精確重命名,請使用`-M100%`。默認相似性指數為50%。 ``` -C[<n>] ``` ``` --find-copies[=<n>] ``` 檢測副本以及重命名。另見`--find-copies-harder`。如果指定了`n`,則其含義與`-M&lt;n&gt;`的含義相同。 ``` --find-copies-harder ``` 出于性能原因,默認情況下,僅當在同一變更集中修改了副本的原始文件時,`-C`選項才會查找副本。此標志使命令檢查未修改的文件作為副本源的候選者。對于大型項目來說,這是一項非常昂貴的操作,因此請謹慎使用。提供多個`-C`選項具有相同的效果。 ``` -D ``` ``` --irreversible-delete ``` 省略刪除的原像,即只打印標題而不打印原像和`/dev/null`之間的差異。得到的貼片不適用于`patch`或`git apply`;這僅適用于那些希望在更改后專注于審閱文本的人。此外,輸出顯然缺乏足夠的信息來反向應用這樣的補丁,甚至手動,因此選項的名稱。 與`-B`一起使用時,也省略刪除/創建對的刪除部分中的原像。 ``` -l<num> ``` `-M`和`-C`選項需要O(n ^ 2)處理時間,其中n是潛在的重命名/復制目標的數量。如果重命名/復制目標的數量超過指定的數量,此選項可防止重命名/復制檢測運行。 ``` --diff-filter=[(A|C|D|M|R|T|U|X|B)…?[*]] ``` 僅選擇已添加(`A`),復制(`C`),已刪除(`D`),已修改(`M`),已重命名(`R`)的文件,其類型(即常規文件,符號鏈接,子模塊,...)更改(`T`),未合并(`U`),未知(`X`),或已配對破碎(`B`)。可以使用過濾器字符的任何組合(包括無)。當`*`(全部或全部)添加到組合中時,如果有任何文件與比較中的其他條件匹配,則選擇所有路徑;如果沒有與其他條件匹配的文件,則不會選擇任何內容。 此外,這些大寫字母可以降級為排除。例如。 `--diff-filter=ad`排除添加和刪除的路徑。 請注意,并非所有差異都可以包含所有類型。例如,從索引到工作樹的差異永遠不會有添加條目(因為差異中包含的路徑集受限于索引中的內容)。同樣,如果禁用了對這些類型的檢測,則無法顯示復制和重命名的條目。 ``` -S<string> ``` 查找改變文件中指定字符串出現次數(即添加/刪除)的差異。用于腳本編寫者的使用。 當你正在尋找一個確切的代碼塊(比如一個結構體)時,它很有用,并且想要知道該塊首次出現以來的歷史:迭代地使用該特征將原始圖像中的有趣塊反饋回`-S`,繼續前進,直到你獲得該塊的第一個版本。 也搜索二進制文件。 ``` -G<regex> ``` 查找補丁文本包含與&lt; regex&gt;匹配的添加/刪除行的差異。 為了說明`-S&lt;regex&gt; --pickaxe-regex`和`-G&lt;regex&gt;`之間的區別,請考慮在同一文件中使用以下diff進行提交: ``` + return !regexec(regexp, two->ptr, 1, &regmatch, 0); ... - hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0); ``` 雖然`git log -G"regexec\(regexp"`將顯示此提交,但`git log -S"regexec\(regexp" --pickaxe-regex`不會(因為該字符串的出現次數沒有改變)。 除非提供`--text`,否則將忽略沒有textconv過濾器的二進制文件的補丁。 有關詳細信息,請參閱 [gitdiffcore [7]](https://git-scm.com/docs/gitdiffcore) 中的 _pickaxe_ 條目。 ``` --find-object=<object-id> ``` 查找更改指定對象出現次數的差異。與`-S`類似,只是參數的不同之處在于它不搜索特定的字符串,而是搜索特定的對象id。 該對象可以是blob或子模塊提交。它意味著`git-log`中的`-t`選項也可以找到樹。 ``` --pickaxe-all ``` 當`-S`或`-G`找到更改時,顯示該更改集中的所有更改,而不僅僅是包含&lt; string&gt;中更改的文件。 ``` --pickaxe-regex ``` 對待&lt; string&gt;賦予`-S`作為擴展的POSIX正則表達式以匹配。 ``` -O<orderfile> ``` 控制文件在輸出中的顯示順序。這會覆蓋`diff.orderFile`配置變量(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。要取消`diff.orderFile`,請使用`-O/dev/null`。 輸出順序由&lt; orderfile&gt;中的glob模式的順序決定。首先輸出所有與第一個模式匹配的路徑名的文件,然后輸出所有與第二個模式(但不是第一個模式)匹配的路徑名的文件,依此類推。路徑名與任何模式都不匹配的所有文件都是最后輸出的,就好像文件末尾有一個隱式匹配所有模式一樣。如果多個路徑名具有相同的等級(它們匹配相同的模式但沒有早期模式),則它們相對于彼此的輸出順序是正常順序。 &lt; orderfile&gt;解析如下: * 空行被忽略,因此可以將它們用作分隔符以提高可讀性。 * 以哈希(“`#`”)開頭的行將被忽略,因此它們可用于注釋。如果以散列開頭,則將反斜杠(“`\`”)添加到模式的開頭。 * 每個其他行包含一個模式。 模式與沒有FNM_PATHNAME標志的fnmatch(3)使用的模式具有相同的語法和語義,但如果刪除任意數量的最終路徑名組件與模式匹配,則路徑名也匹配模式。例如,模式“`foo*bar`”匹配“`fooasdfbar`”和“`foo/bar/baz/asdf`”而不匹配“`foobarx`”。 ``` -R ``` 交換兩個輸入;也就是說,顯示從索引或磁盤文件到樹內容的差異。 ``` --relative[=<path>] ``` 從項目的子目錄運行時,可以告訴它排除目錄外的更改并使用此選項顯示相對于它的路徑名。當您不在子目錄中時(例如,在裸存儲庫中),您可以通過給出&lt; path&gt;來命名哪個子目錄以使輸出相對。作為一個論點。 ``` -a ``` ``` --text ``` 將所有文件視為文本。 ``` --ignore-cr-at-eol ``` 進行比較時,忽略行尾的回車。 ``` --ignore-space-at-eol ``` 忽略EOL中的空白更改。 ``` -b ``` ``` --ignore-space-change ``` 忽略空格量的變化。這會忽略行尾的空格,并將一個或多個空白字符的所有其他序列視為等效。 ``` -w ``` ``` --ignore-all-space ``` 比較線條時忽略空格。即使一行有空格而另一行沒有空格,這也會忽略差異。 ``` --ignore-blank-lines ``` 忽略其行全部為空的更改。 ``` --inter-hunk-context=<lines> ``` 顯示差異之間的上下文,直到指定的行數,從而融合彼此接近的帥哥。如果未設置配置選項,則默認為`diff.interHunkContext`或0。 ``` -W ``` ``` --function-context ``` 顯示整個周圍的變化功能。 ``` --ext-diff ``` 允許執行外部diff助手。如果使用 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 設置外部差異驅動程序,則需要將此選項與 [git-log [1]](https://git-scm.com/docs/git-log) 和朋友一起使用。 ``` --no-ext-diff ``` 禁止外部差異驅動程序。 ``` --textconv ``` ``` --no-textconv ``` 在比較二進制文件時允許(或禁止)外部文本轉換過濾器運行。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。由于textconv過濾器通常是單向轉換,因此生成的差異適合人類使用,但無法應用。因此,默認情況下,textconv過濾器僅針對 [git-diff [1]](https://git-scm.com/docs/git-diff) 和 [git-log [1]](https://git-scm.com/docs/git-log) 啟用,但不適用于 [git-format-patch [ 1]](https://git-scm.com/docs/git-format-patch) 或差異管道命令。 ``` --ignore-submodules[=<when>] ``` 忽略差異生成中子模塊的更改。 &lt;當&gt;可以是“none”,“untracked”,“dirty”或“all”,這是默認值。使用“none”時,如果子模塊包含未跟蹤或修改的文件,或者其HEAD與超級項目中記錄的提交不同,則可以使用“無”來修改子模塊,并可用于覆蓋[中 _ignore_ 選項的任何設置git-config [1]](https://git-scm.com/docs/git-config) 或 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 。當使用“未跟蹤”時,如果子模塊僅包含未跟蹤的內容(但仍會掃描修改的內容),則子模塊不會被視為臟。使用“臟”忽略對子模塊工作樹的所有更改,僅顯示存儲在超級項目中的提交的更改(這是1.7.0之前的行為)。使用“all”隱藏子模塊的所有更改。 ``` --src-prefix=<prefix> ``` 顯示給定的源前綴而不是“a /”。 ``` --dst-prefix=<prefix> ``` 顯示給定的目標前綴而不是“b /”。 ``` --no-prefix ``` 不顯示任何源或目標前綴。 ``` --line-prefix=<prefix> ``` 為每行輸出預先附加前綴。 ``` --ita-invisible-in-index ``` 默認情況下,“git add -N”添加的條目在“git diff”中顯示為現有空文件,在“git diff --cached”中顯示為新文件。此選項使條目在“git diff”中顯示為新文件,在“git diff --cached”中不存在。可以使用`--ita-visible-in-index`恢復此選項。這兩個選項都是實驗性的,將來可以刪除。 有關這些常用選項的更詳細說明,另請參閱 [gitdiffcore [7]](https://git-scm.com/docs/gitdiffcore) 。 ## 使用-p生成補丁 當“git-diff-index”,“git-diff-tree”或“git-diff-files”使用`-p`選項運行時,“git diff”不帶`--raw`選項或“git log”使用“-p”選項,它們不會產生上述輸出;相反,他們生成一個補丁文件。您可以通過`GIT_EXTERNAL_DIFF`和`GIT_DIFF_OPTS`環境變量自定義此類修補程序的創建。 -p選項產生的內容與傳統的diff格式略有不同: 1. 它前面有一個“git diff”標題,如下所示: ``` diff --git a/file1 b/file2 ``` 除非涉及重命名/復制,否則`a/`和`b/`文件名是相同的。特別是,即使是創建或刪除,`/dev/null`也是_而不是_來代替`a/`或`b/`文件名。 當涉及重命名/復制時,`file1`和`file2`分別顯示重命名/復制的源文件的名稱和重命名/復制的文件的名稱。 2. 它后跟一個或多個擴展標題行: ``` old mode &lt;mode&gt; new mode &lt;mode&gt; deleted file mode &lt;mode&gt; new file mode &lt;mode&gt; copy from &lt;path&gt; copy to &lt;path&gt; rename from &lt;path&gt; rename to &lt;path&gt; similarity index &lt;number&gt; dissimilarity index &lt;number&gt; index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt; ``` 文件模式打印為6位八進制數,包括文件類型和文件權限位。 擴展標頭中的路徑名不包括`a/`和`b/`前綴。 相似性指數是未更改行的百分比,相異性指數是更改行的百分比。它是一個向下舍入的整數,后跟一個百分號。因此,100%的相似性索引值保留用于兩個相等的文件,而100%的相異性意味著舊文件中的任何行都不會成為新文件。 索引行包括更改前后的SHA-1校驗和。 &lt;模式&gt;如果文件模式沒有改變,則包括在內;否則,單獨的行表示舊模式和新模式。 3. 具有“異常”字符的路徑名被引用,如配置變量`core.quotePath`所述(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。 4. 輸出中的所有`file1`文件在提交之前引用文件,并且所有`file2`文件在提交之后引用文件。將每個更改順序應用于每個文件是不正確的。例如,此補丁將交換a和b: ``` diff --git a/a b/b rename from a rename to b diff --git a/b b/a rename from b rename to a ``` ## 組合差異格式 在顯示合并時,任何差異生成命令都可以使用`-c`或`--cc`選項生成_組合差異_。當顯示與 [git-diff [1]](https://git-scm.com/docs/git-diff) 或 [git-show [1]](https://git-scm.com/docs/git-show) 的合并時,這是默認格式。另請注意,您可以為這些命令中的任何一個提供`-m`選項,以強制使用合并的各個父項生成差異。 _組合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; } - static void describe(char *arg) -static void describe(struct commit *cmit, int last_one) ++static void describe(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. 它前面有一個“git diff”標題,看起來像這樣(當使用`-c`選項時): ``` diff --combined file ``` 或者像這樣(當使用`--cc`選項時): ``` diff --cc file ``` 2. 它后跟一個或多個擴展標題行(此示例顯示了與兩個父項的合并): ``` index &lt;hash&gt;,&lt;hash&gt;..&lt;hash&gt; mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt; new file mode &lt;mode&gt; deleted file mode &lt;mode&gt;,&lt;mode&gt; ``` 只有當&lt; mode&gt;中的至少一個出現時,`mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt;`行才會出現。與其他人不同。具有關于檢測到的內容移動(重命名和復制檢測)的信息的擴展標題被設計為與兩個&lt; tree-ish&gt;的差異一起工作。并且不會被組合diff格式使用。 3. 接下來是兩行的文件/文件頭 ``` --- a/file +++ b/file ``` 與傳統_統一_ diff格式的雙行標題類似,`/dev/null`用于表示創建或刪除的文件。 4. 修改了塊頭格式以防止人們意外地將其饋送到`patch -p1`。創建組合差異格式用于審查合并提交更改,并不適用于應用。此更改類似于擴展_索引_標頭中的更改: ``` @@@ &lt;from-file-range&gt; &lt;from-file-range&gt; &lt;to-file-range&gt; @@@ ``` 組合diff格式的塊頭中有(父項數+ 1)`@`個字符。 與傳統的_統一_差異格式不同,后者顯示兩個文件A和B,其中一列具有`-`(減去 - 出現在A中但在B中刪除),`+`(加 - 缺少A但是添加到B)或`" "`(空格 - 未更改)前綴,此格式將兩個或多個文件file1,file2,...與一個文件X進行比較,并顯示X與每個文件N的不同之處。每個fileN的一列被添加到輸出行之前,以指示X的行與它的不同之處。 N列中的`-`字符表示該行出現在fileN中,但它不會出現在結果中。列N中的`+`字符表示該行出現在結果中,而fileN沒有該行(換句話說,從該父項的角度添加了該行)。 在上面的示例輸出中,函數簽名已從兩個文件中更改(因此,file1和file2中的兩個`-`刪除加上`++`表示添加的一行未出現在file1或file2中)。另外八行與file1相同,但不出現在file2中(因此以`+`為前綴)。 當由`git diff-tree -c`顯示時,它將合并提交的父項與合并結果進行比較(即file1..fileN是父項)。當由`git diff-files -c`顯示時,它將兩個未解析的合并父項與工作樹文件進行比較(即file1是階段2又名“我們的版本”,file2是階段3又名“他們的版本”)。 ## 例子 ``` git show v1.0.0 ``` 顯示標簽`v1.0.0`以及標簽指向的對象。 ``` git show v1.0.0^{tree} ``` 顯示標簽`v1.0.0`指向的樹。 ``` git show -s --format=%s v1.0.0^{commit} ``` 顯示標記`v1.0.0`指向的提交主題。 ``` git show next~10:Documentation/README ``` 顯示文件`Documentation/README`的內容,因為它們是分支`next`的第10次最后提交時的當前內容。 ``` git show master:Makefile master:t/Makefile ``` 在分支`master`的頭部連接所述Makefile的內容。 ## 討論 Git在某種程度上是字符編碼不可知的。 * blob對象的內容是未解釋的字節序列。核心級別沒有編碼轉換。 * 路徑名以UTF-8規范化形式C編碼。這適用于樹對象,索引文件,ref名稱,以及命令行參數,環境變量和配置文件中的路徑名(`.git/config`(參見 [git) -config [1]](https://git-scm.com/docs/git-config) ), [gitignore [5]](https://git-scm.com/docs/gitignore) , [gitattributes [5]](https://git-scm.com/docs/gitattributes) 和 [gitmodules [5]](https://git-scm.com/docs/gitmodules) )。 請注意,核心級別的Git僅將路徑名稱視為非NUL字節序列,沒有路徑名稱編碼轉換(Mac和Windows除外)。因此,即使在使用傳統擴展ASCII編碼的平臺和文件系統上,使用非ASCII路徑名也會起作用。但是,在此類系統上創建的存儲庫將無法在基于UTF-8的系統(例如Linux,Mac,Windows)上正常工作,反之亦然。此外,許多基于Git的工具只是假設路徑名為UTF-8,并且無法正確顯示其他編碼。 * 提交日志消息通常以UTF-8編碼,但也支持其他擴展ASCII編碼。這包括ISO-8859-x,CP125x和許多其他,但_不是_ UTF-16/32,EBCDIC和CJK多字節編碼(GBK,Shift-JIS,Big5,EUC-x,CP9xx等。 )。 雖然我們鼓勵提交日志消息以UTF-8編碼,但核心和Git瓷器都不是為了強制項目使用UTF-8。如果特定項目的所有參與者發現使用遺留編碼更方便,Git不會禁止它。但是,有一些事情需要牢記。 1. _git commit_ 和 _git commit-tree_ 發出警告,如果提供給它的提交日志消息看起來不像有效的UTF-8字符串,除非你明確說你的項目使用了遺產編碼。說這個的方法是在`.git/config`文件中使用i18n.commitencoding,如下所示: ``` [i18n] commitEncoding = ISO-8859-1 ``` 使用上述設置創建的提交對象在其`encoding`標題中記錄`i18n.commitEncoding`的值。這是為了幫助其他人以后再看。缺少此標頭意味著提交日志消息以UTF-8編碼。 2. _git log_ , _git show_ , _git blame_ 和朋友們查看提交對象的`encoding`頭,并嘗試將日志消息重新編碼為除非另有說明,否則為UTF-8。您可以使用`.git/config`文件中的`i18n.logOutputEncoding`指定所需的輸出編碼,如下所示: ``` [i18n] logOutputEncoding = ISO-8859-1 ``` 如果您沒有此配置變量,則使用`i18n.commitEncoding`的值。 請注意,我們故意選擇在提交以在提交對象級別強制使用UTF-8時不重新編寫提交日志消息,因為重新編碼為UTF-8不一定是可逆操作。 ## GIT 部分 [git [1]](https://git-scm.com/docs/git) 套件
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看