?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
git-apply - 將補(bǔ)丁應(yīng)用于文件和/或索引
git apply [--stat] [--numstat] [--summary] [--check] [--index] [--3way] [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse] [--allow-binary-replacement | --binary] [--reject] [-z] [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached] [--ignore-space-change | --ignore-whitespace] [--whitespace=(nowarn|warn|fix|error|error-all)] [--exclude=<path>] [--include=<path>] [--directory=<root>] [--verbose] [--unsafe-paths] [<patch>…]
讀取提供的差異輸出(即“一個(gè)補(bǔ)丁”)并將其應(yīng)用于文件。從存儲(chǔ)庫(kù)中的子目錄運(yùn)行時(shí),目錄外的修補(bǔ)路徑將被忽略。使用該--index
選項(xiàng),修補(bǔ)程序也應(yīng)用于索引,并使用該--cached
選項(xiàng)將修補(bǔ)程序應(yīng)用于索引。如果沒(méi)有這些選項(xiàng),該命令僅將修補(bǔ)程序應(yīng)用于文件,并且不要求它們位于 Git 存儲(chǔ)庫(kù)中。
此命令應(yīng)用修補(bǔ)程序,但不創(chuàng)建提交。使用 git-am [1] 創(chuàng)建 git-format-patch [1] 生成的補(bǔ)丁和/或通過(guò)電子郵件接收的補(bǔ)丁。
<patch>…
從中讀取補(bǔ)丁的文件。-
可以用來(lái)從標(biāo)準(zhǔn)輸入中讀取。
--stat
輸出 diffstat 代替輸入補(bǔ)丁。關(guān)閉“適用”。
--numstat
--stat
與之類(lèi)似,但顯示十進(jìn)制表示法中添加和刪除的行數(shù)以及不帶縮寫(xiě)的路徑名,以使其更加機(jī)器友好。對(duì)于二進(jìn)制文件,輸出兩個(gè)-
而不是說(shuō)0 0
。關(guān)閉“適用”。
--summary
輸出從 git diff 擴(kuò)展頭獲取的信息(例如創(chuàng)建,重命名和模式更改)的精簡(jiǎn)摘要,而不是應(yīng)用該修補(bǔ)程序。關(guān)閉“適用”。
--check
而不是應(yīng)用修補(bǔ)程序,查看修補(bǔ)程序是否適用于當(dāng)前工作樹(shù)和/或索引文件并檢測(cè)錯(cuò)誤。關(guān)閉“適用”。
--index
當(dāng)--check
生效或應(yīng)用修補(bǔ)程序(當(dāng)沒(méi)有任何禁用修補(bǔ)程序的選項(xiàng)時(shí),這是默認(rèn)設(shè)置)時(shí),請(qǐng)確保修補(bǔ)程序適用于當(dāng)前索引文件記錄的內(nèi)容。如果要在工作樹(shù)中修補(bǔ)的文件不是最新的,則會(huì)將其標(biāo)記為錯(cuò)誤。該標(biāo)志也會(huì)導(dǎo)致索引文件被更新。
--cached
在不接觸工作樹(shù)的情況下應(yīng)用補(bǔ)丁。取而代之的是緩存數(shù)據(jù)時(shí)應(yīng)用補(bǔ)丁,并將結(jié)果存儲(chǔ)在索引中,而不使用工作樹(shù)。這暗示--index
。
-3 --3way
如果修補(bǔ)程序不能干凈地應(yīng)用,如果修補(bǔ)程序記錄它應(yīng)該應(yīng)用的斑點(diǎn)的標(biāo)識(shí),則回退到3路合并,并且我們?cè)诒镜乜梢允褂眠@些斑點(diǎn),可能會(huì)在工作樹(shù)中的文件中留下沖突標(biāo)記供用戶(hù)解決。此選項(xiàng)隱含--index
期權(quán),并與不兼容--reject
和--cached
選項(xiàng)。
--build-fake-ancestor=<file>
為每個(gè) blob git diff
嵌入更新的輸出index information
以幫助識(shí)別該修補(bǔ)程序適用的原始版本。當(dāng)給出這個(gè)標(biāo)志,并且如果原始版本的 blob 在本地可用,則建立包含這些 blob 的臨時(shí)索引。
遇到純模式更改(沒(méi)有索引信息)時(shí),將從當(dāng)前索引讀取信息。
-R --reverse
反向應(yīng)用補(bǔ)丁。
--reject
對(duì)于原子性,git apply
默認(rèn)情況下會(huì)失敗整個(gè)修補(bǔ)程序,并且在某些區(qū)塊不適用時(shí)不會(huì)觸及工作樹(shù)。該選項(xiàng)使它應(yīng)用可用的補(bǔ)丁部分,并將被拒絕的宏保留在對(duì)應(yīng)的 * .rej 文件中。
-z
當(dāng)--numstat
給出時(shí),請(qǐng)勿使用路徑名,但使用 NUL 終止的機(jī)器可讀格式。
如果沒(méi)有這個(gè)選項(xiàng),帶有“不尋?!弊址穆窂矫麑凑张渲米兞康恼f(shuō)明引用core.quotePath
(請(qǐng)參閱 git-config [1] )。
-p<n>
從傳統(tǒng)差異路徑中刪除 <n> 引導(dǎo)斜杠。默認(rèn)值是1。
-C<n>
確保每次更改之前和之后至少有 <n> 行周?chē)h(huán)境匹配。當(dāng)存在較少的周?chē)h(huán)境線(xiàn)時(shí),它們都必須匹配。默認(rèn)情況下,不會(huì)忽略上下文。
--unidiff-zero
默認(rèn)情況下,git apply
預(yù)計(jì)所應(yīng)用的修補(bǔ)程序是至少包含一行上下文的統(tǒng)一差異。這提供了良好的安全措施,但在應(yīng)用使用生成的差異時(shí)發(fā)生故障--unified=0
。繞過(guò)這些檢查使用--unidiff-zero
。
請(qǐng)注意,由于上述原因,不鼓勵(lì)使用上下文無(wú)關(guān)的修補(bǔ)程序。
--apply
如果您使用apply
上面標(biāo)記為“關(guān)閉”的任何選項(xiàng),則git apply
讀取并輸出所請(qǐng)求的信息,而不實(shí)際應(yīng)用該補(bǔ)丁。在這些標(biāo)志之后給這個(gè)標(biāo)志也應(yīng)用補(bǔ)丁。
--no-add
應(yīng)用修補(bǔ)程序時(shí),忽略修補(bǔ)程序添加的內(nèi)容。這可以用來(lái)提取兩個(gè)文件之間的公共部分,方法是首先diff
在這兩個(gè)文件上運(yùn)行,并使用此選項(xiàng)應(yīng)用結(jié)果,該選項(xiàng)將應(yīng)用刪除部分,但不應(yīng)用添加部分。
--allow-binary-replacement --binary
從歷史上看,我們不允許在未經(jīng)用戶(hù)明確許可的情況下應(yīng)用二進(jìn)制補(bǔ)丁,并且此標(biāo)志是實(shí)現(xiàn)此目的的方式。目前我們總是允許二進(jìn)制補(bǔ)丁程序應(yīng)用程序,所以這是一個(gè)無(wú)操作。
--exclude=<path-pattern>
不要將更改應(yīng)用于與給定路徑模式匹配的文件。這在導(dǎo)入補(bǔ)丁集時(shí)很有用,您想要排除某些文件或目錄。
--include=<path-pattern>
將更改應(yīng)用于與給定路徑模式匹配的文件。這在導(dǎo)入補(bǔ)丁集時(shí)很有用,您想要在其中包含某些文件或目錄。
在使用模式--exclude
和--include
模式時(shí),將按照它們?cè)诿钚猩铣霈F(xiàn)的順序進(jìn)行檢查,并且第一個(gè)匹配將確定是否使用每個(gè)路徑的修補(bǔ)程序。缺省情況下,如果命令行中沒(méi)有包含模式,則缺省使用不匹配任何包含/排除模式的路徑補(bǔ)丁,如果有任何包含模式則忽略該補(bǔ)丁。
--ignore-space-change --ignore-whitespace
應(yīng)用修補(bǔ)程序時(shí),如果需要,請(qǐng)忽略上下文行中空白的更改。上下文行將保留它們的空白,并且不管--whitespace
選項(xiàng)的值如何,它們都不會(huì)進(jìn)行空白修復(fù)。雖然新的線(xiàn)路仍然是固定的。
--whitespace=<action>
應(yīng)用修補(bǔ)程序時(shí),檢測(cè)具有空白錯(cuò)誤的新行或修改過(guò)的行。認(rèn)為空白錯(cuò)誤是由core.whitespace
配置控制的。默認(rèn)情況下,尾隨空格(包括單獨(dú)由空格組成的行)和空格字符(緊跟該行的初始縮進(jìn)內(nèi)的制表符后面的空格字符)將被視為空白錯(cuò)誤。
默認(rèn)情況下,該命令輸出警告消息但應(yīng)用修補(bǔ)程序。當(dāng)git-apply
用于統(tǒng)計(jì)而不應(yīng)用補(bǔ)丁時(shí),它默認(rèn)為nowarn
。
您可以使用不同的<action>
值來(lái)控制此行為:
nowarn
關(guān)閉后面的空格警告。
warn
輸出一些此類(lèi)錯(cuò)誤的警告,但按原樣應(yīng)用該補(bǔ)?。J(rèn))。
fix
輸出一些此類(lèi)錯(cuò)誤的警告,并在修復(fù)它們之后應(yīng)用修補(bǔ)程序(strip
是同義詞---該工具僅用于考慮尾部空白字符作為錯(cuò)誤,并且修復(fù)涉及stripping
它們,但現(xiàn)代 Gits 做得更多)。
error
輸出一些此類(lèi)錯(cuò)誤的警告,并拒絕應(yīng)用該修補(bǔ)程序。
error-all
類(lèi)似error
但顯示所有錯(cuò)誤。
--inaccurate-eof
在某些情況下,某些版本diff
不能在文件末尾正確檢測(cè)到缺失的新行。因此,這些程序創(chuàng)建的補(bǔ)丁diff
不會(huì)正確記錄不完整的行。此選項(xiàng)通過(guò)解決此錯(cuò)誤來(lái)增加對(duì)應(yīng)用此類(lèi)修補(bǔ)程序的支持。
-v --verbose
將進(jìn)展報(bào)告給 stderr 。默認(rèn)情況下,只會(huì)打印有關(guān)當(dāng)前正在應(yīng)用的修補(bǔ)程序的消息。該選項(xiàng)會(huì)導(dǎo)致報(bào)告其他信息。
--recount
不要相信 hunk headers 中的行數(shù),但通過(guò)檢查補(bǔ)丁來(lái)推斷它們(例如,在編輯補(bǔ)丁而不適當(dāng)調(diào)整 hunk headers 之后)。
--directory=<root>
將 <root> 加入所有文件名。如果還傳遞了“-p”參數(shù),則在應(yīng)用新根之前應(yīng)用該參數(shù)。
例如,談到更新補(bǔ)丁a/git-gui.sh
到b/git-gui.sh
可以應(yīng)用到文件中的工作樹(shù)modules/git-gui/git-gui.sh
運(yùn)行git apply --directory=modules/git-gui
。
--unsafe-paths
默認(rèn)情況下,影響工作區(qū)域以外的補(bǔ)?。?Git 控制的工作樹(shù)或當(dāng) “git apply” 用作 GNU 補(bǔ)丁的替代品時(shí)的當(dāng)前工作目錄)被拒絕為錯(cuò)誤(或惡作?。?。
當(dāng)git apply
用作“更好的 GNU 補(bǔ)丁”時(shí),用戶(hù)可以通過(guò)--unsafe-paths
選項(xiàng)來(lái)覆蓋此安全檢查。此選項(xiàng)在使用--index
或--cached
不使用時(shí)無(wú)效。
apply.ignoreWhitespace
設(shè)置為change
如果您想要默認(rèn)情況下忽略空白的更改。設(shè)置為以下之一:否,無(wú),從不,如果希望空格中的更改變得顯著,則為false。
apply.whitespace
當(dāng)沒(méi)有--whitespace
從命令行給出標(biāo)志時(shí),這個(gè)配置項(xiàng)被用作默認(rèn)值。
如果修補(bǔ)程序包含對(duì)子模塊的任何更改,則按git apply
如下方式處理這些更改。
如果--index
指定(明確或隱含地),則子模塊提交必須完全匹配要應(yīng)用的修補(bǔ)程序的索引。如果有任何子模塊被檢出,則這些檢出完全被忽略,即它們不需要是最新的或清潔的,并且它們不被更新。
如果--index
未指定,則補(bǔ)丁中的子模塊落實(shí)將被忽略,只會(huì)檢查是否存在相應(yīng)的子目錄,并且(如果可能)更新。