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

时间:2016-11-29 10:59:45

标签: git git-patch

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

后来我发现了一些转换问题,并从SVN获得了第二个git repo,其中包含一些修复和历史记录重写。

现在我有SVN repo的第二个git副本(我很满意),我想用我在第一个git存储库中的团队所做的更改来修补它。

为此目的,我尝试使用git补丁:

  • git-format-patch --zero-commit --stdout > master.patch来创建 已经对第一个git的master进行了更改的单个文件 回购
  • git-am*.patch上的master文件中提交提交 第二个存储库

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

问题在于,当我尝试使用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”。

即使我在这个补丁中只有一个提交,我想在同一个repo上应用它来获得相同的提交,但是在另一个分支上。

1 个答案:

答案 0 :(得分:0)

--ignore-whitespace添加到git am似乎解决了主要问题,但我仍然有类似的警告:

  

.git / rebase-apply / patch:56:尾随

     

警告:压制9个空格

     

错误警告:14行添加空格错误。