gpt4 book ai didi

git - 我怎样才能让 git am/git apply 像补丁命令一样工作 "fuzzy"

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

我一直在使用 git-format-patch 和 git-am 将更改从一个存储库应用到另一个存储库。文件结构是相同的,但我所应用的存储库中有一些变化导致大多数补丁都失败了。但是大多数补丁大佬都在行号中有一点模糊。

据我所知,git-am apply 是一个非常严格的解释,因此完全拒绝了所有这些补丁。

所以我的工作流程变成了

$ git am ../the-patch.patch
# Fails because the patch doesn't apply cleanly
$ patch -p1 < ../the-patch.patch
# Applies most of the hunks, leaves .rej files for the ones that conflict
# Fix the conflicting hunks manually
$ git am --continue

如果我不必运行命令行补丁并且可以将其作为 am 命令的一部分发生,那就太好了。

如果有任何冲突,使用 --reject 标志运行似乎会创建一个 .rej 文件,其中包含文件中的所有 hunk,这不是我想要的。

使用 --3way 标志运行失败并显示

fatal: sha1 information is lacking or useless (the-file.java).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.

我认为这是因为它所基于的更改集不在我要 merge 到的存储库中。

有什么方法可以像原始补丁命令一样使 git-am 应用 具有模糊匹配的补丁,并且只创建包含失败的 hunks 的 .rej 文件?

最佳答案

您可以执行以下操作:

git am /path/to/some.patch
patch -p1 < /path/to/some.patch
git add .
git am --continue

这将应用补丁并保留提交消息等。

关于git - 我怎样才能让 git am/git apply 像补丁命令一样工作 "fuzzy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336440/

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