如何在git存储库中使用git diff生成的git apply应用补丁?

时间:2019-11-13 08:31:34

标签: windows git git-bash git-diff git-apply

我们正在使用git存储库。存储库中有一个带有外部依赖项的子目录dependencies/(例如.c.h文件)。该子目录不受源代码控制(在.gitignore中列出)。

我想在预构建阶段自动在此子目录中修补.c文件。

要生成补丁,请执行以下步骤:

  1. 将原始文件复制到dependencies/orig/file.c
  2. 修改文件dependencies/file.c
  3. 创建补丁:git diff --no-index ./orig/file.c file.c > mypatch.patch

然后,我手动修改补丁文件,使其不包含./orig子目录(以便ab相同)。接下来,恢复原始file.c并删除./orig

要将修补程序应用于原始文件:

>git apply mypatch.patch --verbose

该命令是静默的。但是,将文件复制到不在git存储库中的目录时,它可以工作:

>git apply mypatch.patch --verbose
Checking patch file.c...
Applied patch file.c cleanly.

补丁文件本身还可以。我不了解这种行为。我找不到一个开关,git apply会忽略我在git仓库中的事实。

使用patch时,它也可以在存储库中使用:

$ patch < mypatch.patch
patching file file.c

不幸的是,我无法在Windows下使用patch,只能在Git bash(使用MinGW)中使用它。

最好的问候, 马赛厄斯

0 个答案:

没有答案