如何使用“git apply”使补丁忽略文件索引。

7
我正在尝试将一个.patch文件应用到我的源代码上,但是失败了,因为我的文件索引(10655)比补丁索引(10755)旧。
现在我知道我可以修改补丁的文件索引,但我想知道是否有办法使用git来忽略文件索引的差异?
2个回答

5
你可能会发现patch应用程序对其应用的内容要求不那么严格。例如,只需运行“patch -p0 < file”,它就可以应用该文件,然后你可以提交它。
缺点是你将失去作者信息等其他信息,因此你可能需要在提交时使用--author选项。

0
我也需要同样的东西,但出于不同的原因:我需要修补存储在Git LFS中的文件,这会导致git apply出现问题,因为git apply使用文件的索引状态(即LFS哈希)而不是工作区状态(即文件系统上的状态)。
我也不能使用patch,因为我还需要该方法支持git二进制差异,而patch会显示"不支持git二进制差异"。所以对我来说,其他解决方案不起作用。
我希望git apply有一个选项,可以轻松地忽略git仓库,但在我的git版本(2.30.2)中没有找到这个选项。

第一个解决方案(hackish)

禁用git的想法是暂时性的。
mv .git .git-hidden-to-git-apply
git apply stuff.patch
mv .git-hidden-to-git-apply .git

第二个解决方案(也是一种巧妙的方法)

这个想法是从git仓库外部运行git apply命令。

cd ..
git apply stuff.patch --directory=my_git_repo --unsafe-paths
cd my_git_repo

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