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