如何在历史记录已更改的代码库上应用git补丁?

3

最近,我从SVN迁移到了git,我的团队已经开始在全新的git存储库中工作。

后来,我发现转换存在一些问题,并通过一些修复和历史重写创建了第二个git存储库,该存储库是从SVN复制而来的。

现在,我有了一个我很满意的第二个git版本的SVN存储库,并且我想用已经在第一个git存储库中由我的团队进行的更改来打补丁。

为了这样的目的,我尝试使用git patches:

  • git-format-patch --zero-commit --stdout > master.patch创建一个单独的文件,其中包含应用于第一个git存储库的master的更改
  • 使用git-am在第二个存储库的master上应用来自*.patch文件的提交

我指定了--zero-commit,因为补丁文件中的哈希值将是错误的,因为我实际上有两个不同的存储库。

问题是,当我尝试使用git am master.patch应用补丁时,我会收到以下错误:

应用:%commit_name% 错误:补丁失败: readme.md:5 错误:readme.md:补丁 无法应用。 补丁在0001 %commit_name% 失败。失败的补丁副本位于:.git/rebase-apply/patch。解决此问题后,请运行“git am --continue”。如果您想跳过此补丁,请改为运行“git am --skip”。要恢复原始分支并停止打补丁,请运行“git am --abort”。

即使我只有一个提交在此补丁中,并且我希望将其应用于同一存储库以获得相同的提交,但在另一个分支上仍然会出现此错误。

1个回答

0

看起来在git am命令中添加--ignore-whitespace解决了主要问题,但我仍然有警告信息,如下:

.git/rebase-apply/patch:56: trailing

warning: squelched 9 whitespace

errors warning: 14 lines add whitespace errors.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接