当前位置: 首页 > 知识库问答 >
问题:

如何将Git补丁应用于不同名称和路径的文件?

蓝苗宣
2023-03-14

我有两个存储库。在其中一个中,我对文件./hello.test进行了更改。我提交了更改,并使用git format-patch -1 HEAD从该提交中创建一个补丁。现在,我有了第二个存储库,其中包含一个与hello.test内容相同的文件,但以不同的名称放置在不同的目录中:./blue/red/hi.test。如何将上述补丁应用于 hi.test 文件?我试过 git am --directory='blue/red'


共有3个答案

云德辉
2023-03-14
匿名用户

基于@georgebrock的回答,我使用了以下解决方案:

首先,像往常一样创建补丁文件(例如< code>git format-patch commitA..commitB)。

然后确保您的目标存储库是干净的(应该没有更改或未跟踪的文件),并像这样应用修补程序:

cd second-repo
git am ~/00*.patch

对于每个补丁文件,你会得到一个类似“错误:XYZ不存在于索引中”的错误。现在,您可以手动应用此修补程序文件:

patch --directory blue/red < ~/0001-*.patch
git add -a
git am --continue

您必须为每个修补程序文件执行这三个步骤。

这将保留原始提交消息等。无需任何特殊的< code>git format-patch命令或编辑补丁文件

何海
2023-03-14
匿名用户

有一个简单的解决方案,既不涉及手动补丁编辑,也不涉及外部脚本。

在第一个存储库中(这也可能导出一系列提交,如果您只想选择一个提交,请添加< code>-1标志) :

git format-patch --relative <committish> --stdout > ~/patch

在第二存储库中:

git am --directory blue/red/ ~/patch

另一种解决方案是使用-p,而不是在git格式补丁中使用相对

也可以运行 git format-patch --relative

汪臻
2023-03-14

您可以使用git diff创建修补程序,然后使用patch实用程序应用修补程序,该实用程序允许您指定要将差异应用到的文件

例如:

cd first-repo
git diff HEAD^ -- hello.test > ~/patch_file

cd ../second-repo
patch -p1 blue/red/hi.test ~/patch_file
 类似资料:
  • 我想知道和创建的文件/补丁的格式有什么不同。 我知道在中有3个(“普通”、“紧凑”和“统一”)。 是否可以对同一文件使用和? 格式之间有什么不同? 如果不能交换命令(请参见1。)如何将文件转换为其他格式以便与其他命令一起使用? 如果可以交换命令(请参见1.):是否建议这样做? 这两个命令创建的文件是否有其他显著差异?

  • 我从事基于WordPress的项目,我想在WP的每个新版本中修补我的项目。为此,我想在两个提交或标记之间生成一个补丁。 例如,在我的repo中,我这样做:

  • 我在intellij中有一个Java/Maven项目,文件结构如下: 下面一行给我错误“包名'test.java.princ'不对应文件路径'princ'” 事实上,它对我项目中的每个文件都这样做。 我所尝试的: 使用maven重建 使用intellij或mvn命令,构建工作正常。

  • 补丁是一个文本文件,其内容类似于,但与代码一样,它也有关于提交的元数据; 例如提交ID,日期,提交消息等。我们可以从提交创建一个补丁,而其他人可以将它们应用到他们的存储库。 假设我们在项目实现了一个函数。并将编写的代码的路径并发送给其他开发人员。 然后,其他开发人员可以将接收的补丁应用到自己的代码中。 我们使用命令创建最新提交的修补程序。 如果要为特定提交创建修补程序,请在命令后面指定 。 上述命

  • 本文向大家介绍svn 创建和应用补丁,包括了svn 创建和应用补丁的使用技巧和注意事项,需要的朋友参考一下 示例 补丁程序是一个文件,它显示两个修订版本之间或本地存储库与您的存储库指向的最新修订之间的差异。 要共享或保存您的本地未提交更改的补丁以供同行评审或以后应用,请执行以下操作: 要从两个修订版之间的差异中获取补丁,请执行以下操作: 要应用补丁,请运行: 为了成功应用补丁程序,必须从创建补丁程

  • 我有一个包含一些图像实体,我想使用HttpPatch方法更新它。 要创建新样式,我使用以下方法: 现在我正在尝试创建一个方法来使用HttpPatch方法更新这个样式。我试过了,但是没有选择在Swagger上上传文件: 这是StyleFiles类: 我正在考虑制作两个单独的endpoint,一个用于更新文件,另一个用于更新实体本身。但我不想那样做。