是否可以用 "unified" 补丁替换 git 中不同提交的文件?

Is it possible to replace files from different commits in git with a "unified" patch?

我有一个 git 不同 tags/commits 的存储库,我想替换一个 Makefile(每个版本都不同)。

在所有这些版本中都有我自己的 Makefile。
是否可以只编写一个可以应用于所有这些 commits/tags 的补丁文件,它将 "delete" 个人 Makefile 和 "insert" 我的?

简单的答案不是。

为什么你不能?

如果您希望更新多个提交,由于 git 存储日期的方式(此处太长无法解释),您必须分别更新它们

你能做什么?

你可以写一个脚本来做。

脚本应该类似于:

# loop on your commits and update the desired file
git filter-branch --index-filter 'mv "new-file" "old_file"' HEAD

注:

您可以将 --tree-filter--index-filtergit filter-branch 一起使用。
--index-filter 速度更快,会更新您的索引文件