解决 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 制作可用的补丁并让你处理冲突。你可以手动修复冲突。