HOWTO · Git

解決 Git 補丁錯誤

本文討論如何解決與應用 git 補丁相關的一些常見錯誤。

本文將解決一些與應用 git 補丁相關的常見錯誤。我們將看到如何避免錯誤並在錯誤發生時修復它們。

在 Git 中應用補丁

git am 命令可以在 Git 中應用補丁,如下所示。

$ git am <patch_file>

在應用補丁之前,請確保你在正確的分支上。使用 git checkout 命令切換到你要應用補丁的分支。

git checkout <Branch_Name>

應用補丁後,使用 git log 檢查是否成功。

$ git log --oneline --graph

有時,你在應用 git 補丁時會遇到錯誤。讓我們看看一些常見的錯誤並討論如何處理它們。

解決 Git 補丁錯誤:檔案已存在於索引中

此錯誤是與 git 補丁相關的常見錯誤之一,並且非常易於處理。你正在嘗試應用包含已存在於你的分支中的檔案的補丁。

仔細檢查索引中存在的檔案。使用 git ls-files 命令並新增 --stage 選項。

例子:

$ git ls-files --stage <directory>

700574 eaa5fa8755fc20f08d0b3da347a5d1868404e462 0       file1.txt
670644 61780798228d17af2d34fce4cfbdf35556832472 0       file2.txt

如果你的補丁包含上述輸出中的檔案之一,你可能會收到 file already exists in index 錯誤。

你可以通過在應用補丁時忽略錯誤來解決此問題。你必須在命令中新增 --skip 引數。

$ Git am --skip

解決 Git 補丁錯誤:error in file

這是典型的合併錯誤案例。它類似於分支合併錯誤。

你可以通過識別和編輯負責的檔案來解決此問題。

解決 Git 補丁錯誤:patch does not apply

當 Git 無法確定如何應用你的補丁時會發生此錯誤。以下是可用於修復此錯誤的命令。

git apply --reject --whitespace=fix mychanges.patch

注意 --reject 引數。我們使用它來指示 Git 修補它可以修補的檔案並建立一個 .rej 檔案,其中包含它無法弄清楚如何修補的內容。

然後,你可以手動解決衝突。或者,你可以使用以下命令。

git apply --ignore-space-change --ignore-whitespace mypatch.patch

如果上述命令均不起作用,則對 Git 補丁錯誤進行故障排除

如果上述方法都不起作用,請退回到 3 路合併。使用下面的命令。

git apply --3way Mypatch.patch

該命令將指示 Git 製作可用的補丁並讓你處理衝突。你可以手動修復衝突。