解决 Git 补丁错误

John Wachira 2023年1月30日
  1. 在 Git 中应用补丁
  2. 解决 Git 补丁错误:文件已存在于索引中
  3. 解决 Git 补丁错误:error in file
  4. 解决 Git 补丁错误:patch does not apply
  5. 如果上述命令均不起作用,则对 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 制作可用的补丁并让你处理冲突。你可以手动修复冲突。

作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn