首页 > 解决方案 > 是否可以用“统一”补丁替换来自 git 中不同提交的文件?

问题描述

我有一个带有不同标签/提交的 git 存储库,我想替换一个 Makefile(每个版本都不同)。

在所有这些版本中都有我自己的 Makefile。
是否可以只编写一个可应用于所有这些提交/标签的补丁文件,这些提交/标签将“删除”单个 Makefile 并“插入”我的?

标签: gitmakefilegit-patch

解决方案


简单的答案不是。

为什么你不能?

如果您希望更新多个提交,则必须分别更新它们,因为 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


推荐阅读