使用git am的git补丁错误



当我尝试使用:

执行补丁时
git am 0001-someFile.patch

但是我得到这个错误:

error: patch failed: src/***/file.c:459
error: src/***/file.c: patch does not apply
Patch failed at 0001 someFile.patch
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".

我正在尝试手动合并冲突,使用:

git mergetool --tool=meld

但是我得到了:

No files need merging

我该如何解决这个问题?我正在获取包含错误的文件的名称,但不知道行(这是一个大文件)

也许有更好的方法来执行这样的补丁?

我负责处理我工作中的所有补丁。这种情况我已经发生过很多次了。补丁不支持合并。发生这种情况的原因是因为主分支有补丁没有考虑到的更改,这阻止了它正确地打补丁。根据我的经验,这可能是由以下几个原因引起的:

  • 制作补丁的人未能将master分支拉到他们的开发分支并将master重新base到他们的开发分支上。
  • 由于冲突太多,在人员拔出补丁和应用补丁之间,对主分支进行了足够的更改,以阻止补丁应用。
  • 此人打错了补丁。

这是我最成功的流程。(这是假设这个人正在开发一个分支而不是master)

    确保你已经添加了所有的文件并提交了所有的更改。git checkout master
  1. git拉
  2. git checkout{开发分支}
  3. git rebase master(这将使开发分支跟上master的速度)
  4. git checkout -b{提交分支}master
  5. git merge—squash—no-commit{开发分支}
  6. git commit -am " commit Comment Here"(注意:这个commit Comment将是补丁的名称)

确保您的补丁与原始主分支保持最新。发送那个补丁,希望这个补丁在主服务器上做了太多的更改之前被应用。

你需要做一个3-way合并:

  git am -3 0001-someFile.patch
  git mergetool -t meld

最新更新