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

时间:2019-02-12 14:00:25

标签: git

我分叉了一个项目,其中我重写了90%的巨大Makefile。在审查了我的请求请求之后,上游维护者建议我将所有更改都放在原始文件之外的新makefile中,以进行过渡。

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

这不是重新定级的情况,因此,我不确定如果不亲自挑选所有提交就可以实现。

1 个答案:

答案 0 :(得分:1)

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

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

这将保留您的历史记录,将Makefile恢复为原始状态,并将更改后的版本重新命名为新名称。

在2次提交中执行此操作的原因是,重命名检测可以“跟踪”发生的情况,从而可以更轻松地查看MAkefile.new的历史记录。完整的补丁程序以了解历史-那么您也可以在一次提交中完成它。