我有一系列 .patch 文件需要应用于某些代码,但我没有这些补丁所基于的原始来源。
我一直在使用“git apply”应用它们,但它没有应用所有更改(这是一个单独的问题)。
如果我所有的 .patch 文件都被压缩成一个大补丁,我会更容易调试“git apply”(或手动应用它们)的问题。不幸的是,我在这个站点上找到的所有答案都假设您可以在补丁所基于的原始源上运行 git 命令,而我不能。
我也知道补丁的顺序。
有没有办法在没有原始来源的情况下将多个补丁文件“压缩”成一个补丁?如果您需要任何额外信息,请告诉我。
这是我认为可以压缩的两个补丁文件的示例:
$ cat patch1.patch
diff --git a/foo.c b/foo.c
index ...
--- a/foo.c
--- b/foo.c
@@ -1,2 +1,3 @@
int main(){
+printf("1");
}
$ cat patch2.patch
diff --git a/foo.c b/foo.c
index ...
--- a/foo.c
--- b/foo.c
@@ -1,3 +1,4 @@
int main(){
printf("1");
+printf("2");
}
$ merge-patches patch1.patch patch2.patch > patch1and2.patch # this command doesn't exist, but I want it to
$ cat patch1and2.patch
diff --git a/foo.c b/foo.c
index ...
--- a/foo.c
--- b/foo.c
@@ -1,2 +1,4 @@
int main(){
+printf("1");
+printf("2");
}