gpt4 book ai didi

git-apply 神秘地失败了,我该如何排除故障/修复?

转载 作者:IT王子 更新时间:2023-10-29 01:00:04 25 4
gpt4 key购买 nike

我目前正在尝试对 (github) 存储库的 PR 进行代码样式检查,我想向提交者提供补丁,以便他们可以轻松修复代码样式。为此,我正在 pull 下他们的 PR,在其上运行我们的 uncrustify 脚本以修复任何样式错误,并希望创建一个他们可以轻松应用的 .patch 文件。但是,它总是会在某些文件上中断。

我这样做(git 版本 1.7.10.4,带有 core.autocrlf=inputcore.filemode=false):

$ git checkout pr-branch
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean)
$ <run the code styler script, which modifies some files>
$ git diff > ../style.patch (so the patch file lands outside the repo)
$ git reset --hard HEAD (to simulate the situation at the submitter's end)
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean, so we are where we started)
$ git apply ../style.patch
error: patch failed: somefile.cpp:195
error: somefile.cpp: patch does not apply (same output using the --check option)

这仅适用于部分文件,并非全部。我不知道如何解决这个问题,即如何让 git 准确地告诉我哪里出了问题——它只在我挖掘时告诉我一个 hunk#,但这仍然相当大。

到目前为止我尝试过的(没有成功):

  1. 应用 --reverse应用 --whitespace=nowarn
  2. diff HEAD 而不是单独的 diff
  3. 进行虚拟提交(提交工作没有问题!),使用 format-patch,删除虚拟提交,使用 git-am 应用补丁,有或没有 -3,或者用git-apply
  4. 申请
  5. 将补丁文件放在本地目录中,而不是放在本地目录中(捕获吸管,在这里)
  6. 检查 git-diff、-apply、-format-patch、-am 的手册页以找到任何有用的信息
  7. 使用 linux patch 命令打补丁
  8. ....

我不知道 diff 有什么问题。空白的东西应该只是警告,对吧?无论如何,我不想忽略它们,因为它是一种明显涉及空白的样式修复。

我该如何解决/诊断这个问题,甚至找出它究竟在哪里?如果我发布其中一个罪魁祸首文件的差异会有帮助吗?令我感到困惑的是提交没有问题,但是从提交创建的补丁却没有??

在与此搏斗了几个小时之后,我的知识已经走到尽头了......

最佳答案

更新:

您可以使用 git apply -v 来查看有关正在发生的事情的更多详细信息,git apply --check 来验证操作,或者 git应用 --index 重建本地索引文件。

根据您的评论,您的本地索引似乎已损坏,因此 index 解决了它。

我将保留我最初的答案和评论,主要是为了让人们了解正在发生的事情,因为我怀疑其他人会根据问题描述得出与我相同的初步结论。

------

差异很可能没有问题。而是查看目标 git 存储库。当您执行 git reset --hard HEAD 时,没有任何东西可以保证您在其他存储库上的 HEAD 与您的 HEAD 相同.

在目标仓库上执行 git log 并查看顶部的提交。它与您产生差异的那个相同吗?很可能不是。查看历史记录并检查是否存在您需要的提交。如果是,那么目标存储库在你之前,你必须返回,执行 git pull(或 git rebase)并生成一个新的 diff。如果不是,则目标存储库落后于您的存储库,您需要对目标存储库执行 git pull(或 git rebase)以加快速度.

请记住,如果您有其他人提交您的“主”存储库(您的机器人和目标存储库从中 pull 的存储库),您可能必须 git pull 两个存储库,让他们进行合理的近期共同提交。

关于git-apply 神秘地失败了,我该如何排除故障/修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com