在另一个文件之上重放一个文件的 git 提交(一种 git 复制文件提交)



我已经分叉了项目,我重写了90%的巨大Makefile。在审查了我的拉取请求后,上游维护者建议我将所有更改放在原始文件旁边的新 makefile 中,以便有一个过渡期。

由于我在主Makefile它现在有数十个提交,现在我应该跳到一个分支点,将原始文件的副本作为Makefile.new,并以某种方式将我的所有提交应用于这个新文件之上以保留我的更改历史记录。然后,我应该从原始Makefile还原所有更改以保留其自己的历史记录。

这不是变基的情况,所以我不确定如何在不手工挑选我所有的提交的情况下实现它。

为什么不保持分支历史记录不变,然后添加两个新提交:

mv Makefile MAkefile.new
git add .
git commit
git checkout master -- Makefile
git commit

这将保留您的历史记录,将 Makefile 恢复到其原始状态,并将您更改的版本放在新名称下。

在 2 次提交中执行此操作的原因是,重命名检测可以"跟踪"发生的事情,从而更容易查看 MAkefile.new 的历史记录。 如果这不是一个问题 - 如果您的团队通常会查看完整的补丁以了解历史记录 - 那么您也可以在一次提交中完成。

最新更新